使用恢复目录时会涉及到其他一些维护活动,比如在数据库升级或迁移期间升级恢复目录,手工配置数据库对应物以及在某些数据库操作后在同步恢复目录。

1、在RMAN中取消注册数据库

在Oracle 10g 之前,从恢复目录中取消注册数据库是一个手工操作的过程。在10g中,从恢复目录中删除数据库只需要执行 unregister database。如:

RMAN>unregister database orcl;

注意的是: 该命令不会删除该数据库的备份文件,而只是删除这些备份文件的恢复目录引用。 同样需要注意的是,只需要连接恢复目录就可以执行该命令。

2、数据库的迁移和升级问题

升级数据库时,必须同事升级恢复目录,因为数据库版本, RMAN 版本和恢复目录版本之间存在严格的格则。

用恢复目录用户连接数据库,然后查询rcver表,就可以看到恢复目录的版本:

SQL> conn rman/rman@orcl;

已连接。

SQL> select version from rcver;

VERSION

------------

11.02.00.01

  只要恢复目录的版本不低于数据库的版本,就能够执行各种操作。 因此,如果在同一个恢复目录中存储多个数据库,只要升级这个恢复目录中的一个数据库。

升级恢复目录很简单,只需要在RMAN 里执行upgrade catalog命令即可。 RMAN 会提示用户再次输入upgrade catalog命令,随后将升级恢复目录。

C:/Users/Administrator.DavidDai>rman target /@bl catalog rman/rman@orcl;

恢复管理器: Release 11.2.0.1.0 - Production on 星期日 7月 11 10:16:20 2010

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

连接到目标数据库: BL (DBID=680066685)

连接到恢复目录数据库

RMAN> upgrade catalog;

恢复目录所有者是RMAN

再输入一次 UPGRADE CATALOG 命令来确认目录升级

RMAN> upgrade catalog;

恢复目录已升级到版本11.02.00.01

DBMS_RCVMAN 程序包升级为 11.02.00.01 版

DBMS_RCVCAT 程序包升级为 11.02.00.01 版

3、手工重置数据库对应物(reset catalog)

在打开数据库时,如果使用resetlogs参数,就会创建一个新对应物。 如果这个操作是在RMAN 中进行,则会正确的更新恢复目录,但是,如果手工执行resetlogs命令(比如:sqlplus),就必须在恢复目录中重置数据库对应物。

Rman>reset database to incarnation 5;

4、手工再同步恢复目录(resync catalog)

RMAN使用恢复目录时,它会使用在同步进程来确保恢复目录和目标数据库的控制文件一致。通常,Oracle在RMAN操作(备份和恢复)后会再同步数据库,这样就不必经常再同步恢复目录。需要再同步恢复目录的一个实例是有时使用恢复目录,有时不使用恢复目录,此时,可以使用resync catalog命令手工使Oracle 再同步恢复目录。

Rman>resync catalog;

Oracle 同步恢复目录时,它首先会创建一个快照控制文件,并比较这个文件和恢复目录。 完成比较后,Oracle更新恢复目录,是恢复目录与数据库控制文件同步。

5、恢复目录记录的删除

只有很少的记录会从恢复目录中被删除,如果不加以维护,状态为deleted的就备份会一直驻留在恢复目录中。为了解决这个问题,Oracle提供了$ORACLE_HOME/rdbms/admin/prgmanc.sql 脚本来删除恢复目录中状态为deleted的所有记录。 建议定期执行这个脚本,以控制文件恢复目录的大小。

如果要从恢复目录中删除旧的对应物记录,就必须从DBINC表中删除这些对应物。可以使用RC_DATABASE_INCARNATION 视图来确定要删除的对应物,记录想删除的每个对应物的DBINC_KEY值。然后在sqlplus中执行delete 命令,如:

SQL> select * from rc_database_incarnation;

   DB_KEY       DBID  DBINC_KEY NAME     RESETLOGS_CHANGE# RESETLOGS_TIME CUR P

---------- ---------- ---------- -------- ----------------- -------------- --- -

        2 1247395743          4 ORCL                940976 21-5月 -10     NO  0

        2 1247395743         21 ORCL                     1 02-4月 -10     NO

        2 1247395743        787 ORCL               8554968 06-7月 -10     YES 2

SQL> delete from dbinc where dbinc_key=4;

已删除 1 行。

6、备份恢复目录

我们可以使用RMAN来备份数据库,同样可以用RMAN 来备份恢复目录数据库。 只要确保设置了合理的恢复策略,就能够很快的还原恢复目录。

丢失恢复目录并不可怕,即使使用了恢复目录,在以后也可以不使用恢复目录就能够恢复数据库。关键的是,我们需要数据库控制文件的备份。

oracle视频教程请关注: