Oracle中心にIT全般の技術情報を気が向くままに書いています。他にLinux、仮想化技術(VMWare)やトラブルに役立つ情報などがあります。

スポンサーサイトフラッシュバック・トランザクション問い合わせを使用する


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

フラッシュバック・トランザクション問い合わせでは、FLASHBACK_TRANSACTION_QUERYビューに対して検索を行い、指定したトランザクションの変更内容を元に戻すためのSQLを問い合わせることができます。
過去データの検索にはUNDOデータを使用します。
本機能を使用するためには、FLASHBACK ANY TABLE権限が必要となります。

【実行した環境】
DB: Oracle 11.1.0.6.0
OS: Oracle Enterprise Linux V5

【実施手順】
1.テストデータの作成
2.フラッシュバック問い合わせの実行

【詳細手順】

1.テストデータの作成
テストデータの作成を行います。また、フラッシュバック問い合わせで使用するSCN番号を取得します。

テストテーブルの初期状態を検索します。合わせて、この際のSCN番号を取得します。
SQL> select col1 from test1.test1;

      COL1
---------- 
         1

SQL> select current_scn from v$database;

CURRENT_SCN
----------- 
    3031223

テストテーブルへCOL1=2のデータを追加します。合わせて、この際のSCN番号を取得します。
SQL> insert into test1.test1(col1) values(2);

1行が作成されました。

SQL> commit;

コミットが完了しました。

SQL> select col1 from test1.test1;

      COL1
---------- 
         1
         2

SQL> select current_scn from v$database;

CURRENT_SCN
----------- 
    3031330

テストテーブルへCOL1=3のデータを追加し、COL1=2のデータを削除します。合わせて、この際のSCN番号を取得します。
SQL> insert into test1.test1(col1) values(3);

1行が作成されました。

SQL> delete from test1.test1 where col1=2;

1行が削除されました。

SQL> commit;

コミットが完了しました。

SQL> select col1 from test1.test1;

      COL1
---------- 
         1
         3

SQL> select current_scn from v$database;

CURRENT_SCN
----------- 
    3031729

2.フラッシュバック問い合わせの実行
ここでは、フラッシュバック・バージョン問い合わせと組み合わせて、一連のトランザクションを元に戻すためのSQLを検索します。

SQL> select OPERATION,UNDO_SQL
  2  from flashback_transaction_query
  3  where XID in (select VERSIONS_XID from test1.test1 versions between scn 3031223 and 3031729)
  4  AND OPERATION IN ('INSERT','UPDATE','DELETE')
  5  order by START_SCN desc;

OPERATION UNDO_SQL
--------- ------------------------------------------------------------------ 
DELETE    insert into "TEST1"."TEST1"("COL1","COL2") values ('2',NULL);
INSERT    delete from "TEST1"."TEST1" where ROWID = 'AAAEMBAAEAAAABaAAC';
INSERT    delete from "TEST1"."TEST1" where ROWID = 'AAAEMBAAEAAAABaAAB';




以上です。




トラックバックURL

この記事にトラックバックする(FC2ブログユーザー)



前ページへ:フラッシュバック・バージョン問い合わせを使用する
次ページへ:DBMS_FLASHBACKを使用して一時的に過去の時点に戻る

ページのトップへ

必ずお読みください

本ブログ記事をご利用になって生じたいかなる損害についても当方は一切責任を負いません。
ご利用は自己責任でお願いします。(^―^)

広 告





ブログランキング/その他


ビジネスブログ100選

ブログランキング・にほんブログ村へ
blogramで人気ブログを分析




最新トラックバック


RSSリンクの表示

QRコード

QR

アクセスカウンター

ユニーク:
トータル:


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。