Flashback Transactionを使用したトランザクションの取り消し
このチュートリアルでは、Flashback Transactionを使用して、データベースのトランザクションを取り消す方法について説明します。
約20分
このチュートリアルでは、以下のトピックについて説明します。
このアイコンの上にカーソルを置くと、すべてのスクリーンショットがロードし、表示されます。 (警告:すべてのスクリーンショットが同時にロードされるため、ご使用のインターネット接続によってはレスポンス・タイムが遅くなる場合があります。)
注:各手順に関連したスクリーンショットのみを表示する場合は、それぞれの手順にあるアイコンの上にカーソルを置いてください。 スクリーンショットをクリックすると、非表示になります。
Flashback Transaction Back-Outについて
Flashback Transaction Back-Outは、データベースがオンラインの状態でターゲット・トランザクションとその従属トランザクションをロールバックする論理的なリカバリ・オプションです。 従属トランザクションは、トランザクションでターゲット・トランザクションによって変更されたデータを変更するWAW(Write After Write)関係、またはトランザクションでターゲット・トランザクションによって削除された主キー値を再挿入する主キーの制約関係と関連します。 Flashback Transactionは、UNDOおよびUNDOブロック用に生成されたREDOを利用して、影響を受けたデータを元の状態に戻す補完トランザクションを作成および実行します。
トピック・リストに戻る
このチュートリアルを始める前に、次の手順を完了してください。
トピック・リストに戻る
テスト環境の設定とこのOracle by Example(OBE)のトランザクションの作成には、以下の手順を実行します。
| 1. |
作業ディレクトリへ移動し、SYSユーザーとしてflatxn_archivelog.shスクリプトを実行します。
./flatxn_archivelog.sh
このスクリプトは、HRユーザーのロックを解除し、ARCHIVELOGモードを有効にします。

|
| 2. |
SQL*Plusで、SYSユーザーとしてデータベースに接続し、flatxn_setup1.sqlスクリプトを実行します。
sqlplus / as sysdba
@flatxn_setup1.sql
このセットアップ・スクリプトは、フラッシュバックしてトランザクションを取り消すため、データベースおよびHRユーザーを設定します。 ALTER DATABASEおよびGRANTコマンドに注意してください。

[Enter]を押して、スクリプトの次の手順へ進みます。
|
| 3. |
スクリプトがHRユーザーとしてデータベースに接続されます。また、5つの行を挿入する最初のテスト・トランザクションが作成されます。

[Enter]を押して、スクリプトの次の手順へ進みます。
|
| 4. |
スクリプトは、挿入された2つの行を更新する2つ目のテスト・トランザクションを作成します。 これによって、Write After Write(WAW)依存性が作成されます。 トランザクションが従属トランザクションによって挿入または更新される行を更新または削除する場合、WAW依存性が存在します。

[Enter]を押して、スクリプトの次の手順へ進みます。
|
| 5. |
スクリプトは、3つの行(そのなかの1行は前のトランザクションで更新された行)を更新する3つ目のトランザクションを作成します。 このアクションによって、別のWAW依存性が作成されます。

[Enter]を押して、スクリプトの次の手順へ進みます。
|
| 5. |
スクリプトは、トランザクション1で挿入された行を更新する4つ目のトランザクションを作成します。このアクションによって、別のWAW依存性が作成されます。

[Enter]を押して、スクリプトの次の手順へ進みます。
|
| 6. |
最後に、スクリプトがSYSユーザーとしてデータベースに接続され、アーカイブ・ログが切り替えられます。 Flashback Transactionには、REDO分析の開始に少なくとも1つのアーカイブ・ログが必要です。

