Oracle 12.2新特性: PDB級閃回資料庫(Flashback PDB)

lhrbest發表於2018-11-29


Oracle Database 12.1 中,閃回資料庫操作僅限於 CDB Oracle Database 12.2 開始 支援 CDB PDB 資料庫的閃回。在 12 . 2 版本新特性引入了 PDB 級別的 flashback ,更加快速方便,可以使用 RMAN SQL 兩種方式實現,且閃回後原 PDB 的備份仍然有效。

可以對多租戶資料庫中的單個 PDB 執行閃回操作。對特定的 PDB 執行閃回資料庫操作只會修改與這個 PDB 相關檔案中的資料。 CDB 中的其它 PDB 不受影響處於可讀寫狀態。如果使用還原點,在執行閃回資料庫操作時可以使用 CDB 還原點, PDB 還原點 PDB 乾淨 還原點或 PDB 受保證的還原點。

PDB 中支援的閃回資料庫方式:

1. 還原點

2.scn

3.timestamp

restore point就是使用者建立一個自定義名稱與scn相關的時間點,資訊儲存在control file中,目前分3種還原點:Normal Restore Point,Guaranteed Restore Point,Clean Restore Point。
Normal和Guaranteed的區別是:Guaranteed可以保證restore point後的閃回日誌不會被自動刪除除非手動明確刪除,而nomal可能會因為flashback retention時間而age out。
 
PDB的還原點種類:
1.Normal Restore Point:create restore point pdb1_point1;
2.Guaranteed Restore Point:create restore point pdb1_point1 guarantee flashback database;
3.Clean Restore Point:只用於使用shared undo模式時如12.1中沒有local undo
在需要設定乾淨還原點的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名稱
flashback backup在12.2中有rman和SQL兩種方式閃回,當使用shared undo裡需要使用rman,前提需要在pdb close immediate後建立clean resotre point,過程中會自動建立輔助例項CDB和PDB PITR;使用local undo時,就可以使用SQL命令更佳快速,而且只是pdb資料檔案原位置閃回,並應用undo,在做之前建立任意一種restore point都可以,也不需要輔助例項。
只能還原到還原點和open resetlogs之間的時間,也就是隻能向前還原。如果向後還原同樣會提示下面的錯誤:
ORA-39889: Specified System Change Number (SCN) or timestamp is in the middle of a previous PDB RESETLOGS operation.
 
 
 常用SQL
col name for a30
select SCN,to_char(time,'yyyy-mm-dd hh24:mi:ss') time,NAME,STORAGE_SIZE,RESTORE_POINT_TIME,GUARANTEE_FLASHBACK_DATABASE,PDB_RESTORE_POINT,CLEAN_PDB_RESTORE_POINT,CON_ID from v$restore_point;
 
alter pluggable database pdbanbob close;
FLASHBACK PLUGGABLE DATABASE pdbanbob TO TIMESTAMP to_timestamp('2017-03-21 16:13:01','yyyy-mm-dd hh24:mi:ss');
flashback pluggable database pdb01 to scn 1628859;
alter pluggable database pdbanbob open resetlogs;
如果使用的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';
PDB級別的閃回,並沒有改變整個資料庫的INCARNATION,從新增加的v$pdb_incarnation檢視可以確認。
select INCARNATION#,RESETLOGS_TIME from v$database_incarnation;
select DB_INCARNATION#,PDB_INCARNATION#,INCARNATION_TIME,con_id from v$pdb_incarnation order by 3;


閃回資料庫在10G版本時引入,當資料產生邏輯錯誤或升級失敗時,用於 閃回資料庫到指定時間點 ,在12C 多租戶結構中增加了PDB概念,在恢復時通常為了節約時間和一致性做最小粒度的恢復,在12.1版本如果對Flashback database需要建立輔助例項和CDB(只能是CDB級),有些像 表空間的基於時間點的恢復 ,在12C r2版本新特性引入了PDB級別的flashback,更加快速方便, 可以使用RMAN和SQL兩種方式實現, 且閃回後原PDB的備份仍然有效。

PDB閃回有幾個基本的前提條件:
1,enable local undo
2,enable archivelog mode
3,enable flashback database;

