Oracle 12c 新特性之 PDB 級別閃回資料庫

張衝andy發表於2017-05-08
在Oracle Database 12.1中,閃回資料庫操作僅限於 CDB ,Oracle Database 12.2支援 CDB 與 PDB 資料庫的閃回。

PDB 的還原點種類:
1. normal restore point:          create restore point pdb1_point1;
2. guaranteed restore point:      create restore point pdb1_point1 guarantee flashback database;
-- 在需要設定乾淨還原點的 PDB 容器下 shutdown immediate , 然後在建立乾淨還原點。
3.1 clean normal restore point:    create clean restore point cdb1_before_changes;
3.2 clean guaranteed restore point:create clean restore point cdb1_before_changes guarantee flashback database;
補充:PDB 中執行,如果是 CDB 中執行的話,在對應程式碼後面多新增 for pluggable database pdb_name 指定PDB名稱

PDB 中支援的閃回資料庫方式:
1.還原點
2.scn
3.timestamp

演示操作:
1、首先,我們開啟資料庫閃回功能:
[oracle@12c01 ~]$ mkdir -p /home/oracle/fast_recovery_area
SQL>alter system set db_recovery_file_dest_size=10G;
SQL>alter system set db_recovery_file_dest='/home/oracle/fast_recovery_area' scope=both;
SQL>shutdown immediate;
SQL>startup mount;
SQL>alter database archivelog;
SQL>alter database flashback on;
SQL>alter database open;
SQL>select flashback_on from v$database;
FLASHBACK_ON
------------------
YES
閃回日誌保留的數量是受引數DB_FLASHBACK_RETENTION_TARGET控制的,該參數列示保留時間(分鐘),預設為1天。
-- 查詢閃回日誌保留天數,如果有必要,就修改保留時間。
SQL>show parameter db_flashback_retention_target
NAME     TYPE VALUE
------------------------------------ ----------- -------------------
db_flashback_retention_target     integer1440
檢視當前資料庫例項狀態:
show pdbs
    CON_ID CON_NAME  OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED  READ ONLY  NO
3 PDB01  READ WRITE NO
SQL>alter session set container=pdb01;
模擬業務
SQL> select current_scn from v$database;

CURRENT_SCN
-----------
    1628859
SQL> create table c##andy.pdbfla (id int);

Table created.

SQL> insert into c##andy.pdbfla values(1);

1 row created.

SQL> commit;

Commit complete.
SQL>alter session set container=cdb$root;
SQL>create table c##andy.cdbfla (id int);
SQL>insert into c##andy.cdbfla values(1);
SQL>commit;
下面是local undo模式下 PDB 閃回資料庫操作步驟:

SQL>alter pluggable database pdb01 close;

SQL> flashback pluggable database pdb01 to scn 1628859;
Flashback complete.
SQL>alter pluggable database pdb01 open resetlogs;
Pluggable database altered.
SQL> select * from c##andy.cdbfla;
ID
----------
1
SQL> alter session set container=pdb01;
SQL> select * from c##andy.pdbfla;
ORA-00942: table or view does not exist
說明:可以看不到 PDB 級別的資料庫閃回不影響 CDB 的記錄。
_______________________________________
補充:
如果使用的shared undo模式下 PDB 閃回資料庫,語法有點不同,就是你需要制定輔助例項的位置。
SQL>flashback pluggable database pdb_name to scn the_scn auxiliary destination '/XXX/auxiliary';
SQL>flashback pluggable database pdb_name to restore point restore_point auxiliary destination '/XXX/auxiliary';

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31383567/viewspace-2138687/,如需轉載,請註明出處,否則將追究法律責任。

相關文章