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備份與恢復》