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备份与恢复**》