概要
12.2から導入されたPDB レベルでフラッシュバックを実行する方法について説明します。
前提
・本手順はローカルUNDOであることを前提にしています。 ローカル/共有の確認および有効化は下記で可能です。
UNDOモードの確認(TRUE:ローカルUNDO FALSE:共有UNDO)
SQL> SELECT PROPERTY_VALUE FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME='LOCAL_UNDO_ENABLED'; PROPERTY_VALUE -------------------- TRUE SQL> select flashback_on from v$database; FLASHBACK_ON ------------------ RESTORE POINT ONLY
フラッシュバックON
SQL> alter database flashback on; Database altered. SQL> select flashback_on from v$database; FLASHBACK_ON ------------------ YES
・フラッシュバック・データベース実行に必要な権限は以下のいずれかです。
- SYSDBA権限
- SYSBACKUP権限
使用コマンド
- PDB レベルでのリストアポイント作成
--PDBから
特定の PDB に接続し、CREATE RESTORE POINT コマンドを実行:
SQL> alter session set container=PDB1; SQL> create restore point TEST1; SQL> create restore point TEST2 guarantee flashback database;
--CDBから
CDB に接続し、CREATE RESTORE POINT コマンドの FOR PLUGGABLE DATABASE 句を使用:
SQL> alter session set container=CDB$ROOT; SQL> create restore point TEST1 for pluggable database PDB1; SQL> create restore point TEST2 for pluggable database PDB1 guarantee flashback database;
※本手順ではCDBから実行する手順となります。
--リストアポイントへのフラッシュバック手順(※PDB がローカルUNDO を使用している場合)
SQL> alter pluggable database PDB1 close;
SQL> flashback pluggable database PDB1 to restore point TEST1;
SQL> alter pluggable database PDB1 open resetlogs;
実行例
--リストアポイントの作成
SQL> alter session set container=CDB$ROOT; Session altered. SQL> create restore point TEST1 for pluggable database PDB1; Restore point created. SQL> create restore point TEST2 for pluggable database PDB1 guarantee flashback database; Restore point created.
--リストアポイントの情報の表示(※SQL*Plus または RMAN を使用)
SQL> SELECT NAME,TIME,SCN,PDB_RESTORE_POINT,GUARANTEE_FLASHBACK_DATABASE FROM V$RESTORE_POINT; NAME TIME SCN PDB GUA -------------------- -------------------------------- ---------- --- --- TEST2 19-NOV-20 03.13.01.000000000 PM 9457194 YES YES TEST1 19-NOV-20 03.12.53.000000000 PM 9457178 YES NO RMAN> list restore point all; リカバリ・カタログのかわりにターゲット・データベース制御ファイルを使用している SCN RSP Time Type Time Name ---------------- -------- ---------- -------- ---- 9457178 20-11-19 TEST1 9457194 GUARANTEED 20-11-19 TEST2
--意図したリストアポイントに戻るか否かの確認
SQL> show user USER is "SCOTT" SQL> select * from tab; TNAME TABTYPE CLUSTERID -------------------- --------------------------------------- ---------- DEPT TABLE EMP TABLE BONUS TABLE SALGRADE TABLE DUMMY TABLE SQL> create table flbtbl(col1 number, col2 varchar(10)); Table created. SQL> insert into flbtbl values(10,'a'); 1 row created. SQL> insert into flbtbl values(10,'a'); insert into flbtbl values(20,'b'); SQL> insert into flbtbl values(30,'c'); 1 row created. SQL> insert into flbtbl values(30,'c'); 1 row created. SQL> insert into flbtbl values(40,'d'); 1 row created. SQL> commit; Commit complete. SQL> select * from flbtbl; COL1 COL2 ---------- ------------------------------ 10 a 10 a 30 c 30 c 40 d
--フラッシュバックを実行 a. PDB がローカルUNDO を使用している場合:
SQL> alter pluggable database PDB1 close;
SQL> flashback pluggable database PDB1 to restore point TEST1;
SQL> alter pluggable database PDB1 open resetlogs;
SQL> alter pluggable database PDB1 close; Pluggable database altered. SQL> flashback pluggable database PDB1 to restore point TEST1; flashback pluggable database PDB1 to restore point TEST1 * ERROR at line 1: ORA-65025: Pluggable database is not closed on all instances.
--Node2
SQL> alter pluggable database PDB1 close; Pluggable database altered. SQL> flashback pluggable database PDB1 to restore point TEST1; Flashback complete. SQL> alter pluggable database PDB1 open resetlogs; Pluggable database altered. SQL> conn scott/tiger@pdb1; Connected. SQL> select * from tab; TNAME TABTYPE CLUSTERID -------------------- --------------------------------------- ---------- DEPT TABLE EMP TABLE BONUS TABLE SALGRADE TABLE DUMMY TABLE