RMAN系列(一),RMAN体系结构概述(五)
large池。
如果没有使用磁带I/O从属,会在PGA中分配用于磁带输出缓冲区的内存。设置init.ora 参数BACKUP_TAPE_IO_SLAVES=TRUE,可以使用磁带I/O从属,必要时还可以在spfile里动态修改。 该参数设为true时,rman 会为每个通道创建一个从属进程来帮助备份工作。为了协调这一功能,RMAN 会将内存分配推进SGA。
如果配置了任一种I/O从属选项并且没有配置large 池,则会在SGA的共享池曲终分配内存。如果没有配置large池又要使用I/O从属,建议最好创建一个large池,这个large池的大小基于为备份分配的通道总数(加上1MB用于开销)。
九.恢复目录
恢复目录存储的是与RMAN 备份有关的元数据。在某种意义上,恢复目录可以看做是保存RMAN 备份和恢复所需的相关信息的副本。我们可以在Oracle 数据库中在用户模式下创建恢复目录,这个恢复目录仅仅是一些数据包,表,索引和视图。 RMAN 中的再同步命令会使得目标数据库控制文件中的内容刷新这些表中的数据。当然,区别在于恢复目录可以包含企业中所有数据库的信息,而控制文件只包含关于它自己的数据库的信息。
在连接恢复目录的连接字符串中,要输入该RMAN目录用户的用户名和口令。与连接目标数据库不同,到恢复目录的连接不是一个sysdba连接,因此不需要sysdba 权限。一旦连接了恢复目录,就可以手工在同步恢复目录,或者任何备份操作都可以隐式的再同步恢复目录。 再同步是指用目标数据库控制文件中的内容刷新恢复目录中表的信息。一个恢复目录可以存储多个目标数据库的信息,这样可以集中管理许多不同数据库的备份,通过SQL可以查询恢复目录的视图,由此确定在恢复目录中注册的每个目标数据库的备份数,备份大小和备份范围。
恢复目录中存在数据包DBMS_RCVMAN会给包含该恢复目录的数据库带来混乱,这样的数据库通常称为目录数据库(catalog database)。目录数据库也可能是目标数据库,它也含有SYS模式中的
DBMS_RCVMAN 数据包,因此如果选择目录数据库中的DBA_OBJECTS,就会存在模式不同但是名称相同的两个数据包。 这样并不会引起错误或我难题。因为其中一个数据包在数据库创建时由cataproc.sql 构建(在SYS模式下),另外一个数据包则是在创建恢复目录时构建,在常规用户模式下。
恢复目录中的第二个数据包是DBMS_RCVCAT数据包,这个数据包只在RMAN操作期间执行特殊的恢复目录操作。实质上,可以将这个数据包看做恢复目录的DBMS_BACKUP_RESTORE数据包实现。区别仅
在于DBMS_BACKUP_RESTORE数据包在目标数据库控制文件中写入备份完成信息,而DBMS_RCVCAT数据包则将这些信息写入恢复目录。
另外,包含恢复目录中信息的基表(base table)并不重要,因为我们不想手工修改这些基表。为了保护恢复目录,Oracle创建了一系列前缀为RC_的视图,使用这些视图可以从恢复目录中析取信息。手工执行任何针对目录对象的DML命令都是非常危险的。还有一点,这些视图是数据库控制文件中相应v$视图的不同实现。
十.辅助数据库
辅助数据库(auxiliary database)是指在表空间时间点恢复(Tablespace Point In Time Recovery: TSPITR),复制操作(克隆数据库)或使用RMAN 备份创建备用数据库时,为了还原目标数据库的文件而临时生成的实例。执行上述任一种任务时,我们都要在RMAN中同时连接目标数据库和辅助数据库,这样就可以利用目标数据库控制文件中的备份信息在辅助数据库位置调整这些备份还原。
RMAN>connect target /
RMAN>connect auxiliary sys/pwd@SID
执行这些命令后,RMAN会同时生成到每个数据库的连接,并要求访问目标数据库与辅助数据库中的SYS.DBMS_BACKUP_RESTORE 和 SYS.DBMS_RCVMAN 数据包。 这样一来,RMAN要求用户对辅助数据库具有与目标数据库相同的sysdba权限。由于RMAN必须生成到这两个数据库的sysdba 连接,而且不可能本地连接两个不同的数据库,所以必须至少要配置一个数据库,创建一个口令文件,并且生成到这个数据库的Oracle net 连接。
十一.版本兼容性
鉴于必须使用多种不同的
组件,所以在使用RMAN时必须注意数据库版本的限制。兼容性问题分为5个部分,每一个部分都有一个版本号:
1)RMAN 可执行文件版本(客户端使用程序)
2)目标数据库
3)恢复目录模式
4)恢复目录数据库
5)辅助数据库(用户复制,TSPITR和备用数据库的创建)
当然,解决兼容性问题的最佳方法是保证这些组件都使用最新的版本,如果使用相同版本的组件,一切都会井然有序。
11.1 目标数据库与RMAN 可执行文件
一个通用规则:尽量保证目标数据库与RMAN可执行文件使用的是相同的版本。如果在目标数据库环境下运行RMAN,做到这一点就很容易。如果从一个集中的客户端接口运行所有RMAN工作,这将非常棘手,它意味着客户端需要安装一个ORACLE_HOME客户端,版本上要对应需要连接和备份的每个数据库版本,该解决方案相当复杂。 使用10G 的OEM 可以解决这个问题,该软件支持集中的客户端接口,因为我们可以从单个控制台使用远程RMAN可执行文件,或者在多个DBA完成备份任务时从控制台使用远程RMAN可执行文件。
11.2 恢复目录数据库与版本目录模式
针对恢复目录数据库与恢复目录模式的兼容性问题,一种简单的方法,就是在高版本的数据库(如11g)中创建该版本的恢复目录,那么这个目录可以注册低版本的数据库。但是低版本不能注册高版本的。
11.3 辅助数据库
从兼容性观点看,辅助数据库必须与要复制的目标数据库采用相同的版本。实际上,最好在复制的数据库中插入与目标数据库相同版本的ORACLE_HOME 主目录。
12. RMAN 进程
先举一个简单的备份例子:
Rman>backup database;
详细的看一下RMAN 备份的全过程:
RMAN 生成到目标数据库的bequeath连接,这就是说RMAN会检查ORACLE_SID变量中的实例名,并在该实例上产生一个服务器进程,然后作为sysdba用户登录。这样我们被连接为内部数据库用户sys,rman会立即产生一个用于执行备份操作的通道进程。 如果使用默认设置,就只分配一个通道。 在没有使用I/O从属的情况下,通道进程会在PGA中分配内存。
随后RMAN 通过编译一个sys.DBMS_RCVMAN调用,从目标数据库控制文件中请求数据库结构信息,显示确定目标数据库的版本。RMAN从控制文件中收集版本信息和控制文件本身的信息,控制文件本身的信息包括控制文件的类型,控制文件中的当前序列号以及控制文件的创建时间。
我们在例子中指定了数据库的完全备份,所以RMAN会请求数据库中每个数据文