[Oracle Database] フラッシュバック・データベースで戻せるポイント(SCN)を確認する方法

本記事の目的

Oracle Database のフラッシュバック・データベースを利用して戻せるポイント(SCN)を確認する方法のメモ。

 

 

確認方法

V$FLASHBACK_DATABASE_LOGのOLDEST_FLASHBACK_SCN

すべてのインカネーションのフラッシュバック・データ内の最小システム変更番号(SCN)

 

 

簡易検証

環境:DBCS(VM) 19c Single環境で確認

事前準備:

0) FRAの確保
1) フラッシュバックログの有効化
2) DB_FLASHBACK_RETENTION_TARGETの設定調整
3) 保証付きリストアポイントの付与(オプション)

 

検証結果:

・SCNの確認
SQL> select * from V$FLASHBACK_DATABASE_LOG;

OLDEST_FLASHBACK_SCN OLDEST_FL RETENTION_TARGET FLASHBACK_SIZE ESTIMATED_FLASHBACK_SIZE     CON_ID
-------------------- --------- ---------------- -------------- ------------------------ ----------
             5601651 11-JUN-20             1440     3221225472                 22437888          0

⇒SCN=5601651以降ならフラッシュバックで戻せるはず。


・OLDEST_FLASHBACK_SCN -1 の値を指定
SQL> flashback database to scn 5601650;
flashback database to scn 5601650
*
ERROR at line 1:
ORA-38729: Not enough flashback database log data to do FLASHBACK.

⇒予想通りエラーとなる。

・OLDEST_FLASHBACK_SCNを指定
SQL> flashback database to scn 5601651;

Flashback complete.

⇒フラッシュバック成功

 

ちなみに、RMANから実行した場合のフラッシュバックログ不足は以下のエラー番号となる模様

RMAN-06796 Not enough flashback database log data to do FLASHBACK.

 

 

リストアポイントの確認方法

リストアポイントおよび保証付きリストアポイントの場合は、V$RESTORE_POINTにて確認可能。

実行例(マニュアルより抜粋)

SELECT NAME, SCN, TIME, DATABASE_INCARNATION#,
       GUARANTEE_FLASHBACK_DATABASE
FROM   V$RESTORE_POINT
WHERE  GUARANTEE_FLASHBACK_DATABASE='YES';
 
NAME                   SCN TIME                  DATABASE_INCARNATION# GUA
--------------- ---------- --------------------- --------------------- ---
BEFORE_CHANGES     5753126 04-MAR-12 12.39.45 AM                     2 YES

 

 

参考情報

・マニュアル「フラッシュバックおよびデータベースのPoint-in-Timeリカバリの実行

しばちょう先生の試して納得!DBAへの道 第19回 フラッシュバック・データベースによる論理障害からの復旧

スポンサードリンク

Be the first to comment

Leave a Reply

Your email address will not be published.


*