RMAN 创建恢复目录


1、恢复目录数据库配置建议:
   表空间                    大小需求
   SYSTEM                      90MB
   TEMP                        5MB
   UNDO                        5MB
   RECOVERY_CATALOG_SCHEMA     每个主城的数据库15MB
   ONLINE REDO LOGS            每个联机重做日志文件1MB

2、创建用户
create tablespace ctlg datafile '$Oracle_BASE/oradata/$ORACLE_SID/ctlg.dbf' size 100M autoextend on next 10M maxsize 2G;
create user ctlg identified by ctlg default tablespace ctlg temporary tablespace temp;
grant connect,resource,recovery_catalog_owner to ctlg;
注:恢复目录用户账户在某种程度上也算是一个特许的数据库账户,尽可能像保护系统用户那样保护好这个账户。

3、创建恢复目录Schema对象
启动RMAN,使用target参数连接目标数据库,并使用catalog参数连接恢复目录数据库。然后在RMAN中执行create catalog命令,此时可以选择使用tablespace参数来定义在其中创建RMAN的Schema对象的表空间。
[oracle@zhs10g ~]$ rman target='BACKUP/BACKUP@UTF10G' catalog=ctlg/ctlg@bcatalog
Recovery Manager: Release 10.2.0.4.0 - Production on Tue Aug 21 17:41:24 2012

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

connected to target database: UTF10G (DBID=1585746538)
connected to recovery catalog database

RMAN> create catalog tablespace ctlg;

recovery catalog created

RMAN>

4、在恢复目录中主城数据库
使用RMAN,同时连接目标数据库和恢复目录,然后在恢复目录中注册数据库:
rman target='BACKUP/BACKUP@UTF10G' catalog=ctlg/ctlg@bcatalog
register database;
当连接目标数据库时,可以在RMAN中执行report schema命令来验证注册数据库是否成功:
RMAN> report schema;

Report of database schema

List of Permanent Datafiles
===========================
File Size(MB) Tablespace           RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1    500      SYSTEM               YES     /soft/oracle/oradata/utf10g/system01.dbf
2    235      UNDOTBS1             YES     /soft/oracle/oradata/utf10g/undotbs01.dbf
3    480      SYSAUX               NO      /soft/oracle/oradata/utf10g/sysaux01.dbf
4    5        USERS                NO      /soft/oracle/oradata/utf10g/users01.dbf
5    100      STRMADMIN            NO      /soft/oracle/oradata/utf10g/strmadmin01.dbf
6    100      SRCB                 NO      /soft/oracle/oradata/utf10g/srcb01.dbf


List of Temporary Files
=======================
File Size(MB) Tablespace           Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
1    29       TEMP                 32767       /soft/oracle/oradata/utf10g/temp01.dbf

5、删除恢复目录
如果不需要使用恢复目录了,则可以删除恢复目录模式。注意:删除恢复目录模式前应该考虑备份恢复目录数据库。
删除命令为:
RMAN> drop catalog;

recovery catalog owner is CTLG
enter DROP CATALOG command again to confirm catalog removal
RMAN> drop catalog;

recovery catalog dropped

注:该命令需要执行两次,第一次是让你确认的。

6、在恢复目录中天剑RMAN备份
如果已经在没有恢复目录的情况下执行了RMAN备份,并且希望以后将这些备份信息添加至恢复目录,则可以使用catalog命令。该命令可以讲数据文件副本、备份集片、归档日志备份、甚至整个备份目录天剑到恢复目录中,如:
RMAN> catalog datafilecopy '/backup/rman/system01.dbf';
RMAN> catalog archivelog   '/backup/rman/log_database_1.arc','/backup/rman/log_database_2.arc';
RMAN> catalog backuppiece  '/backup/rman/backup_0808.bkp';
RMAN> catalog start with   '/backup/rman/database/';
注:要谨慎使用catalog start with命令。必须在目录路径结尾加上斜杠。如果使用/backup/rman/database,则Oracle将遍历:/backup/rman/database中所有可能的database目录组合。这可能包括如下目录:/backup/rman/database、/backup/rman/database-123,或者/backup/rman/database-xx等等。使用斜杠后缀则表示只要找/backup/rman/database/。
注:在window中为反斜杠\

7、在恢复目录中取消数据库注册
同样是使用RMAN根据登录目标数据库和Catalog数据库,然后执行如下命令,需要回答yes:
[oracle@zhs10g ~]$ rman target='BACKUP/BACKUP@UTF10G' catalog=ctlg/ctlg@bcatalog
RMAN> unregister database;

database name is "UTF10G" and DBID is 1585746538

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


如果目标数据库已经删除,并且希望从恢复目录中彻底删除该数据库,则在大多数情况下只需要知道希望取消注册的数据库的名称。如,希望取消注册utf10g数据库,则可以在连接到恢复目录中执行如下命令:
[oracle@zhs10g ~]$ rman catalog=ctlg/ctlg@bcatalog


Recovery Manager: Release 10.2.0.4.0 - Production on Fri Aug 24 01:58:16 2012


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


connected to recovery catalog database


RMAN> unregister database utf10g;


database name is "utf10g" and DBID is 1585746538


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

RMAN>

如果恢复目录中有多个已相同名称注册的数据库时,就需要知道希望取消注册的数据库的DBID。然后在run代码块中运行unregister database命令,同时使用set dbid命令。如:
run
{
set dbid 1585746538;
unregister database UTF10G NOPROMPT;
}

相关内容