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

スポンサーサイトDBMS_FLASHBACKを使用して一時的に過去の時点に戻る


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

DBMS_FLASHBACKパッケージを使用すると、一時的に過去のある時点に戻ることができます。
本パッケージを使用した場合、フラッシュバック問い合わせなどのようにAS OF句等を使用する必要は無く、通常通り検索すると戻った時間のデータが検索されます。
ただし、問い合わせのみでDMLは実行してはいけません。
過去データの検索にはUNDOデータを使用します。

面白い機能ですね

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

【実施手順】
1.テストデータの作成
2.DBMS_FLASHBACKパッケージの使用

【詳細手順】

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

2.DBMS_FLASHBACKパッケージの使用

データ追加前のSCNを指定し、データ追加前の状態に戻ります。
SQL> EXEC DBMS_FLASHBACK.ENABLE_AT_SYSTEM_CHANGE_NUMBER(3031223);

PL/SQLプロシージャが正常に完了しました。

データを検索すると、データ追加前の状態になっていることが分かります。
SQL> select col1 from test1.test1;

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

DISABLEを実行し、元の時刻に戻ります。
SQL> EXEC DBMS_FLASHBACK.DISABLE;

PL/SQLプロシージャが正常に完了しました。

テストテーブルを検索すると、データ追加後に時間が戻ったことが分かります。
SQL> select col1 from test1.test1;

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

【関連リンク】
Oracle Database 11g R1のdbcaデフォルトキャラクタセットの設定



以上です。




トラックバックURL

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



前ページへ:フラッシュバック・トランザクション問い合わせを使用する
次ページへ:サーバOracle GUI画面をWindowsクライアント端末に表示する

ページのトップへ

必ずお読みください

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

広 告





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


ビジネスブログ100選

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




最新トラックバック


RSSリンクの表示

QRコード

QR

アクセスカウンター

ユニーク:
トータル:


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