3.6 RMAN使用的SYS数据包
RMAN服务器进程在协调通道工作时要访问两个SYS数据包:
DBMS_RCVMAN数据包和DBMS_BACKUP_RESTORE数据包,
这两个包包含了目标数据库中RMAN的所有功能。
3.6.1 SYS.DBMS_RCVMAN数据包
DBMS_RCVMAN数据包用来访问控制文件中的表并将此信息传递给RMAN,使用RMAN可以构建准确反应数据库结构的备份和还原操作。
DBMS_RCVMAN包负责在执行任何操作前设置time运算符和校验数据文件头中的检查点信息,并检查文件位置和大小,以及有关节点相似性(在RAC环境中)和磁盘相似性的其他信息。- 这种信息会影响RMAN的性能,并且RMAN在构建实际备份/还原命令之前自动执行负载均衡(load-balancing)算法和性能增强(performance-enhancing)算法。
3.6.2 SYS.DBMS_BACKUP_RESTORE数据包
概述
RMAN接收从DBMS_RCVMAN数据包返回的信息,并在通道间基于负载均衡算法分配工作,然后创建一系列DBMS_BACKUP_RESTORE数据包调用。
- ⭐️⭐️⭐️⭐️⭐️
SYS.DBMS_RCVMAN包访问控制文件并校验所有必须的信息。 - ⭐️⭐️⭐️⭐️⭐️这些必须的信息被传递回RMAN服务器进程,RMAN服务器进程随后会基于
recover.bsq文件中的代码创建一些PL/SQL块。 - ⭐️⭐️⭐️⭐️⭐️这些PL/SQL块含有对
DBMS_BACKUP_RESOTRE数据包的调用,实际上RMAN中是由DBMS_BACKUP_RESTORE数据包来创建系统调用以备份数据文件,控制文件和归档日志,该包是RMAN的真正动力。 - 在
V$SESSION_LONGOPS视图中可以跟踪的是DBMS_BACKUP_RESTORE数据包的工作。它执行备份和还原操作,此外还可以以受限方式访问控制文件。 DBMS_BACKUP_RESTORE数据包访问控制文件以备份该文件(实际上是控制文件的快照),在备份完成后写入备份信息。一旦完成了一个备份集,DBMS_BACKUP_RESTORE数据包就会在控制文件的表中写入备份开始时间,备份大小和备份名的信息。
内核中的RMAN数据包
- 创建数据库时,运行
cataproc.sql脚本可以默认安装上述两个RMAN数据包。- 数据库创建期间无法跳过这一步骤。
- 所以在8.0.3以后的每个版本里都存在rman包。
- 这样就不必配置RMAN,我们可以立即运行RMAN 并开始备份数据库。
- 这些RMAN数据包还有一个重要的特性,他们被硬编码到Oracle软件的库文件中,因此即使没有打开数据库也可以调用这些数据包。
- 我们知道,大多数数据包只在数据库打开时才能被使用,不过RMAN可以在数据库实例处于nomount模式或者mount模式时编写对
DBMS_BACKUP_RESTORE数据包的调用。 - 这是一个关键要素,其原因显而易见:需要在没有打开数据库时也能备份和还原这个数据库。
- 我们知道,大多数数据包只在数据库打开时才能被使用,不过RMAN可以在数据库实例处于nomount模式或者mount模式时编写对
- 你会注意到这样的问题:如果要使用RMAN连接目标数据库,目标数据库应该处于什么状态?需要启动实例吗?数据库需要挂载吗?还是必须打开?
- 实际上RMAN 可连接到这3种状态的目标数据库, 但是目标数据库只有至少处于NOMOUNT 模式下,RMAN 才能执行更多操作, 而非仅发出startup 命令。
最后修改时间:2020-09-14 09:57:13
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




