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/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26736162/viewspace-2222124/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值