RMAN CATALOG

Oracle 备份恢复篇之RMAN catalog

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

相关推荐