[Enter]を押して、スクリプトを終了します。
|
トピック・リストに戻る
トランザクションは、WAW依存性を持つことができます。つまり、前のトランザクションで挿入または更新された行データがトランザクションで更新または削除されます。 ここでは、不正な変更を発生させるWAW依存と不適切なトランザクションを取り消します。 以下の手順を実行します。
| 1. |
以下のURLを入力して、Oracle Enterprise Manager Database Controlにログインします(<hostname>をlocalhostまたは特定のホスト名に変更します)。
https://<hostname>:1158/em
|
| 2. |
Oracle Enterprise Managerにログインするには、以下の詳細を入力し、「Login」をクリックします。
ユーザー名: SYS
パスワード: oracle
接続ユーザー: SYSDBA
|
| 3. |
HR.REGIONS表に不適切なトランザクションの変更が含まれると仮定し、完全な表データを参照します。 「Schema」タブ・ページをクリックします。

次に、「Tables」をクリックします。

|
| 4. |
HRスキーマ・ユーザーに属するすべての表を参照するには、SchemaフィールドにHRと入力し、「Go」ボタンをクリックします。

|
| 5. |
HR表が表示されます。 最初にHR.REGIONS表を選択し、Actionsドロップダウン・リストから「View Data」を選択します。 Actionsドロップダウンの横の「Go」ボタンをクリックして、HR.REGIONS表のデータを参照します。

|
| 6. |
表の内容を参照すると、赤いボックスに行が含まれていないことがわかります。 「OK」をクリックします。

|
| 7. |
表のリストに戻ります。 HR.REGIONS表を選択し、Actionsドロップダウン・リストから「Flashback Transaction」を選択します。次に、Actionsの横の「Go」ボタンをクリックします。

|
| 8. |
問合せ条件を確認します。 誤った変更が行われたと思われる期間を指定できます。 この例では、デフォルトの期間をそのまま使用します。 「Next」をクリックします。

指定期間のREDOログが処理され、Processing: Mining Transactionsウィンドウが表示されます。

|
| 9. |
Flashback Transaction: Select Transactionページで、2つの地域を更新するトランザクションのTransaction IDのリンクを選択します。

|
| 10. |
Select Transaction: Show Detailsページで、不正なUPDATEコマンドを確認し、「OK」をクリックします。

|
| 11. |
「Next」をクリックして、従属トランザクションの識別および必要なすべての変更の取消しを行います。

Processing: Flashback Transactionウィンドウが表示されます。

|
| 12. |
Flashback Transaction: Show Dependenciesページで、最初のTransaction IDリンクをクリックします。

|
| 13. |
Show Dependencies: Detailsページで、補完トランザクションを確認します。 補完トランザクションは実行されていません。 REGION10の更新が"[exec=no]"になっています。これは、従属トランザクションが存在するので実行されないことを意味します。すべての従属トランザクションを実行しない要求を行って、次の手順でこれを修正します。 「OK」をクリックします。

|
| 14. |
Flashback Transaction: Show Dependenciesページで、「Change Recovery Option」をクリックします。

|
| 15. |
Show Dependencies: Change Recovery Optionページで、不正な従属トランザクションの変更も取り消す「Cascade」を選択し、「OK」をクリックします。

Processing: Flashback Transactionウィンドウが表示されます。

|
| 16. |
Flashback Transaction: Show Dependenciesウィンドウで、「Next」をクリックします。

|
| 17. |
情報を確認し、「Finish」をクリックします。

|
| 18. |
Flashback Transactionが正常に実行されました。 「OK」をクリックします。

|
| 19. |
HR.REGIONS表に含まれる内容を参照できます。 HR.REGIONS表を選択し、Actionsドロップダウン・リストから「View Data」を選択します。次に、「Go」をクリックします。

|
| 20. |
トランザクション2とトランザクション4のWAW依存性がないため、トランザクション2と3が取り消され、トランザクション4(REGION_NAMEがまだ"Still called Venus"に設定されています)が残ります。

|
トピック・リストに戻る
以下の手順を実行して、環境をクリーンアップできます。
トピック・リストに戻る
このチュートリアルでは、WAW依存性を持つトランザクションを取り消す方法について学習しました。
トピック・リストに戻る
このアイコンの上にカーソルを置くと、すべてのスクリーンショットが非表示になります。
|