RMAN系列(一),RMAN体系结构概述(三)

2014-11-24 16:45:34 · 作者: · 浏览: 3
_1
通道 ORA_DISK_1: SID=19 设备类型=DISK
SID 信息对应与v$session 中的SID 列。
============================================================================
SQL> col client_info format a30
SQL> col program format a15
SQL> select sid,saddr,paddr,program,client_info from v$session where sid=19;
       SID SADDR    PADDR    PROGRAM         CLIENT_INFO
---------- -------- -------- --------------- ------------------------------
        19 A9CCBD10 AA728C44 rman.exe        rman channel=ORA_DISK_1
============================================================================

5.1 RMAN 通道进程
除了默认的两个进程外,在备份活还原操作期间还会为分配的每个通道单独的创建一个进程。 RMAN 将通道是为目标数据库上的服务器进程,该进程在备份期间协调读取数据文件和写入指定位置的操作,在还原期间则协调读取备份位置和在数据文件位置写入数据块的操作。 通道进程只有两种类型: 磁盘通道 和 磁带通道。 我们不能为一个备份操作同时分配这两种通道,备份只能写入磁盘或写入磁盘。 与后台RMAN 进程一样,可以从数据字典(data directory)跟踪通道进程。并且将通道进程在OS 级别(OS level)上与一个SID 关联。 正是这些通道进程的活动被轮询的影子进程记录到V$SESSION_LONGOPS 视图中。
5.2 RMAN 和 I/0 从属
如果在目标数据库上配置了I/O从属,RMAN 就可以使用I/0从属。 为了用RMAN 备份和还原,有两种可用的I/0从属: 磁盘I/0 从属 和 磁带I/0 从属。
使用DBWR_IO_SLAVES 参数可以配置磁盘I/O从属。 这个参数可以被设置为任意数值,它的主要作用是在将‘脏’缓冲区(即写满的缓冲区)的内容写入磁盘时唤醒另外的DBWR从属来执行磁盘写操作。 如果参数被设置为非0值(如:1,12或23),RMAN 会自动在每个通道中切换使用4个I/O 从属来帮助将数据库读入RMAN内存缓冲区。 这是一个不错的功能,但是RMAN 分配内存的方式有很大的变化。 只有在OS 平台不支持本地异步或者禁止Oracle RDBMS使用异步I/O时,DBWR_IS_SLAVES参数才会起到作用,如果支持异步I/O,就不需要使用磁盘I/O从属。
磁带I/O 从属可帮助服务器进程访问磁带设备。 如果BACKUP_TAPE_IO_SLAVES 参数被设置为TRUE,RMAN 会为每个磁带通道进程分配一个I/O 从属来帮助在磁带位置上执行写操作。 与磁盘I/O 从属不同的是,BACKUP_TAPE_IO_SLAVES 参数只对RMAN 磁带备份起作用。 由于磁带设备不存在本地异步I/O,我们建议将该参数设置为true。 这有助于保持磁带设备传输,以达到更佳的备份和还原性能。
六. RMAN 使用的SYS数据包
RMAN 服务器进程在协调通道工作时要访问两个SYS数据包:DBMS_RCVMAN 数据包 和 DBMS_BACKUP_RESTORE 数据包, 这两个包包含了目标数据库中RMAN的所有功能。
6.1 SYS.DBMS_RCVMAN 数据包
DBMS_RCVMAN 数据包用来访问控制文件中的表并将此信息传递给RMAN,使用RMAN 可以构建准确反应数据库结构的备份和还原操作。DBMS_RCVMAN 包负责在执行任何操作前设置time 运算符和校验数据文件头中的检查点信息,并价差文件位置和大小,以及有关节点相似性(在RAC 环境中)和磁盘相似性的其他信息。 这种信息会影响RMAN的性能,并且RMAN 在构建实际备份/还原命令之前自动执行负载均衡(load-balancing)算法和性能增强(performance-enhancing)算法。
6.2 SYS.DBMS_BACKUP_RESTORE 数据包
SYS.DBMS_RCVMAN 包访问控制文件并校验所有必须的信息。 这些必须的信息被传递回RMAN服务器进程,RMAN 服务器进程随后会基于recover.bsq 文件中的代码创建一些PL/SQL 块。 这些PL/SQL 块含有对DBMS_BACKUP_RESOTRE 数据包的调用,实际上RMAN 中是由DBMS_BACKUP_RESTORE数据包来创建系统调用以备份数据文件,控制文件和归档的redo log。RMAN 接收从DBMS_RCVMAN 数据包返回的信息,并在通道间基于负载均衡算法分配工作,然后创建一系列DBMS_BACKUP_RESTORE 数据包调用。
在V$SESSION_LONGOPS 视图中可以跟踪的是DBMS_BACKUP_RESTORE 数据包的工作。它执行备份和还原操作,此外还可以以受限方式访问控制文件。DBMS_BACKUP_RESTORE 数据包访问控制文件以备份该文件(实际上是控制文件的快照),在备份完成后写入备份信息。 一旦完成了一个备份集, DBMS_BACKUP_RESTORE 数据包就会在控制文件的表中写入备份开始时间,备份大小和备份名的信息。
6.3 内核中的RMAN 数据包
创建数据库时,运行cataproc.sql 脚本可以默认安装上述两个RMAN 数据包。数据库创建期间无法跳过这一步骤。所以在8i 以后的每个版本里都存在rman 包。这些RMAN 数据包还有一个重要的特性,他们被硬编码到Oracle 软件的库文件中,因此及时没有打开数据库也可以调用这些数据包。我们知道,大多数数据包只在数据库打开时才能被使用,不过RMAN可以在数据库实例处于未加载模式或者加载模式时编写对DBMS_BACKUP_RESTORE 数据包的调用。这也是为什么在没有打开数据库时也能够备份和还原数据库。
七.备份数据块
即使是高级备份技术,备份的单元依然是数据文件,最终进行备份的OS 使用程序将查看并备份整个文件,因此需要特别注意保证Oracle 数据块的完整性,然后,RMAN 与之不同,因为RMAN 是集成在RDBMS 中的,它是在数据块层面访问数据,这和数据库本身所使用的方式相同。块级别访问是RMAN 区别于其他备份工具的地方,正是由于rman 采用了这一层面的访问,才使得它具有诸多优势,因此我们可以更有效的利用数据块进行备份和恢复。
7.1 数据块备份概述
数据块备份的工作原理:RMAN 基于备份算法规则来编译要备份的文件列表。基于通道数和同时备份的文件数,RMAN 在Oracle 共享内存段中创建一些内存缓冲区。一般在PGA中,不过有时内存缓冲区会被推入SGA。 通道服务器进程随后开始读取数据文件,并在RMAN缓冲区中填充这些数据块。一个缓冲区被填充时,输入缓冲区中的数据快会被推入输出缓