共計 11100 個字符,預(yù)計需要花費(fèi) 28 分鐘才能閱讀完成。
這篇“Oracle 備份恢復(fù)的方法有哪些”文章的知識點(diǎn)大部分人都不太理解,所以丸趣 TV 小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Oracle 備份恢復(fù)的方法有哪些”文章吧。
一、不同場景在滿足不同的條件時的恢復(fù)方法:
二、針對不同的恢復(fù)方法給出具體的恢復(fù)思路:
2.1、通過重新拷貝冗余的控制文件
1、在線或者關(guān)閉數(shù)據(jù)庫后損壞了其中部分控制文件;
2、shutdown abort 關(guān)閉數(shù)據(jù)庫;
3、拷貝其中一個完好的控制文件;
4、startup 啟動數(shù)據(jù)庫。
2.2、 通過備份控制文件進(jìn)行完全恢復(fù)
1、在線或者關(guān)閉數(shù)據(jù)庫后損壞了所有控制文件;
2、shutdown abort 關(guān)閉數(shù)據(jù)庫;
3、startup nomount 啟動數(shù)據(jù)庫;
4、restore controlfile from‘xxx’; 從備份中還原控制文件;
5、alter database mount;
5、recover database using backup controlfile until cancel,在執(zhí)行時選擇 auto 自動應(yīng)用所有的歸檔文件;
6、再次執(zhí)行 recover database using backup controlfile until cancel,選擇應(yīng)用未歸檔的 redo 文件;
7、alter database open resetlogs;
2.3、通過備份控制文件進(jìn)行不完全恢復(fù)
1、在線或者關(guān)閉數(shù)據(jù)庫后損壞了所有控制文件;
2、shutdown abort 關(guān)閉數(shù)據(jù)庫;
3、startup nomount 啟動數(shù)據(jù)庫;
4、restore controlfile from‘xxx’; 從備份中還原控制文件;
5、alter database mount;
6、recover database using backup controlfile until cancel,在執(zhí)行時選擇 auto 自動應(yīng)用盡可能多的歸檔文件;
7、alter database open resetlogs;
2.4、通過備份控制文件進(jìn)行重建的恢復(fù)(noresetlogs 方式)
1、在線或者關(guān)閉數(shù)據(jù)庫后損壞了所有控制文件;
2、shutdown abort 關(guān)閉數(shù)據(jù)庫;
3、startup nomount 啟動數(shù)據(jù)庫;
4、restore controlfile from‘xxx’; 從備份中還原控制文件;
5、alter database mount;
6、alter database backup controlfile to trace,生成創(chuàng)建控制文件的腳本;
7、shutdown immediate 并啟動到 startup nomount 狀態(tài);
8、使用 noresetlogs 方式創(chuàng)建控制文件;
9、recover database 恢復(fù)數(shù)據(jù)庫;
10、恢復(fù)完后通過 alter database open 打開數(shù)據(jù)庫;
2.5、通過備份控制文件進(jìn)行重建的恢復(fù)(resetlogs 方式)
1、在線或者關(guān)閉數(shù)據(jù)庫后損壞了所有控制文件;
2、shutdown abort 關(guān)閉數(shù)據(jù)庫;
3、startup nomount 啟動數(shù)據(jù)庫;
4、restore controlfile from‘xxx’; 從備份中還原控制文件;
5、alter database mount;
6、alter database backup controlfile to trace,生成創(chuàng)建控制文件的腳本;
7、shutdown immediate 并啟動到 startup nomount 狀態(tài)
8、使用 resetlogs 方式創(chuàng)建控制文件;
9、如果未歸檔的 redo 文件可用時,則直接 recover database,然后選用未歸檔的 redo 文件應(yīng)用,
最后通過 alter database open resetlogs 方式打開數(shù)據(jù)庫。
10、如果未歸檔的 redo 文件不可用時,則需要設(shè)置隱含參數(shù)_allow_resetlogs_corruption 為 true 跳
過一致性檢查,最后用 alter database open resetlogs 方式打開數(shù)據(jù)庫。
注:打開數(shù)據(jù)庫后很多情況下會出現(xiàn)需要推進(jìn) scn 的問題。
2.6、通過手工重建的控制文件進(jìn)行恢復(fù)(noresetlogs 方式)
1、在線或者關(guān)閉數(shù)據(jù)庫后損壞了所有控制文件;
2、shutdown abort 關(guān)閉數(shù)據(jù)庫;
3、startup nomount 啟動數(shù)據(jù)庫;
4、構(gòu)造控制文件;
下面的步驟參考 2.4 的第八步;
2.7、通過手工重建的控制文件進(jìn)行恢復(fù)(resetlogs 方式)
1、在線或者關(guān)閉數(shù)據(jù)庫后損壞了所有控制文件;
2、shutdown abort 關(guān)閉數(shù)據(jù)庫;
3、startup nomount 啟動數(shù)據(jù)庫;
4、構(gòu)造控制文件;
下面的步驟參考 2.5 的第八步;
三、模擬幾種恢復(fù)方法的操作:
下面主要對這三種恢復(fù)方法(通過備份控制文件進(jìn)行完全恢復(fù)、通過備份控制文件進(jìn)行重建的恢復(fù)(noresetlogs 方式)、通過備份控制文件進(jìn)行重建的恢復(fù)(resetlogs 方式))的操作模擬,因為其他的幾種恢復(fù)方法要么比較簡單要么跟這三種方法共通。
3.1、通過備份控制文件進(jìn)行完全恢復(fù)
1、查看數(shù)據(jù)庫基本信息和數(shù)據(jù)庫狀態(tài)
SQL show parameter db_name
NAME TYPE VALUE
———————————— ———– ——————————
db_name string leonliao
SQL show parameter control_files
NAME TYPE VALUE
———————————— ———– ——————————
control_files string /home/oracle/oradata/leonliao/
control01.ctl, /home/oracle/or
adata/leonliao/control02.ctl
SQL select open_mode from v$database;
OPEN_MODE
——————–
READ WRITE
2、備份控制文件
RMAN backup current controlfile;
3、數(shù)據(jù)庫在線時刪除所有控制文件
[oracle@leon1 leonliao]$ rm -rf control0*ctl
[oracle@leon1 leonliao]$ pwd
/home/oracle/oradata/leonliao
4、無法正常關(guān)閉數(shù)據(jù)庫只能 shutdown abort
SQL shutdown immediate
Database closed.
ORA-00210: cannot open the specified control file
ORA-00202: control file: /home/oracle/oradata/leonliao/control01.ctl
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
SQL shutdown abort
ORACLE instance shut down.
SQL
5、啟動數(shù)據(jù)庫到 nomount 狀態(tài)并還原備份的控制文件
SQL startup nomount
ORACLE instance started.
Total System Global Area 626327552 bytes
Fixed Size 2230952 bytes
Variable Size 184550744 bytes
Database Buffers 432013312 bytes
Redo Buffers 7532544 bytes
RMAN restore controlfile from /u01/app/oracle/dbs/01qvmql3_1_1
6、將數(shù)據(jù)庫啟動到 mount 狀態(tài)并開始恢復(fù)
SQL alter database mount;
Database altered.
SQL
SQL
SQL recover database using backup controlfile until cancel;
ORA-00279: change 1181770 generated at 03/05/2016 05:02:58 needed for thread 1
ORA-00289: suggestion : /home/oracle/oradata/leonliao/arch/1_6_905662043.dbf
ORA-00280: change 1181770 for thread 1 is in sequence #6
Specify log: {RET =suggested | filename | AUTO | CANCEL}
auto 選擇 auto,自動應(yīng)用所有的歸檔文件
ORA-00308: cannot open archived log
/home/oracle/oradata/leonliao/arch/1_6_905662043.dbf
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
ORA-00308: cannot open archived log
/home/oracle/oradata/leonliao/arch/1_6_905662043.dbf
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01152: file 1 was not restored from a sufficiently old backup
ORA-01110: data file 1: /home/oracle/oradata/leonliao/system01.dbf
SQL recover database using backup controlfile until cancel; 由于未歸檔的 redo 文件需要手動應(yīng)用
ORA-00279: change 1181770 generated at 03/05/2016 05:02:58 needed for thread 1
ORA-00289: suggestion : /home/oracle/oradata/leonliao/arch/1_6_905662043.dbf
ORA-00280: change 1181770 for thread 1 is in sequence #6
Specify log: {RET =suggested | filename | AUTO | CANCEL}
/home/oracle/oradata/leonliao/redo03.log 在關(guān)閉數(shù)據(jù)庫前可以查看當(dāng)前 current 的 redo 文件是哪一個,不清楚可以一個個應(yīng)用直到提示 Log applied 為止
Log applied.
Media recovery complete.
7、以 open resetlogs 方式打開數(shù)據(jù)庫
SQL alter database open resetlogs;
Database altered.
SQL
SQL select open_mode from v$database;
OPEN_MODE
——————–
READ WRITE
3.2、通過備份控制文件進(jìn)行重建的恢復(fù)(noresetlogs 方式)
1、查看數(shù)據(jù)庫基本信息和數(shù)據(jù)庫狀態(tài)
SQL show parameter db_name
NAME TYPE VALUE
———————————— ———– ——————————
db_name string leonliao
SQL show parameter control_files
NAME TYPE VALUE
———————————— ———– ——————————
control_files string /home/oracle/oradata/leonliao/
control01.ctl, /home/oracle/or
adata/leonliao/control02.ctl
SQL select open_mode from v$database;
OPEN_MODE
——————–
READ WRITE
2、備份控制文件
RMAN backup current controlfile;
3、數(shù)據(jù)庫在線時刪除所有控制文件
[oracle@leon1 leonliao]$ rm -rf control0*ctl
[oracle@leon1 leonliao]$ pwd
/home/oracle/oradata/leonliao
4、無法正常關(guān)閉數(shù)據(jù)庫只能 shutdown abort
SQL shutdown immediate
Database closed.
ORA-00210: cannot open the specified control file
ORA-00202: control file: /home/oracle/oradata/leonliao/control01.ctl
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
SQL shutdown abort
ORACLE instance shut down.
SQL
5、啟動數(shù)據(jù)庫到 nomount 狀態(tài)并還原備份的控制文件
SQL startup nomount
ORACLE instance started.
Total System Global Area 626327552 bytes
Fixed Size 2230952 bytes
Variable Size 184550744 bytes
Database Buffers 432013312 bytes
Redo Buffers 7532544 bytes
RMAN restore controlfile from /u01/app/oracle/dbs/03qvmrqj_1_1
6、將數(shù)據(jù)庫啟動到 mount 狀態(tài)并生成創(chuàng)建控制文件的腳本
SQL alter database mount;
Database altered.
SQL alter database backup controlfile to trace;
Database altered.
7、shutdown immediate 并啟動到 startup nomount 狀態(tài)創(chuàng)建控制文件
SQL shutdown immediate
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
SQL startup nomount
ORACLE instance started.
Total System Global Area 626327552 bytes
Fixed Size 2230952 bytes
Variable Size 184550744 bytes
Database Buffers 432013312 bytes
Redo Buffers 7532544 bytes
SQL CREATE CONTROLFILE REUSE DATABASE LEONLIAO NORESETLOGS ARCHIVELOG
2 MAXLOGFILES 16
3 MAXLOGMEMBERS 3
4 MAXDATAFILES 100
5 MAXINSTANCES 8
6 MAXLOGHISTORY 292
7 LOGFILE
8 GROUP 1 /home/oracle/oradata/leonliao/redo01.log SIZE 50M BLOCKSIZE 512,
9 GROUP 2 /home/oracle/oradata/leonliao/redo02.log SIZE 50M BLOCKSIZE 512,
10 GROUP 3 /home/oracle/oradata/leonliao/redo03.log SIZE 50M BLOCKSIZE 512
11 — STANDBY LOGFILE
12 DATAFILE
13 /home/oracle/oradata/leonliao/system01.dbf ,
14 /home/oracle/oradata/leonliao/sysaux01.dbf ,
15 /home/oracle/oradata/leonliao/undotbs01.dbf ,
16 /home/oracle/oradata/leonliao/users01.dbf
17 CHARACTER SET ZHS16GBK
18 ;
Control file created.
8、開始恢復(fù)
SQL recover database;
ORA-00283: recovery session canceled due to errors
ORA-00264: no recovery required
9、以 open 方式打開數(shù)據(jù)庫
SQL alter database open;
Database altered.
SQL select open_mode from v$database;
OPEN_MODE
——————–
READ WRITE
3.3、通過備份控制文件進(jìn)行重建的恢復(fù)(resetlogs 方式)
1、查看數(shù)據(jù)庫基本信息和數(shù)據(jù)庫狀態(tài)
SQL show parameter db_name
NAME TYPE VALUE
———————————— ———– ——————————
db_name string leonliao
SQL show parameter control_files
NAME TYPE VALUE
———————————— ———– ——————————
control_files string /home/oracle/oradata/leonliao/
control01.ctl, /home/oracle/or
adata/leonliao/control02.ctl
SQL select * from v$logfile;
GROUP# STATUS TYPE MEMBER IS_
———- ——- ——- ————————————————– —
1 ONLINE /home/oracle/oradata/leonliao/redo01.log NO
3 ONLINE /home/oracle/oradata/leonliao/redo03.log NO
2 ONLINE /home/oracle/oradata/leonliao/redo02.log NO
SQL select open_mode from v$database;
OPEN_MODE
——————–
READ WRITE
2、備份控制文件
RMAN backup current controlfile;
3、數(shù)據(jù)庫在線時刪除所有控制文件和 redo 文件
[oracle@leon1 leonliao]$ rm -rf control0*ctl
[oracle@leon1 leonliao]$ rm -rf redo0*log
[oracle@leon1 leonliao]$ pwd
/home/oracle/oradata/leonliao
4、無法正常關(guān)閉數(shù)據(jù)庫只能 shutdown abort
SQL shutdown immediate
Database closed.
ORA-00210: cannot open the specified control file
ORA-00202: control file: /home/oracle/oradata/leonliao/control01.ctl
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
SQL shutdown abort
ORACLE instance shut down.
SQL
5、啟動數(shù)據(jù)庫到 nomount 狀態(tài)并還原備份的控制文件
SQL startup nomount
ORACLE instance started.
Total System Global Area 626327552 bytes
Fixed Size 2230952 bytes
Variable Size 184550744 bytes
Database Buffers 432013312 bytes
Redo Buffers 7532544 bytes
RMAN restore controlfile from /u01/app/oracle/dbs/01qvmtbj_1_1
6、將數(shù)據(jù)庫啟動到 mount 狀態(tài)并生成創(chuàng)建控制文件的腳本
SQL alter database mount;
Database altered.
SQL alter database backup controlfile to trace;
Database altered.
7、shutdown immediate 并啟動到 startup nomount 狀態(tài)創(chuàng)建 resetlogs 的控制文件
SQL shutdown immediate
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
SQL startup nomount
ORACLE instance started.
Total System Global Area 626327552 bytes
Fixed Size 2230952 bytes
Variable Size 184550744 bytes
Database Buffers 432013312 bytes
Redo Buffers 7532544 bytes
SQL CREATE CONTROLFILE REUSE DATABASE LEONLIAO RESETLOGS ARCHIVELOG
2 MAXLOGFILES 16
3 MAXLOGMEMBERS 3
4 MAXDATAFILES 100
5 MAXINSTANCES 8
6 MAXLOGHISTORY 292
7 LOGFILE
8 GROUP 1 /home/oracle/oradata/leonliao/redo01.log SIZE 50M BLOCKSIZE 512,
9 GROUP 2 /home/oracle/oradata/leonliao/redo02.log SIZE 50M BLOCKSIZE 512,
10 GROUP 3 /home/oracle/oradata/leonliao/redo03.log SIZE 50M BLOCKSIZE 512
11 — STANDBY LOGFILE
12 DATAFILE
13 /home/oracle/oradata/leonliao/system01.dbf ,
14 /home/oracle/oradata/leonliao/sysaux01.dbf ,
15 /home/oracle/oradata/leonliao/undotbs01.dbf ,
16 /home/oracle/oradata/leonliao/users01.dbf
17 CHARACTER SET ZHS16GBK
18 ;
Control file created.
8、因為所有 redo 文件都刪除了,無法恢復(fù),所以會出現(xiàn)一致性的問題,通過設(shè)置隱含參數(shù)_allow_resetlogs_corruption 為 true 跳過一致性檢查;
SQL alter system set _allow_resetlogs_corruption =true scope=spfile;
System altered.
SQL shutdown immediate
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
SQL startup mount
ORACLE instance started.
Total System Global Area 626327552 bytes
Fixed Size 2230952 bytes
Variable Size 184550744 bytes
Database Buffers 432013312 bytes
Redo Buffers 7532544 bytes
Database mounted.
9、以 open resetlogs 方式打開數(shù)據(jù)庫
SQL alter database open resetlogs;
Database altered.
SQL select open_mode from v$database;
OPEN_MODE
——————–
READ WRITE
以上就是關(guān)于“Oracle 備份恢復(fù)的方法有哪些”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望丸趣 TV 小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注丸趣 TV 行業(yè)資訊頻道。