在ORACLE的日常管理中,需要定期對備份進(jìn)行測試,以檢測備份文件是否可用。以下對常見的恢復(fù)場景進(jìn)行簡單介紹。
成都創(chuàng)新互聯(lián)公司,專注為中小企業(yè)提供官網(wǎng)建設(shè)、營銷型網(wǎng)站制作、自適應(yīng)網(wǎng)站建設(shè)、展示型網(wǎng)站制作、成都網(wǎng)站建設(shè)等服務(wù),幫助中小企業(yè)通過網(wǎng)站體現(xiàn)價(jià)值、有效益。幫助企業(yè)快速建站、解決網(wǎng)站建設(shè)與網(wǎng)站營銷推廣問題。
一、備份前的準(zhǔn)備工作
1、查看參數(shù)文件的位置
SQL> show parameter spfile;
2、查看控制文件的位置
SQL> show parameter control;
3、查看數(shù)據(jù)文件的位置
SQL> select name from v$datafile;
SQL> select file_name from dba_data_files;
4、查看臨時(shí)文件的位置
SQL> select name from v$tempfile;
SQL> select file_name from dba_temp_files;
5、查看dump目錄
SQL> show parameter dump;
6、查看數(shù)據(jù)庫名和dbid
SQL> select name,dbid from v$database;
二、執(zhí)行全庫備份
run{
backup database format 'd:\rman\full_%d_%T_%s_%p';
sql 'alter system archive log current';
sql 'alter system archive log current';
sql 'alter system archive log current';
backup archivelog all format 'd:\rman\arch_%d_%T_%s_%p';
backup current controlfile format 'd:\rman\ctl_%d_%T_%s_%p';
}
注:在備份時(shí)將控制文件自動(dòng)備份打開,這樣可以自動(dòng)備份控制文件和參數(shù)文件
三、常見情況的備份與恢復(fù)
1、一個(gè)數(shù)據(jù)文件損壞(非system和Undo)后的恢復(fù)實(shí)驗(yàn)
1) 進(jìn)入數(shù)據(jù)文件的目錄,刪除一個(gè)數(shù)據(jù)文件(非system和Undo文件)
注:windows環(huán)境下在未關(guān)閉數(shù)據(jù)庫的情況下數(shù)據(jù)文件無法刪除,可以先關(guān)閉數(shù)據(jù)庫再刪除文件
2)關(guān)閉數(shù)據(jù)庫,再次啟動(dòng),會(huì)報(bào)錯(cuò)
SQL> shutdown immediate;
SQL> startup;
3)啟動(dòng)數(shù)據(jù)庫到mount狀態(tài),并將刪除的數(shù)據(jù)文件設(shè)置為offline
SQL> alter database mount;
SQL> alter database datafile '刪掉文件的絕對路徑+文件名' offline;
4)打開數(shù)據(jù)庫
SQL> alter database open;
5)還原并恢復(fù)刪除的數(shù)據(jù)文件
RMAN> restore datafile '刪掉文件的絕對路徑+文件名';
RMAN> recover datafile '刪掉文件的絕對路徑+文件名';
6)將刪除的數(shù)據(jù)文件設(shè)置為online狀態(tài)
SQL> alter database datafile '刪掉文件的絕對路徑+文件名' online;
2、所有數(shù)據(jù)文件損壞后的恢復(fù)實(shí)驗(yàn)
1)進(jìn)入數(shù)據(jù)文件的目錄,刪除所有數(shù)據(jù)文件。
2)關(guān)閉數(shù)據(jù)庫
SQL> shutdown immediate;
注:在windows平臺(tái)下操作時(shí)步驟1和2需要反過來執(zhí)行。
3)啟動(dòng)數(shù)據(jù)庫到mount狀態(tài)
SQL> startup mount;
4)還原并恢復(fù)數(shù)據(jù)庫
RMAN> restore database;
RMAN> recover database;
5)打開數(shù)據(jù)庫
SQL> alter database open;
3、SYSTEM或者UNDO損壞后的恢復(fù)實(shí)驗(yàn)
1)進(jìn)入數(shù)據(jù)文件的目錄,刪除SYSTEM01.DBF文件
2)關(guān)閉數(shù)據(jù)庫。
SQL> shutdown immediate;
注:在windows平臺(tái)下操作時(shí)步驟1和2需要反過來執(zhí)行。
3)啟動(dòng)數(shù)據(jù)庫到mount狀態(tài)
SQL> startup mount;
4)還原并恢復(fù)SYSTEM01.DBF文件
RMAN> restore datafile '文件路徑/SYSTEM01.DBF';
RMAN> recover datafile '文件路徑/SYSTEM01.DBF';
5)打開數(shù)據(jù)庫
SQL> alter database open;
4、參數(shù)文件損壞后的恢復(fù)實(shí)驗(yàn)
1)全庫備份:數(shù)據(jù)文件+歸檔日志+控制文件+參數(shù)文件(過程略)
2)一致的關(guān)閉數(shù)據(jù)庫
SQL> shutdown immediate;
3)刪除參數(shù)文件initSID.ora和spfileSID.ora
4)自己在$ORACLE_HOME/dbs目錄手動(dòng)創(chuàng)建一個(gè)參數(shù)文件:initSID.ora,內(nèi)容如下
*.db_name='數(shù)據(jù)庫名'
5)啟動(dòng)數(shù)據(jù)庫到nomount狀態(tài)
SQL> startup nomount;
6)恢復(fù)參數(shù)文件
RMAN> restore spfile from 'd:\rman\c-xxxxxxxxx'; 注:c-xxxxx為最后備份的參數(shù)文件
7)關(guān)閉數(shù)據(jù)庫
SQL> shutdown immediate;
8)打開數(shù)據(jù)庫
SQL> startup;
5、控制文件損壞后的恢復(fù)
1)執(zhí)行一次全庫備份:數(shù)據(jù)文件+歸檔日志+控制文件+參數(shù)文件
2)一致的關(guān)閉數(shù)據(jù)庫
SQL> shutdown immediate;
3)刪除所有的控制文件
4)啟動(dòng)數(shù)據(jù)庫到nomount狀態(tài)
SQL> startup nomount;
5)恢復(fù)控制文件
RMAN> restore controlfile from 'd:\rman\ctl-xxxx'; 注:ctl-xxxx為最后備份的控制文件
6)啟動(dòng)數(shù)據(jù)庫到mount狀態(tài)
SQL> alter database mount;
7)恢復(fù)并還原數(shù)據(jù)庫
RMAN> restore database;
RMAN> recover database;
8)打開數(shù)據(jù)庫
SQL> alter database open resetlogs;
注:以resetlogs方式打開后,需要立即對數(shù)據(jù)庫做一個(gè)全庫備份。