概要
表領域のフラッシュバックデータベースのONとOFFについて検証してみました
マニュアル
Oracle® Database バックアップおよびリカバリ・ユーザーズ・ガイド 19c 7.5.1 フラッシュバック・データベースの有効化
ALTER DATABASEコマンドを使用して、フラッシュバック・データベースを有効にします フラッシュバック・ロギングを有効にする手順 1.「高速リカバリ領域の有効化」に説明されているとおりに、リカバリ領域を構成します。 2. データベース・インスタンスがオープンまたはマウントされていることを確認します。 インスタンスがマウントされている場合、フィジカル・スタンバイ・データベースでないかぎり、データベースが正しく停止されている必要があります。 他のOracle Real Application Clusters (Oracle RAC)インスタンスはどのモードでもかまいません。 3. オプションで、DB_FLASHBACK_RETENTION_TARGETに、フラッシュバックの期間の長さを分単位で設定します。 ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=4320 SCOPE=BOTH; # 3 days デフォルトでは、DB_FLASHBACK_RETENTION_TARGETは1日(1440分)に設定されます。 注意: この設定は、データベースの起動および停止を通じて永続的にする必要があります。 4. データベース全体でフラッシュバック・データベース機能を有効にします。 ALTER DATABASE FLASHBACK ON; 5. 必要に応じて、特定の表領域のフラッシュバック・ロギングを無効にします。 デフォルトでは、すべての永続表領域に対してフラッシュバック・ログが生成されます。 特定の表領域のフラッシュバック・ロギングを無効にして、オーバーヘッドを軽減できます。次に例を示します。 ALTER TABLESPACE tbs_3 FLASHBACK OFF; 表領域のフラッシュバック・ロギングは、次のコマンドを使用して、後で再度有効にできます。 ALTER TABLESPACE tbs_3 FLASHBACK ON; 表領域に対してフラッシュバック・データベースを無効にする場合は、FLASHBACK DATABASEを実行する前に、データファイルをオフラインにする必要があります。
動作確認
CDB
SQL> select flashback_on from v$database; FLASHBACK_ON ------------------------------------------------------ YES SQL> ALTER TABLESPACE USERS FLASHBACK OFF; 表領域が変更されました。 SQL> select * from v$tablespace; TS# NAME INCLUDED_ BIGFILE FLASHBACK ENCRYPT_I CON_ID ---------- -------------------- --------- --------- --------- --------- ---------- 0 SYSTEM YES NO YES 1 0 SYSTEM YES NO YES 2 1 SYSAUX YES NO YES 1 1 SYSAUX YES NO YES 2 2 UNDOTBS1 YES NO YES 1 2 UNDOTBS1 YES NO YES 2 3 TEMP NO NO YES 1 3 TEMP NO NO YES 2 4 UNDOTBS2 YES NO YES 1 5 USERS YES NO NO 1 <---★ 0 SYSTEM YES NO YES 3 1 SYSAUX YES NO YES 3 2 UNDOTBS1 YES NO YES 3 3 TEMP NO NO YES 3 4 UNDO_2 YES NO YES 3 5 USERS YES NO YES 3 16行が選択されました。 SQL> select instance_name,status from v$instance; INSTANCE_NAME STATUS ------------------------------------------------ ------------------------------------ orcl1 OPEN SQL> ALTER TABLESPACE USERS FLASHBACK ON; ALTER TABLESPACE USERS FLASHBACK ON * 行1でエラーが発生しました。: ORA-01126: データベースはこのインスタンスでマウントし、どのインスタンスでもオープンしないでください [grid@rac1 ~]$ srvctl stop database -db orcl [grid@rac1 ~]$ srvctl start database -db orcl -o mount SQL> select instance_name,status from v$instance; INSTANCE_NAME STATUS ------------------------------------------------ ------------------------------------ orcl1 MOUNTED SQL> ALTER TABLESPACE USERS FLASHBACK ON; 表領域が変更されました。 TS# NAME INCLUDED_ BIGFILE FLASHBACK ENCRYPT_I CON_ID ---------- -------------------- --------- --------- --------- --------- ---------- 0 SYSTEM YES NO YES 1 0 SYSTEM YES NO YES 2 1 SYSAUX YES NO YES 1 1 SYSAUX YES NO YES 2 2 UNDOTBS1 YES NO YES 1 2 UNDOTBS1 YES NO YES 2 3 TEMP NO NO YES 1 3 TEMP NO NO YES 2 4 UNDOTBS2 YES NO YES 1 5 USERS YES NO YES 1 <---★ 0 SYSTEM YES NO YES 3 1 SYSAUX YES NO YES 3 2 UNDOTBS1 YES NO YES 3 3 TEMP NO NO YES 3 4 UNDO_2 YES NO YES 3 5 USERS YES NO YES 3
PDB
SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 3 PDB READ WRITE NO SQL> show con_name CON_NAME ------------------------------ PDB SQL> select * from v$tablespace; TS# NAME INCLUDED_ BIGFILE FLASHBACK ENCRYPT_I CON_ID ---------- -------------------- --------- --------- --------- --------- ---------- 0 SYSTEM YES NO YES 3 1 SYSAUX YES NO YES 3 2 UNDOTBS1 YES NO YES 3 3 TEMP NO NO YES 3 4 UNDO_2 YES NO YES 3 5 USERS YES NO YES 3 SQL> ALTER TABLESPACE USERS FLASHBACK OFF; 表領域が変更されました。 SQL> select * from v$tablespace; TS# NAME INCLUDED_ BIGFILE FLASHBACK ENCRYPT_I CON_ID ---------- -------------------- --------- --------- --------- --------- ---------- 0 SYSTEM YES NO YES 3 1 SYSAUX YES NO YES 3 2 UNDOTBS1 YES NO YES 3 3 TEMP NO NO YES 3 4 UNDO_2 YES NO YES 3 5 USERS YES NO NO 3 <---★ 6行が選択されました。 SQL> ALTER TABLESPACE USERS FLASHBACK ON; ALTER TABLESPACE USERS FLASHBACK ON * 行1でエラーが発生しました。: ORA-01126: データベースはこのインスタンスでマウントし、どのインスタンスでもオープンしないでください SQL> shu immediate プラガブル・データベースがクローズされました。 SQL> conn /as sysdba 接続されました。 SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 PDB MOUNTED SQL> alter session set container = pdb; セッションが変更されました。 SQL> ALTER TABLESPACE USERS FLASHBACK ON; ALTER TABLESPACE USERS FLASHBACK ON * 行1でエラーが発生しました。: ORA-01126: データベースはこのインスタンスでマウントし、どのインスタンスでもオープンしないでください [grid@rac1 ~]$ srvctl stop database -db orcl [grid@rac1 ~]$ srvctl start database -db orcl -o mount SQL> conn /as sysdba 接続されました。 SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED MOUNTED 3 PDB MOUNTED SQL> alter session set container = pdb; セッションが変更されました。 SQL> select * from v$tablespace; TS# NAME INCLUDED_ BIGFILE FLASHBACK ENCRYPT_I CON_ID ---------- -------------------- --------- --------- --------- --------- ---------- 0 SYSTEM YES NO YES 3 1 SYSAUX YES NO YES 3 2 UNDOTBS1 YES NO YES 3 3 TEMP NO NO YES 3 4 UNDO_2 YES NO YES 3 5 USERS YES NO YES 3 <---★
まとめ
▽表領域のflashback on/off実施の条件
フラッシュバックデータベースがONとなっている必要がある。
▽CDB/PDBの停止等が必要か
表領域のFLASHBACK ONはインスタンスレベルでMOUNT状態にする必要がある。
※OFFはOPEN状態で可