本文主要是介绍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 pdbsCON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ----------2 PDB$SEED READ ONLY NO3 PDBANBOB MOUNTED5 PDBTEST2_PROXY MOUNTED6 PDBWEEJAR MOUNTEDSQL> alter pluggable database pdbanbob open; Pluggable database altered. SQL> show pdbsCON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ----------2 PDB$SEED READ ONLY NO3 PDBANBOB READ WRITE NO5 PDBTEST2_PROXY MOUNTED6 PDBWEEJAR MOUNTEDSQL> 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:121 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:512 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 11 0 2016-12-09 20:42:51 51 0 2016-12-09 20:42:51 61 0 2016-12-09 20:42:51 22 0 2017-01-18 21:27:59 52 0 2017-01-18 21:27:59 22 0 2017-01-18 21:27:59 12 0 2017-01-18 21:27:59 32 0 2017-01-18 21:27:59 62 2 2017-03-21 15:59:13 32 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新特性: PDB级闪回数据库(Flashback PDB)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!