GAGA LIFE.

インフラエンジニアブログ

スポンサーリンク

PDBレベルでのフラッシュバックデータベースを実行

概要

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権限

使用コマンド

  1. 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

スポンサーリンク