转-恢复目录数据库(Recovery Catalog)

“备份过程中产生的元数据,放在RMAN信息库(RMAN repository)RMAN信息库可以放在两个地方:目标数据库的控制文件里,或者恢复目录(Recovery Catalog)里。”

“RMAN Repository (RMAN 恢复目录数据库)是存放recovery catalog(恢复目录)的数据库。建议为恢复目录数据库创建一个单独的数据库。”


缺省情况下,rman 备份的信息,最开始是记录在控制文件中。但控制文件中空间有限,不可能无限期地保留,同时,万一存储损坏,控制文件也丢失了,则无法从备份进行数据库的恢复。这也是为什么 oracle 10g 开始有控制文件的自动备份功能的原因。
如果是公司里有许多 oracle 数据库时,则建议专门用一个数据库来做 catalog 库,即,rman 备份时,或是备份后,在连接了 catalog 库时,会把控制文件中记录的备份信息,同步到 catalog 库中。catalog 库中是通过一个数据库用户及其相关的表来存放 备份信息,因而,其保存期限理论上是无限的,不论保存多少年的备份信息都可以。这样,只要备份出的介质还在,你都可以使用该备份介质进行数据库的恢复。
如果把 catalog 放在正被备份的库中,在在线备份时,其是可以写入 catalog 中的,但是,这种方式是绝不建议的,因为,这种情况下,一旦生产库出问题,则 catalog 也丢了,怎么恢复?
所以,catalog 要为单独的库。实在不行,可以考虑两个库,互为对方的 catalog。如,A 库的备份信息,除了记录于 A 库自身的控制文件中外,还记录于B 库的 某个用户下(catalog owner),B 库的备份信息,除了记录于 B 库自身的控制文件中外,还记录于A 库的 某个用户下(catalog owner),这样,一旦 A库所有文件包括控制文件都丢失了,可以根据B 库中的catalog 的信息,从备份中恢复A 库的参数文件,控制文件及数据文件。从而恢复A库。

当没有恢复目录时,RMAN相关的备份信息,比如归档文件路径、备份集路径等均存储在目标数据库的控制文件中,不过考虑到控制文件并不能无限增长,而且控制文件也不仅仅是用来存储与备份相关的信息,因此RMAN也有一个专门的备份信息存储地,这就是恢复目录了。当待备份的数据库注册到恢复目录之后,RMAN相关的信息除了保存在控制文件中外(控制文件实际上只保存一部分),更加详细的信息就都被存储在恢复目录中。
 

(1)创建一个独立的表空间:

SQL>CREATE TABLESPACE RMANTBS DATAFILE 'f:\oracle\oradata\bakdb\rmantbs01.dbf'  size 50m;

  • Tablespace created.

  注意千万不要将恢复目录创建在要备份的目录数据库。

  由于恢复目录通常不会太大,这里数据文件仅分配了50MB的空间。

  (2)创建一个独立的 SCHEMA ,用来记录备份信息,并授予相关权限:

SQL>GRANT CONNECT,RESOURCE,RECOVERY_CATALOG_OWNER TO RMANCT IDENTIFIED BY RMANCT;

  • Grant succeeded.

  (3)通过RMAN连接到新创建的恢复目录中:

F:\oracle>RMAN CATALOG RMANCT/RMANCT

Recovery Manager: Release 10.2.0.1.0 - Production on Fri Apr 24 11:11:06 2009

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

  • connected to recovery catalog database

  (4)在RMAN中创建 CATALOG :

RMAN>CREATE CATALOG TABLESPACE RMANTBS;

  • recovery catalog created

  这样恢复目录就算创建完了,一个恢复目录数据库可以同时为多个目标数据库提供服务,不过要使用恢复目录执行备份操作前,首先需要在恢复目录中注册该数据库,注册也非常简单,一条命令即可,步骤如下:

  首先以CATALOG模式连接到目标数据库和恢复目录(连接恢复目录只需要在连接时指定CATALOG参数即可):

F:\oracle>RMAN TARGET / CATALOG RMANCT/RMANCT@BAKDB

Recovery Manager: Release 10.2.0.1.0 - Production on Fri Apr 24 11:16:36 2009

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

connected to target database: JSSBOOK (DBID=1419729528)

  • connected to recovery catalog database

  可以通过如下命令注册数据库:

RMAN> REGISTER DATABASE;

database registered in recovery catalog

starting full resync of recovery catalog

  • full resync complete

  这之后进行的操作,比如创建备份等操作信息都会存入恢复目录中。

  对于注册到恢复目录,是否就必须或者只能以CATALOG模式进行备份或恢复操作了呢?当然不是,恢复目录只是RMAN中的一个可选项,而不是必选项,备份信息是否记入CATALOG取决于执行RMAN操作时是否连接到了CATALOG,也就是说,即使目标数据库已经注册到恢复目录中,但连接时没有以CATALOG模式连接,则备份信息仍然是只存入目标端数据库的控制文件,相当于NOCATALOG模式。

  另外,已经注册到 CATALOG 中的数据库希望取消注册怎么办呢?使用U NREGISTER 命令即可:

RMAN>UNREGISTER DATABASE;

database name is "JSSBOOK" and DBID is 1419729528

Do you really want to unregister the database (enter YES or NO)? yes

  • database unregistered from the recovery catalog

  如果DBA要管理的Oracle数据库较多,那么对于这些数据库的备份,建议使用恢复目录统一管理,这样既方便备份和恢复操作,而且安全性也相对比较高(执行完备份操作后,单独备份恢复目录数据库即可,无须担心被备份的数据库控制文件丢失可能造成的影响)。不过如果DBA仅管理一个或者数个Oracle数据库,那么我想NOCATALOG模式操作起来会更加方便。

 

Reference:

1.http://blog.itpub.net/29196873/viewspace-1076805/

2.https://zhidao.baidu.com/question/1768237096901294140.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值