RMAN CATALOG
一、RMAN Repository
RMAN 资料档案库用于收集目标数据库中RMAN 用于备份、恢复和保管的元数据。
RMAN 提供了两种方式来存放这些元数据,NOCATALOG 方式,与CATALOG 方式。
注:目标数据库为要备份的数据库。
二、Nocatalog
Nocatalog 方式就是用目标数据库的controlfile 作为catalog,每一次备份都要往控制文
件里面写好多备份信息,控制文件里面会有越来越多的备份信息。因此,当使用rman
nocatalog 方式备份时,备份controlfile 是非常重要的。
我们知道控制文件分为可变部分和不可变部分,而RMAN 的元数据存储在可变部分。
该部分由参数control_file__record_keep_time 控制保存时间(缺省为7天,到规定时间自动
清除以前的备份信息),若该参数设置为0,则控制文件的可变区域大小不会扩展,只要没
有足够空间就会覆盖旧值。因此,建议将该值加大,强烈建议不要设置为0。
SQL> show parameter control
NAME TYPE VALUE
------------------------------------ ----------- - -----------------------------
control_file_record_keep_time integer 7
SQL> alter system set control_file_record_keep_time=14 scope=both;
在不使用catalog 的情况下,为了更容易地存储和恢复数据库,Oracle 建议:
1.启动控制文件自动备份的功能;
2.记录您的DBID
3.将控制文件冗余到不同的磁盘上
4.保留所有的RMAN 备份日志
这样,如果丢失了控制文件,即使没有使用恢复目录也可以自动恢复控制文件。
三、Catalog
当没有恢复目录时,RMAN 相关的备份信息,比如归档文件路径、备份集路径等均存
储在目标数据库的控制文件中,不过考虑到控制文件并不能无限增长,而且控制文件也不仅
仅是用来存储与备份相关的信息,因此RMAN 也有一个专门的备份信息存储地,这就是恢
复目录了。Catalog 相当于把RMAN 备份的元数据单独存放到另一个数据库的表空间。
当待备份的数据库注册到恢复目录之后,RMAN 相关的信息除了保存在控制文件中外
(控制文件实际上只保存一部分),更加详细的信息就都被存储在恢复目录中。
强烈建议不要将恢复目标数据库放到目标数据库中。
建议将恢复目录存放在一个专有的数据库中。如果恢复目录和其他数据存储在一个数据
库中,那么如果这个数据库损坏,你的恢复目录很有可能也会丢失。
1. CATALOG 的优点:
1.能保留更多的历史备份信息
2.一个恢复目录能管理与备份多个目标数据库
3.如果没有恢复目录,而且发生了结构上的改变,恢复需要小心操作
同样,如果选择使用恢复目录方式,也同样要对恢复目录做备份。
恢复目录一般不需要用RMAN 做备份,只要EXP 即可。一旦恢复目录数据库发生故障,
通过IMP 恢复即可。
2. 在恢复目录中注册数据库:
在一个恢复目录中登记称为注册。一个恢复目录可以注册多个目标数据库。RMAN 以
DBID 辨别数据库,每个在catalog 注册的数据库都拥有一个唯一的DBID。
3. 创建CATALOG 的步骤
创建恢复目录非常简单,RMAN 提供了CREATE CATALOG 命令,但是在创建恢复目
录之前,首先需要为该恢复目录创建一个独立表空间和对应的SCHEMA ,详细操作步骤
如下:
1) 环境说明:
目标数据库:prod
恢复目录数据库:emrep:管理员RC_ADMIN、表空间RC_DATA
2) 创建一个独立的表空间:
[oracle@oracle ~] sqlplus sys/oracle@emrep as sysdba
SQL>create tablespace RC_DATA Datafile ‘/u01/app/oracle/oradata/emrep/rc_data01.dbf’ size 100MAutoextend on next 10MExtent management localSegment space management auto;
注意千万不要将恢复目录创建在要备份的目录数据库。
由于恢复目录通常不会太大,这里数据文件仅分配了100MB 的空间。
3) 创建一个独立的SCHEMA ,用来记录备份信息,并授予相关权限:
[oracle@oracle ~] sqlplus sys/oracle@emrep as sysdba
SQL>create user RC_ADMIN identified by RC_ADMIN default tablespace
RC_DATA;
SQL>grant connect,resource,recovery_catalog_owner to RC_ADMIN;
4) 在RMAN 中创建CATALOG
//通过RMAN 连接到新创建的恢复目录中
[oracle@oracle ~]$ Rman catalog RC_ADMIN/RC_ADMIN@emrep
RMAN>create catalog tablespace RC_DATA;
5) 注册
[oracle@oracle ~]$ rman target sys/oracle@prod
catalog RC_ADMIN/RC_ADMIN@emrep
RMAN>register database;
RMAN> resync catalog;
这之后进行的操作,比如创建备份等操作信息都会存入恢复目录中。
对于注册到恢复目录,是否就必须或者只能以CATALOG 模式进行备份或恢复操作了
呢?当然不是,恢复目录只是RMAN 中的一个可选项,而不是必选项,备份信息是否记入
CATALOG 取决于执行RMAN 操作时是否连接到了CATALOG,也就是说,即使目标数据
库已经注册到恢复目录中,但连接时没有以CATALOG 模式连接,则备份信息仍然是只存
入目标端数据库的控制文件,相当于NOCATALOG 模式。
4. 取消注册
[oracle@oracle ~]$ rman target sys/oracle@prod
catalog RC_ADMIN/RC_ADMIN@emrep
RMAN>unregister database;
或者
[oracle@oracle ~]$sqlplus sys/oracle@prod as sysdba
SQL>select dbid from v$database ;
[oracle@oracle ~]$conn RC_ADMIN/RC_ADMIN@emrep
rman>RMAN> list incarnation;
DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time
------- ------- -------- ---------------- --- ---------- ----------
1 8 ORCL 1359094044 PARENT 1 30-JUN-05
1 2 ORCL 1359094044 CURRENT 446075 12-NOV-13
Rman>exec dbms_rcvcat.unregisterdatabase(2,1359094044);
5. 删除catalog
RMAN> drop catalog;
recovery catalog owner is ADMIN
enter DROP CATALOG command again to confirm catalog removal
RMAN> drop catalog;
recovery catalog dropped