Oracle 12.2新特性: PDB級閃回資料庫(Flashback PDB)
在 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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 12.2 新特性: Online PDB relocate (PDB hot move)Oracle
- Oracle 12.2 新特性:線上PDB資料庫克隆(Pluggable Hot Clone)Oracle資料庫
- 【PDB】pdb閃回,Oracle還原點Oracle
- Oracle 12.2 新特性 | PDB不同字符集變更深入解析Oracle
- 【RECO_ORACLE】Oracle閃回PDB的方法Oracle
- 【Flashback】Flashback Database閃回資料庫功能實驗Database資料庫
- Oracle 18C新特性之PDB snapshot Carousel--PDB快照輪播Oracle
- 2.6.2 Overview of Flashback PDB in a CDBView
- flashback query閃回資料
- 【PDB】DBA常用命令之Oracle12.2+ cdb資料庫統一檢查Oracle資料庫
- 【PDB】Oracle PDB資源管理參考Oracle
- 【PDB】Oracle資料庫如何檢查和設定pdb最大儲存大小Oracle資料庫
- Oracle 18C新特性之PDB snapshot(快照) CarouselOracle
- Oracle資料庫閃回Oracle資料庫
- GeminiDB Cassandra介面新特性FLASHBACK釋出:任意時間點秒級閃回
- 【PDB】 為Oracle pdb新增服務(pdb add service)Oracle
- 【BUILD_ORACLE】在Oracle cloud資料庫“插拔”PDB的方法UIOracleCloud資料庫
- Oracle閃回技術 為Oracle閃回配置資料庫Oracle資料庫
- Oracle 建立PDB-Plugging In an Unplugged PDBOracle
- Oracle閃回技術--Flashback Version QueryOracle
- 【PDB】Oracle跨PDB檢視查詢Oracle
- 【PDB】Oracle pdb維護常用sql命令OracleSQL
- Oracle 閃回資料庫測試Oracle資料庫
- 詳解oracle資料庫閃回Oracle資料庫
- 【PDB】Oracle 建立pdb說明(create pluggable database)OracleDatabase
- kettl連線oracle12c 可插拔資料庫pdbOracle資料庫
- Oracle 12c系列(九) | 通過unplug與plug方式升級pdb資料庫Oracle資料庫
- 12.2 如何單為PDB建立AWR報告
- 多租戶:在Oracle12.2中 從Non-CDB遷移到PDB,從PDB遷移另一個CDB中Oracle
- ORACLE 閃回檢視v$flashback_database_log/statOracleDatabase
- Oracle:PDB 引數管理Oracle
- Oracle資料庫閃回區空間不足Oracle資料庫
- 【Flashback】Flashback Drop閃回刪除功能實驗
- Oracle 建立PDB-from ScratchOracle
- Oracle 建立PDB-本地克隆Oracle
- oracle19c連pdbOracle
- 18C新特性之PDB snapshot Carousel,夠用嗎?
- 【FLASHBACK】Oracle閃回及回收站相關語句參考Oracle