フラッシュバック機能は名前が似た機能が多いので自分で理解するためのまとめ。リカバリの機能はGold試験にも出るので詳しく。
間違ってたら指摘ください。
##機能一覧
カテゴリ | 英語名 | 日本語名称 | 機能概要 |
---|---|---|---|
リカバリ | Flashback Database | フラッシュバックデータベース | DB全体を過去の時点に戻す |
〃 | Flashback Table | フラッシュバックテーブル | 表のデータを過去の時点に戻す |
〃 | Flashback Drop | フラッシュバックドロップ | 削除した表を元に戻す |
開発機能 | Flashback Query | フラッシュバック問い合わせ | 指定時点のデータを表示(select ... as of [timestamp|scn]) |
〃 | Flashback Version Query | 行履歴フラッシュバック | 指定された2点間での全ての変更データを表示 |
〃 | Flashback Transaction Query | トランザクション履歴フラッシュバック | トランザクションの変更を戻すためのSQL文を表示 |
〃 | Flashback Transaction | フラッシュバックトランザクション | DBMS_FLASHBACK.TRANSACTION_BACKOUTプロシージャを使いトランザクションのロールバックを実行 |
〃 | Flashback Data Archive | フラッシュバックデータアーカイブ | 表に対するすべてのトランザクションによる変更を追跡および格納 |
##リカバリ(マニュアルでは「データベース管理機能」)
###フラッシュバックデータベース
- FRA領域にフラッシュバックログが作成される(更新量x時間に応じて空きが必要)
- 必要な設定
- FRA領域の構成(DB_RECOVERY_FILE_DEST、DB_RECOVERY_FILE_DEST_SIZEを指定)
- アーカイブログモード
- 巻き戻し可能時間の設定(ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=最大巻き戻し可能分);
- 機能有効化(ALTER DATABASE FLASHBACK ON;)
- 巻き戻しコマンド例
- FLASHBACK DATABASE TO 時間等;
###フラッシュバックテーブル
- UNDOを利用して巻き戻すため、保証時間を超えると巻き戻せない場合あり
- 表の構造を変更するDDL操作が行われた場合は、巻き戻せない
- TRUNCATE TABLEで削除された場合は巻き戻せない
- 必要な設定
- 戻せる表の行移動が有効(デフォルト無効。ALTER TABLE 表 ENABLE ROW MOVEMENT;)
- 注:行移動が有効な表はROWIDを処理に利用しないこと。
- 実行ユーザが表のOWNERかFLASHBACK ANY TABLE権限を持つ
- 戻せる表の行移動が有効(デフォルト無効。ALTER TABLE 表 ENABLE ROW MOVEMENT;)
- 推奨設定
- UNDO管理モードが自動(11g~デフォルト自動。ALTER SYSTEM SET UNDO_MANGEMENT=AUTO;)
- UNDO保証秒(=巻き戻し保証秒)を変更(デフォルト900秒。ALTER SYSTEM SET UNDO_RETENTION=保証秒;)
- 巻き戻しコマンド例
- FLASHBACK TABLE テーブル TO 時間等;
###フラッシュバックドロップ
- SYSTEM表領域内の表は対象外
- DROP TABLE 表 PURGE; とした場合はごみ箱に入らないため復元不可
- 必要な設定
- ごみ箱が有効(デフォルト有効。ALTER SESSION SET recyclebin = ON;DB再起動)
- PURGE RECYCLEBIN;でごみ箱が空になる
- ごみ箱の表示
- SELECT OBJECT_NAME,ORIGINAL_NAME,DROPTIME FROM USER_RECYCLEBIN ORDER BY DROPTIME DESC;
- ごみ箱から戻す例
- FLASHBACK TABLE ごみ箱内の名前 TO BEFOR DROP [RENAME TO 新表];
##開発機能(マニュアルでは「アプリケーション開発機能」)
テスト等で確認のために使うための機能。詳細は下記参照先
##参照
https://docs.oracle.com/cd/E49329_01/appdev.121/b71295/adfns_flashback.htm