Oracle 12.2新特性: PDB级闪回数据库(Flashback PDB)

2023-11-06 23:20

本文主要是介绍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)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/359670

相关文章

SpringBoot3.4配置校验新特性的用法详解

《SpringBoot3.4配置校验新特性的用法详解》SpringBoot3.4对配置校验支持进行了全面升级,这篇文章为大家详细介绍了一下它们的具体使用,文中的示例代码讲解详细,感兴趣的小伙伴可以参考... 目录基本用法示例定义配置类配置 application.yml注入使用嵌套对象与集合元素深度校验开发

数据库面试必备之MySQL中的乐观锁与悲观锁

《数据库面试必备之MySQL中的乐观锁与悲观锁》:本文主要介绍数据库面试必备之MySQL中乐观锁与悲观锁的相关资料,乐观锁适用于读多写少的场景,通过版本号检查避免冲突,而悲观锁适用于写多读少且对数... 目录一、引言二、乐观锁(一)原理(二)应用场景(三)示例代码三、悲观锁(一)原理(二)应用场景(三)示例

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

Ubuntu中远程连接Mysql数据库的详细图文教程

《Ubuntu中远程连接Mysql数据库的详细图文教程》Ubuntu是一个以桌面应用为主的Linux发行版操作系统,这篇文章主要为大家详细介绍了Ubuntu中远程连接Mysql数据库的详细图文教程,有... 目录1、版本2、检查有没有mysql2.1 查询是否安装了Mysql包2.2 查看Mysql版本2.

Oracle数据库常见字段类型大全以及超详细解析

《Oracle数据库常见字段类型大全以及超详细解析》在Oracle数据库中查询特定表的字段个数通常需要使用SQL语句来完成,:本文主要介绍Oracle数据库常见字段类型大全以及超详细解析,文中通过... 目录前言一、字符类型(Character)1、CHAR:定长字符数据类型2、VARCHAR2:变长字符数

Win11安装PostgreSQL数据库的两种方式详细步骤

《Win11安装PostgreSQL数据库的两种方式详细步骤》PostgreSQL是备受业界青睐的关系型数据库,尤其是在地理空间和移动领域,:本文主要介绍Win11安装PostgreSQL数据库的... 目录一、exe文件安装 (推荐)下载安装包1. 选择操作系统2. 跳转到EDB(PostgreSQL 的

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

mysql数据库重置表主键id的实现

《mysql数据库重置表主键id的实现》在我们的开发过程中,难免在做测试的时候会生成一些杂乱无章的SQL主键数据,本文主要介绍了mysql数据库重置表主键id的实现,具有一定的参考价值,感兴趣的可以了... 目录关键语法演示案例在我们的开发过程中,难免在做测试的时候会生成一些杂乱无章的SQL主键数据,当我们