マルチテナント環境のフラッシュバックデータベースはCDB単位で行ないます。
特定のPDBやルートコンテナのみを戻すことは出来ません。
[oracle@DB01 ~]$ sqlplus / as sysdba
SQL> ALTER DATABASE FLASHBACK ON;
データベースが変更されました。
フラッシュバックデータベースを行なうには、まずルートコンテナに接続しフラッシュバックを有効化します。
アーカイブログモードであることが前提条件です。
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
2276329
検証時に戻したい時点を確認するため、現時点のSCNを表示します。
SQL> alter session set container = PDB1;
セッションが変更されました。
SQL> show con_name;
CON_NAME
------------------------------
PDB1
PDBに接続します。
SQL> create table test_table (id number);
表が作成されました。
SQL> insert into test_table values (1);
1行が作成されました。
SQL> insert into test_table values (2);
1行が作成されました。
SQL> insert into test_table values (3);
1行が作成されました。
SQL> commit;
コミットが完了しました。
SQL> select * from test_table;
ID
----------
1
2
3
PDB内に表作成、データをインサートし、コミットします。
これでSCNが進みます。
SQL> alter session set container = cdb$root;
セッションが変更されました。
SQL> show con_name;
CON_NAME
------------------------------
CDB$ROOT
再度、ルートコンテナに接続します。
SQL> shutdown immediate;
データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。
SQL> startup mount;
ORACLEインスタンスが起動しました。
Total System Global Area 1.3522E+10 bytes
Fixed Size 2939704 bytes
Variable Size 6912214216 bytes
Database Buffers 6576668672 bytes
Redo Buffers 30613504 bytes
データベースがマウントされました。
CDB全体を停止し、マウント状態で起動します。
SQL> FLASHBACK DATABASE TO SCN 2276329;
フラッシュバックが完了しました。
最初で確認したSCNにフラッシュバックします。
これでSCN確認以降に作成した表は無くなるはずです。
SQL> ALTER DATABASE OPEN READ ONLY;
データベースが変更されました。
SQL> ALTER PLUGGABLE DATABASE ALL OPEN READ ONLY;
データベースが変更されました。
確認のため、cdb、pdbを読み取り専用でオープンします。
SQL> alter session set container = PDB1;
セッションが変更されました。
SQL> select * from test_table;
select * from test_table
*
行1でエラーが発生しました。:
ORA-00942: 表またはビューが存在しません。
PDBに接続し、作成した表がフラッシュバックにより無くなっていることを確認します。
SQL> shutdown immediate;
データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。
SQL> startup mount;
ORACLEインスタンスが起動しました。
Total System Global Area 1.3522E+10 bytes
Fixed Size 2939704 bytes
Variable Size 6912214216 bytes
Database Buffers 6576668672 bytes
Redo Buffers 30613504 bytes
データベースがマウントされました。
SQL> alter database open resetlogs;
データベースが変更されました。
確認後、再度、CDBを停止、マウント状態で起動し、resetlogsオプション付きでオープンします。
特定のPDBやルートコンテナのみを戻すことは出来ません。
[oracle@DB01 ~]$ sqlplus / as sysdba
SQL> ALTER DATABASE FLASHBACK ON;
データベースが変更されました。
フラッシュバックデータベースを行なうには、まずルートコンテナに接続しフラッシュバックを有効化します。
アーカイブログモードであることが前提条件です。
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
2276329
検証時に戻したい時点を確認するため、現時点のSCNを表示します。
SQL> alter session set container = PDB1;
セッションが変更されました。
SQL> show con_name;
CON_NAME
------------------------------
PDB1
PDBに接続します。
SQL> create table test_table (id number);
表が作成されました。
SQL> insert into test_table values (1);
1行が作成されました。
SQL> insert into test_table values (2);
1行が作成されました。
SQL> insert into test_table values (3);
1行が作成されました。
SQL> commit;
コミットが完了しました。
SQL> select * from test_table;
ID
----------
1
2
3
PDB内に表作成、データをインサートし、コミットします。
これでSCNが進みます。
SQL> alter session set container = cdb$root;
セッションが変更されました。
SQL> show con_name;
CON_NAME
------------------------------
CDB$ROOT
再度、ルートコンテナに接続します。
SQL> shutdown immediate;
データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。
SQL> startup mount;
ORACLEインスタンスが起動しました。
Total System Global Area 1.3522E+10 bytes
Fixed Size 2939704 bytes
Variable Size 6912214216 bytes
Database Buffers 6576668672 bytes
Redo Buffers 30613504 bytes
データベースがマウントされました。
CDB全体を停止し、マウント状態で起動します。
SQL> FLASHBACK DATABASE TO SCN 2276329;
フラッシュバックが完了しました。
最初で確認したSCNにフラッシュバックします。
これでSCN確認以降に作成した表は無くなるはずです。
SQL> ALTER DATABASE OPEN READ ONLY;
データベースが変更されました。
SQL> ALTER PLUGGABLE DATABASE ALL OPEN READ ONLY;
データベースが変更されました。
確認のため、cdb、pdbを読み取り専用でオープンします。
SQL> alter session set container = PDB1;
セッションが変更されました。
SQL> select * from test_table;
select * from test_table
*
行1でエラーが発生しました。:
ORA-00942: 表またはビューが存在しません。
PDBに接続し、作成した表がフラッシュバックにより無くなっていることを確認します。
SQL> shutdown immediate;
データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。
SQL> startup mount;
ORACLEインスタンスが起動しました。
Total System Global Area 1.3522E+10 bytes
Fixed Size 2939704 bytes
Variable Size 6912214216 bytes
Database Buffers 6576668672 bytes
Redo Buffers 30613504 bytes
データベースがマウントされました。
SQL> alter database open resetlogs;
データベースが変更されました。
確認後、再度、CDBを停止、マウント状態で起動し、resetlogsオプション付きでオープンします。
コメント