QL> startup upgrade
SQL> show parameter db_reco
PARAMETER_NAME                     TYPE        VALUE
---------------------------------- ----------- --------------
db_recovery_file_dest              string
db_recovery_file_dest_size         big integer 0
SQL> show parameter flashback
PARAMETER_NAME                     TYPE        VALUE
---------------------------------- ----------- --------------
db_flashback_retention_target      integer     1440
SQL> alter system set db_recovery_file_dest_size=1G;
System altered.
SQL> alter system set db_recovery_file_dest='/u01/arch_anbob';
System altered.
SQL> alter database flashback on;
Database altered.
SQL> alter database local undo on;
Database altered.
SQL> archive log list
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     15
Next log sequence to archive   17
Current log sequence           17
SQL> shutdown immediate;
SQL> startup

Note:
flashback database, local undo ,archivelog這些屬性都是CDB級別的, 所以不允許在部分PDB級修改。

Create (還原點)restore point

restore point就是使用者建立一個自定義名稱與scn相關的時間點,資訊儲存在control file中,目前分3種restore point: Normal Restore Point,Guaranteed Restore Point,Clean Restore Point.  其中Clean resotre point只用於使用shared undo模式時如12.1中沒有local undo;  而Normal 和Guaranteed 的區別是Guaranteed 可以保證restore point後的閃回日誌不會被自動刪除除非手動明確刪除,而nomal可能會因為flashback retention時間而age out.

 

SQL> show pdbs
    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDBANBOB                       MOUNTED
         5 PDBTEST2_PROXY                 MOUNTED
         6 PDBWEEJAR                      MOUNTED
		 
SQL> alter pluggable database pdbanbob open;
Pluggable database altered.
SQL> show pdbs
    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDBANBOB                       READ WRITE NO
         5 PDBTEST2_PROXY                 MOUNTED
         6 PDBWEEJAR                      MOUNTED
		 
SQL> alter session set container=pdbanbob;
Session altered.
SQL> select sysdate from dual;
SYSDATE
-------------------
2017-03-21 15:58:13
SQL> create restore point pdbanbob_201703211800;
Restore point created.

Note:
首先建立還原點,如果恢復到之前建立的還原點,前提是保證還原點之後的閃回日誌的完整性。還原點可以在CDB或PDB級建立只是PDB作用域不同, 以上是建立在PDB級。 還原點也可以建立為GUARANTEE,語法如下:

create restore point pdbanbob_201703211800 GUARANTEE FLASHBACK DATABASE;

建立測試資料

SQL> alter session set container=pdbanbob;
SQL> create table anbob.t16(id int, v date);
Table created.
SQL> insert into anbob.t16 values(1,sysdate);
1 row created.
SQL> commit;
Commit complete.
SQL> select * from anbob.t16;
        ID V
---------- -------------------
         1 2017-03-21 16:12:12
SQL> insert into anbob.t16 values(1,sysdate);
1 row created.
SQL> commit;
Commit complete.
SQL> select * from anbob.t16;
        ID V
---------- -------------------
         1 2017-03-21 16:12:12
         1 2017-03-21 16:13:37
SQL> col name for a30
SQL> select SCN,to_char(time,'mm-dd hh24:mi') time,NAME,CLEAN_PDB_RESTORE_POINT IS_CLEAN,CON_ID from v$restore_point;
       SCN TIME        NAME                           IS_     CON_ID
---------- ----------- ------------------------------ --- ----------
   3469597 03-21 15:59 PDBANBOB_201703211800          NO           3

還原到第一條記錄insert後的時間

flashback backup在12.2中有rman和SQL兩種方式閃回, 當使用shared undo裡需要使用rman,前提需要在pdb close immediate後建立clean resotre point, 過程中會自動建立輔助例項CDB和PDB PITR; 使用local undo時,就可以使用SQL命令更佳快速,而且只是pdb 資料檔案原位置閃回,並應用undo,在做之前建立任意一種restore point都可以,也不需要輔助例項。

SQL> alter pluggable database pdbanbob close;
Pluggable database altered.
SQL> FLASHBACK PLUGGABLE DATABASE pdbanbob TO TIMESTAMP to_timestamp('2017-03-21 16:13:01','yyyy-mm-dd hh24:mi:ss');
Flashback complete.
SQL> alter pluggable database pdbanbob open resetlogs;
Pluggable database altered.
SQL>  select * from anbob.t16;
        ID V
---------- -------------------
         1 2017-03-21 16:12:12

還原到還原點(restore point)

SQL> alter pluggable database pdbanbob close;
Pluggable database altered.
SQL> FLASHBACK PLUGGABLE DATABASE pdbanbob TO RESTORE POINT PDBANBOB_201703211800;
Flashback complete.
SQL> alter pluggable database pdbanbob open resetlogs;
Pluggable database altered.
SQL> select * from anbob.t16;
select * from anbob.t16
                    *
