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

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

 Oracle 专家QQ群:60632593、60618621

 Oracle技术资料:《Oracle 9i RMAN参考使用手册》、《ORACLE10G备份与恢复》、《Oracle Database 10gRMAN备份与恢复

文章导航