Oracle 12c多租户特性详解:PDB 的备份与恢复

简介:

640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy

(题图来自Oracle VP , Sally Piao的摄影佳作,感谢摄影师授权)

编辑手记:这一节我们将介绍多租户中的备份与恢复,这篇文章来自<深入解析Oracle>一书的摘录。


由于 PDB 的引入,Oracle 数据库的备份和恢复也发生了很多变化,基于 PDB 级别的表空间、库备份同时被支持。以下通过实际测试介绍一下12c中关于 PDB 的备份恢复过程。



⑴ 启动归档模式

 

首先启动数据库的归档模式(需要以IMMEDIATE方式关闭数据库,执行模式更改):


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

根据数据库的实际情况,设置闪回恢复区(注意在生产环境中设置合理的闪回区非常重要):

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

尝试使用RMAN连接到数据库,注意12c中增加了新的用户SYSBACKUP用于备份管理,并且RMAN中开始支持简单的SQL查询语句:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

通过reportschema的命令,可以列出数据库中的表空间和文件信息等,在12c的输出中,临时表空间作为一个独立的信息部分被显示出来:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


⑵ 对 PDB 执行备份

 

在12c中支持对单个或多个PDB执行独立的备份操作,如类似如下命令示范备份多个或单个PDB:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

RECOVER操作也响应的可以针对PDB级别来进行:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

以下命令对CDB$ROOT进行备份:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

以下是对单个常规PDB进行备份的执行过程:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

可以通过指定PDB名称和表空间名称的方式,对PDB中的表空间进行独立备份,以下命令备份了名称为ENMOPDB内部的ENMO表空间文件:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

同样在备份时可以指定PLUS ARCHIVELOG参数,对归档日志进行同时备份,以下是常规的命令示范:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


⑶ 对PDB及PDB文件执行恢复

 

在执行恢复时,可以针对PDB或者PDB中的表空间进行,以下范例通过对于PDB ENMO中的系统表空间恢复,演示PDB的恢复过程:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

以下测试演示了对PDB中的单个表空间进行在线恢复的过程。如果某个表空间受损,可以执行紧急的离线操作:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

然后可以通过RMAN执行基于单个表空间进行恢复:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

恢复完成之后可以将表空间在线,这就完成了恢复:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


⑷ 对 PDB 执行不完全恢复

 

在12c中,Oracle 还支持基于单个 PDB 的不完全恢复,以下是一个示范的测试过程。


首先连接到 PDB,创建一个测试用户:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


接下来执行对于全库的基础的全库备份:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=
640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

接下来我们在数据库中执行一个系列的数据操作,创建测试表,插入数据,然后删除部分数据,记录删除前的 SCN 信息:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

现在尝试通过备份恢复数据库至 SCN 3254957,也就是删除数据之前的时间点。

 

在恢复之前需要首先关闭 PDB,执行 PDB 级别的 Restore 操作:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=
640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=
640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=
640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=
640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=
640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

检查数据表,数据已经恢复到删除前的记录数量:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

注意在不完全恢复过程中,需要产生辅助实例,在后台会生成相应的日志等目录结构.以下是完成不完全恢复遗留在辅助目录中的部分文件:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

在辅助恢复中,生成了大量的临时目录和文件,以下是在我的测试环境中遗留的文件目录:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

以下是恢复过程中辅助实例告警日志记录的内容(保留部分重要内容供读者参考):


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=
640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=
640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


文章转自数据和云公众号,原文链接
相关文章
|
4月前
|
Oracle 关系型数据库 数据库
9-2 Oracle数据库(表)的逻辑备份与恢复 --导出与导入
9-2 Oracle数据库(表)的逻辑备份与恢复 --导出与导入
|
1月前
|
SQL 存储 Oracle
oracle如何定期备份数据库sql文件
【1月更文挑战第7天】oracle如何定期备份数据库sql文件
49 8
|
5月前
|
Oracle 关系型数据库
Oracle 11g和12c的主要区别
Oracle 11g和12c的主要区别
|
6月前
|
Oracle 关系型数据库 数据库
通过数据泵expdp、impdp方式备份与还原(导出与导入)Oracle数据库
通过数据泵expdp、impdp方式备份与还原(导出与导入)Oracle数据库
|
6月前
|
SQL Oracle 关系型数据库
Oracle 19c 启动和关闭实例保存PDB状态
十年以上 MySQL Oracle DBA从业者,MySQL 5.7 OCP, 微信号: jinjushuke
163 0
|
9月前
|
Oracle 关系型数据库
oracle 12c新功能 recover table恢复单个表
不支持sys用户和system表空间的表
|
9月前
|
Oracle 关系型数据库 数据库
|
SQL Oracle 关系型数据库
Oracle自动恢复设置
一、背景说明:一个朋友需要定期把正式库的备份还原到一个测试系统中,便于系统进行测试;从需求上来讲这个需求是比较奇怪的,但是作为技术人员还是得进行配合完成相应的需求。
671 0
|
3天前
|
开发框架 Oracle 关系型数据库
ASP.NET实验室LIS系统源码 Oracle数据库
LIS是HIS的一个组成部分,通过与HIS的无缝连接可以共享HIS中的信息资源,使检验科能与门诊部、住院部、财务科和临床科室等全院各部门之间协同工作。 
16 4
|
8天前
|
SQL Oracle 关系型数据库
【Oracle】玩转Oracle数据库:装上去,飞起来!
本文是一篇关于Oracle数据库安装和使用的博文摘要。作者以轻松幽默的笔调介绍了自己在实验中掌握的Oracle数据库基本操作,包括使用组件查看命令、配置数据库监听器等。作者也分享了在实验中遇到的一些有趣问题,如SQL语句缺少分号导致的意外错误。此外,作者还强调了登录sys用户和启动实例加载数据库的注意事项,并鼓励读者面对挑战时保持乐观,不断提升自己的能力。整体风格风趣严谨,引人入胜。
185 0