ERROR at line 1:
ORA-00942: table or view does not exist

NOTE:
只能還原到還原點和open resetlogs之間的時間,也就是隻能向前還原。如果向後還原同樣會提示下面的錯誤

SQL>  alter pluggable database pdbanbob close;
Pluggable database altered.
SQL> FLASHBACK PLUGGABLE DATABASE pdbanbob TO TIMESTAMP to_timestamp('2017-03-21 16:14:01','yyyy-mm-dd hh24:mi:ss');
FLASHBACK PLUGGABLE DATABASE pdbanbob TO TIMESTAMP to_timestamp('2017-03-21 16:14:01','yyyy-mm-dd hh24:mi:ss')
*
ERROR at line 1:
ORA-39889: Specified System Change Number (SCN) or timestamp is in the middle of a previous PDB RESETLOGS operation.

check db incarnation

SQL> select INCARNATION#,RESETLOGS_TIME from v$database_incarnation;
INCARNATION# RESETLOGS_TIME
------------ -------------------
           1 2016-12-09 20:42:51
           2 2017-01-18 21:27:59
SQL>  select DB_INCARNATION#,PDB_INCARNATION#,INCARNATION_TIME,con_id from v$pdb_incarnation order by 3;
DB_INCARNATION# PDB_INCARNATION# INCARNATION_TIME        CON_ID
--------------- ---------------- ------------------- ----------
              1                0 2016-12-09 20:42:51          1
              1                0 2016-12-09 20:42:51          5
              1                0 2016-12-09 20:42:51          6
              1                0 2016-12-09 20:42:51          2
              2                0 2017-01-18 21:27:59          5
              2                0 2017-01-18 21:27:59          2
              2                0 2017-01-18 21:27:59          1
              2                0 2017-01-18 21:27:59          3
              2                0 2017-01-18 21:27:59          6
              2                2 2017-03-21 15:59:13          3
              2                1 2017-03-21 16:13:06          3
11 rows selected.

Note:
PDB級別的閃回,並沒有改變整個資料庫的INCARNATION, 從新增加的v$pdb_incarnation檢視可以確認剛才的閃回操作只是在PDB(con_id is 3)增加了對應的2條記錄。



About Me

........................................................................................................................

● 本文作者:小麥苗,部分內容整理自網路,若有侵權請聯絡小麥苗刪除

● 本文在itpub( http://blog.itpub.net/26736162 )、部落格園( http://www.cnblogs.com/lhrbest )和個人weixin公眾號( xiaomaimiaolhr )上有同步更新

● 本文itpub地址: http://blog.itpub.net/26736162

● 本文部落格園地址: http://www.cnblogs.com/lhrbest

● 本文pdf版、個人簡介及小麥苗雲盤地址: http://blog.itpub.net/26736162/viewspace-1624453/

● 資料庫筆試面試題庫及解答: http://blog.itpub.net/26736162/viewspace-2134706/

● DBA寶典今日頭條號地址: http://www.toutiao.com/c/user/6401772890/#mid=1564638659405826

........................................................................................................................

● QQ群號: 230161599 (滿) 、618766405

● weixin群:可加我weixin,我拉大家進群,非誠勿擾

● 聯絡我請加QQ好友 646634621 ,註明新增緣由

● 於 2018-11-01 06:00 ~ 2018-11-31 24:00 在魔都完成

● 最新修改時間:2018-11-01 06:00 ~ 2018-11-31 24:00

● 文章內容來源於小麥苗的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解

● 版權所有,歡迎分享本文,轉載請保留出處

........................................................................................................................

小麥苗的微店 https://weidian.com/s/793741433?wfr=c&ifr=shopdetail

小麥苗出版的資料庫類叢書 http://blog.itpub.net/26736162/viewspace-2142121/

小麥苗OCP、OCM、高可用網路班 http://blog.itpub.net/26736162/viewspace-2148098/

小麥苗騰訊課堂主頁 https://lhr.ke.qq.com/

........................................................................................................................

使用 weixin客戶端 掃描下面的二維碼來關注小麥苗的weixin公眾號( xiaomaimiaolhr )及QQ群(DBA寶典)、新增小麥苗weixin, 學習最實用的資料庫技術。

........................................................................................................................

歡迎與我聯絡

 

 



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

相關文章