RMAN简明教程之七——恢复目录与恢复目录的使用

最后更新于:2022-04-01 11:45:13

Oracle版本9因为控制文件的自动备份,可以很大程度成不需要使用恢复目录,但是使用恢复目录的也有如下好处 ·有些命令只被恢复目录支持(对于9i来说,也就是专门操作恢复目录的语句而已) ·能保留更多的历史备份信息 ·一个恢复目录能管理与备份多个目标数据库 ·如果在9i以前,丢失控制文件而没有恢复目录将是难以恢复的 ·如果没有恢复目录,而且发生了结构上的改变,时间点的恢复需要小心操作 ·能存储备份与恢复的脚本 可以看到,主要是可以保留更多的备份信息与方便的管理多个目标数据库,这个在众多目标数据库的情况下,是可以考虑的。   ## 一、创建恢复目录 注意,恢复目录不要与目标数据库在同一台机器上,而且大小要求比较小。 ~~~ SQL> create user RMAN identified by RMAN 2 temporary tablespace TEMP 3 default tablespace RCVCAT 4 quota unlimited on RCVCAT; SQL> grant recovery_catalog_owner to RMAN; RMAN> create catalog RMAN> register database; ~~~ 恢复目录可以采用如下命令升级与删除 ~~~ RMAN> UPGRADE CATALOG; RMAN> DROP CATALOG; ~~~ ## 二、恢复目录管理 恢复目录支持如下的命令 ~~~ {CREATE|UPGRADE|DROP} CATALOG {CREATE|DELETE|REPLACE|PRINT} SCRIPT LIST INCARNATION REGISTER DATABASE REPORT SCHEMA AT TIME RESET DATABASE RESYNC CATALOG ~~~ 1、Resync命令 Resync可以同步数据库与恢复目录之间的信息,在实际情况下,rman一般可以自动同步。 在如下情况下需要同步 ·数据库物理结构的改变 ·数据文件增加或者是改变大小 ·表空间删除 ·回滚段的创建与删除 ·每产生10个归档日志 2、Reset  命令 目标数据库resetlogs之后,需要重新设置恢复目录。Reset命令就用来重新设置恢复目录。 ## 三、恢复目录视图 恢复目录本身有一组视图,用于存放目标数据库与备份信息,如恢复目录的相关视图 ~~~ RC_DATABASE RC_DATAFILE RC_STORED_SCRIPT   20 RC_STORED_SCRIPT_LINE RC_TABLESPACE ~~~ 可以通过如下命令来查看相关信息 `select * from rc_database; ` ## 四、存储脚本 存储脚本 ~~~ RMAN> creata script level0backp{        backup        incremental level 0        format '/u01/db01/backup/%U'        filesperset 5        database plus archivelog delete input;        sql 'alter database archive log current';        } **执行脚本 **RMAN> run {execute script Level0backup;} **更新脚本 **RMAN> replace script level0backup{       ……        } **删除脚本** RMAN> delete script Level0backup; **查看脚本** RMAN> print script level0backup;    ~~~ 一个实用脚本,包括备份RAC数据库与归档日志的 shell脚本 ~~~ [oracle@db worksh]$ more rmanback.sh  #!/bin/sh #set env export ORACLE_HOME=/opt/oracle/product/9.2 export ORACLE_SID=db2in1 export NLS_LANG="AMERICAN_AMERICA.zhs16gbk" export PATH=$PATH:$ORACLE_HOME/bin:/sbin:/usr/sbin   echo "-----------------------------start-----------------------------";date #backup start $ORACLE_HOME/bin/rman <<EOF connect target delete noprompt obsolete; backup database include current controlfile format '/rmanback/db2/%U_%s.bak' filesperset = 2;   run{ ALLOCATE CHANNEL node_c1 DEVICE TYPE DISK CONNECT ['sys/pass@db1in1'](#); ALLOCATE CHANNEL node_c2 DEVICE TYPE DISK CONNECT ['sys/pass@db2in2'](#); sql 'ALTER SYSTEM ARCHIVE LOG CURRENT'; backup archivelog all delete input format '/ rmanback/db2/%U_%s.bak' filesperset = 5; }   list backup; exit; EOF echo "------------------------------end------------------------------";date   ~~~   [Oracle社区PDM中文网](http://www.pdmcn.com/bbs):[http://www.pdmcn.com/bbs](http://www.pdmcn.com/bbs),   Oracle 专家QQ群:60632593、60618621  Oracle技术资料:《Oracle 9i RMAN参考使用手册》、《ORACLE10G备份与恢复》、《**Oracle Database 10gRMAN备份与恢复**》
';