◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
この記事は以下参考書(通称黒本)をもとに情報を肉付けして作成しています。
◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
Oracle 12c Silver (12c: Installation and Administration 1Z0-062)対策 としてフラッシュバックテクノロジについてまとめました。
1. フラッシュバック問合せ
・SELECT文でAS OF句を使用してある時点の指定テーブルを参照できる
・UNDOデータ使用
・SQL文
SELECT * FROM employees AS OF TIMESTAMP
TO_TIMESTAMP('2017-06-01 12:00:00', 'YYYY-MM-DD HH:MI:SS')
2. フラッシュバックバージョン問合せ
・ある時点からある時点までの変更された行の履歴を参照できる
・UNDOデータ使用
・SQL文
SELECT employee_id, versions_startscn, versions_operation FROM employees
VERSIONS BETWEEN scn MINVALUE AND MAXVALUE WHERE employee_id = 2
3. フラッシュバックトランザクション問合せ
・UNDOデータ使用
・SQL文
フラッシュバックバージョン問合せより該当SCNのXIDを求める
そのXIDを使用してフラッシュバックトランザクション問合せを行う
SELECT OPERATION, UNDO_SQL
FROM flashback_transaction_query
WHERE XID IN
(SELECT employee_id, versions_startscn, versions_operation FROM employees
VERSIONS BETWEEN scn MINVALUE AND MAXVALUE WHERE employee_id = 2)
AND OPERATION IN ('INSERT','UPDATE','DELETE')
1. フラッシュバックテーブル
・テーブルデータをある時点まで戻すことが可能
・UNDOデータ使用
・対象テーブルの行移動を有効にする必要がある
ALTER TABLE scott.emploees ENABLE ROW MOVEMENT
2. フラッシュバックトランザクションバックアウト
・特定トランザクションおよび依存トランザクションをロールバック
・REDOデータ使用
3. フラッシュバックドロップ
・ゴミ箱使用
・削除した表を元に戻す
'削除したテーブルのオブジェクト名を調べる
SELECT owner, object_name, ts_name, droptime FROM dba_recyclebin WHERE original_name = employees
'複数見つかった場合、オブジェクト名を指定して戻す
FLASHBACK TABLE scott."object_name" TO BEFORE DROP
4. フラッシュバックデータベース
・フラッシュバックログ(高速リカバリ領域に保存されている)を使用してデータベース全体を特定の時点を戻す
・アーカイブログモードにする必要がある(マウント状態で変更する)
'変更
ALTER DATABASE ARCHIVELOG
'確認
SELECT LOG_MODE FROM V$DATABASE
・フラッシュバックロギングをONにする
'変更
ALTER DATABASE FLASHBACK ON
'確認
SELECT FLASHBACK_ON FROM V$DATABASE
・フラッシュバックログ(高速リカバリ領域に保存されている)使用する
'確認
SELECT * FROM V$FLASHBACK_DATABASE_LOG
SELECT * FROM V$FLASHBACK_DATABASE_LOGFILE
・フラッシュバック実行(データベースをマウント状態にしてから行う)
'指定SCNまで戻す場合
FLASHBACK DATABASE TO SCN SCN番号
'30分前に戻す場合
FLASHBACK DATABASE TO TIMESTAMP(SYSDATE - 30/(24*60) )
'5時間前に戻す場合
FLASHBACK DATABASE TO TIMESTAMP(SYSDATE - 5/24 )
'1日戻す場合
FLASHBACK DATABASE TO TIMESTAMP SYSDATE-1
・フラッシュバック確定
ALTER DATABASE OPEN RESETLOGS
フラッシュバックテクノロジで使用されるSCNの確認方法をまとめてみた。
SCNはシステム変更番号と呼ばれる。
1. 現時点のSCNを求める
SELECT current_scn FROM V$DATABASE
2. 指定テーブルの最後に操作したSCNを表示する
SCN
SELECT ORA_ROWSCN FROM employees
WHERE employee_id = 1001
上記SCNからタイムスタンプ取得
SELECT SCN_TO_TIMESTAMP(ORA_ROWSCN) FROM employees
WHERE employee_id = 1001
以上、フラッシュバックテクノロジ回りの技術をピックアップしてみました。
【もしOracle 12c Silver (12c: Installation and Administration 1Z0-062)受検するならば】
公式から受検申し込みするより楽天で購入したほうが安くなりお得です!↓
【ピアソンVUE専用】Oracle会場試験用受験チケット(電子チケット)【RCP】
|