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

相关文章

Python调用Orator ORM进行数据库操作

《Python调用OratorORM进行数据库操作》OratorORM是一个功能丰富且灵活的PythonORM库,旨在简化数据库操作,它支持多种数据库并提供了简洁且直观的API,下面我们就... 目录Orator ORM 主要特点安装使用示例总结Orator ORM 是一个功能丰富且灵活的 python O

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

oracle DBMS_SQL.PARSE的使用方法和示例

《oracleDBMS_SQL.PARSE的使用方法和示例》DBMS_SQL是Oracle数据库中的一个强大包,用于动态构建和执行SQL语句,DBMS_SQL.PARSE过程解析SQL语句或PL/S... 目录语法示例注意事项DBMS_SQL 是 oracle 数据库中的一个强大包,它允许动态地构建和执行

PLsql Oracle 下载安装图文过程详解

《PLsqlOracle下载安装图文过程详解》PL/SQLDeveloper是一款用于开发Oracle数据库的集成开发环境,可以通过官网下载安装配置,并通过配置tnsnames.ora文件及环境变... 目录一、PL/SQL Developer 简介二、PL/SQL Developer 安装及配置详解1.下

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意

查询SQL Server数据库服务器IP地址的多种有效方法

《查询SQLServer数据库服务器IP地址的多种有效方法》作为数据库管理员或开发人员,了解如何查询SQLServer数据库服务器的IP地址是一项重要技能,本文将介绍几种简单而有效的方法,帮助你轻松... 目录使用T-SQL查询方法1:使用系统函数方法2:使用系统视图使用SQL Server Configu

SQL Server数据库迁移到MySQL的完整指南

《SQLServer数据库迁移到MySQL的完整指南》在企业应用开发中,数据库迁移是一个常见的需求,随着业务的发展,企业可能会从SQLServer转向MySQL,原因可能是成本、性能、跨平台兼容性等... 目录一、迁移前的准备工作1.1 确定迁移范围1.2 评估兼容性1.3 备份数据二、迁移工具的选择2.1

Python中连接不同数据库的方法总结

《Python中连接不同数据库的方法总结》在数据驱动的现代应用开发中,Python凭借其丰富的库和强大的生态系统,成为连接各种数据库的理想编程语言,下面我们就来看看如何使用Python实现连接常用的几... 目录一、连接mysql数据库二、连接PostgreSQL数据库三、连接SQLite数据库四、连接Mo

oracle如何连接登陆SYS账号

《oracle如何连接登陆SYS账号》在Navicat12中连接Oracle11g的SYS用户时,如果设置了新密码但连接失败,可能是因为需要以SYSDBA或SYSOPER角色连接,解决方法是确保在连接... 目录oracle连接登陆NmOtMSYS账号工具问题解决SYS用户总结oracle连接登陆SYS账号