Oracle版本9因?yàn)榭刂莆募淖詣?dòng)備份,可以很大程度成不需要使用恢復(fù)目錄,但是使用恢復(fù)目錄的也有如下好處
·有些命令只被恢復(fù)目錄支持(對(duì)于9i來(lái)說(shuō),也就是專門操作恢復(fù)目錄的語(yǔ)句而已)
·能保留更多的歷史備份信息
·一個(gè)恢復(fù)目錄能管理與備份多個(gè)目標(biāo)數(shù)據(jù)庫(kù)
·如果在9i以前,丟失控制文件而沒(méi)有恢復(fù)目錄將是難以恢復(fù)的
·如果沒(méi)有恢復(fù)目錄,而且發(fā)生了結(jié)構(gòu)上的改變,時(shí)間點(diǎn)的恢復(fù)需要小心操作
·能存儲(chǔ)備份與恢復(fù)的腳本
可以看到,主要是可以保留更多的備份信息與方便的管理多個(gè)目標(biāo)數(shù)據(jù)庫(kù),這個(gè)在眾多目標(biāo)數(shù)據(jù)庫(kù)的情況下,是可以考慮的。
一、創(chuàng)建恢復(fù)目錄
注意,恢復(fù)目錄不要與目標(biāo)數(shù)據(jù)庫(kù)在同一臺(tái)機(jī)器上,而且大小要求比較小。
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;
恢復(fù)目錄可以采用如下命令升級(jí)與刪除
RMAN> UPGRADE CATALOG;
RMAN> DROP CATALOG;
二、恢復(fù)目錄管理
恢復(fù)目錄支持如下的命令
{CREATE|UPGRADE|DROP} CATALOG
{CREATE|DELETE|REPLACE|PRINT} SCRIPT
LIST INCARNATION
REGISTER DATABASE
REPORT SCHEMA AT TIME
RESET DATABASE
RESYNC CATALOG
1、Resync命令
Resync可以同步數(shù)據(jù)庫(kù)與恢復(fù)目錄之間的信息,在實(shí)際情況下,rman一般可以自動(dòng)同步。
在如下情況下需要同步
·數(shù)據(jù)庫(kù)物理結(jié)構(gòu)的改變
·數(shù)據(jù)文件增加或者是改變大小
·表空間刪除
·回滾段的創(chuàng)建與刪除
·每產(chǎn)生10個(gè)歸檔日志
2、Reset 命令
目標(biāo)數(shù)據(jù)庫(kù)resetlogs之后,需要重新設(shè)置恢復(fù)目錄。Reset命令就用來(lái)重新設(shè)置恢復(fù)目錄。
三、恢復(fù)目錄視圖
恢復(fù)目錄本身有一組視圖,用于存放目標(biāo)數(shù)據(jù)庫(kù)與備份信息,如恢復(fù)目錄的相關(guān)視圖
RC_DATABASE
RC_DATAFILE
RC_STORED_SCRIPT 20
RC_STORED_SCRIPT_LINE
RC_TABLESPACE
可以通過(guò)如下命令來(lái)查看相關(guān)信息
select * from rc_database;
四、存儲(chǔ)腳本
存儲(chǔ)腳本
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';
}
執(zhí)行腳本
RMAN> run {execute script Level0backup;}
更新腳本
RMAN> replace script level0backup{
……
}
刪除腳本
RMAN> delete script Level0backup;
查看腳本
RMAN> print script level0backup;
一個(gè)實(shí)用腳本,包括備份RAC數(shù)據(jù)庫(kù)與歸檔日志的 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社區(qū)PDM中文網(wǎng):http://www.pdmcn.com/bbs,
Oracle 專家QQ群:60632593、60618621
Oracle技術(shù)資料:《Oracle 9i RMAN參考使用手冊(cè)》、《ORACLE10G備份與恢復(fù)》、《Oracle Database 10gRMAN備份與恢復(fù)》