一、部分備份數據文件損壞(除了control file和online redo)
完全恢復
前提條件:
曾對系統文件作過BACKUP。且備份后的所有的AF必須存在。RECOVR 期間用戶不能訪問數據庫。
恢復結果:出現故障時已提交的數據能被RECOVER,未提交的資料不能被RECOVER
1、系統表空間損壞(system tablesapce)
故障模擬:
作數據庫完全熱備,所有AF存在
作數據庫完全熱備,所有AF存在
SQL>archive log list
數據庫日志模式 存檔模式
自動存檔 啟用
存檔終點 e:Softwareoracle9iadminoratestarchive2
最早的概要日志序列 17
下一個存檔日志序列 19
當前日志序列 19
故障模擬
SQL>alter system checkpoint;
SQL>host copy c:dd.txt E:Softwareoracle9ioradataoratestSYSEM01.DBF
SQL> alter system checkpoint;
alter system checkpoint
*
ERROR 位於第 1 行:
ORA-03113: 通信通道的文件結束
SQL>connect / as sysdba
SQL> startup
ORACLE 例程已經啟動。
SQL>host copy c:dd.txt E:Softwareoracle9ioradataoratestSYSEM01.DBF
SQL> alter system checkpoint;
alter system checkpoint
*
ERROR 位於第 1 行:
ORA-03113: 通信通道的文件結束
SQL>connect / as sysdba
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
數據庫裝載完畢。
ORA-01122: 數據庫文件 1 驗證失敗
ORA-01110: 數據文件 1: 'E:SOFTWAREORACLE9IORADATAORATESTSYSTEM01.DBF'
ORA-01251: 文件號1的未知文件標題版本讀取
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
數據庫裝載完畢。
ORA-01122: 數據庫文件 1 驗證失敗
ORA-01110: 數據文件 1: 'E:SOFTWAREORACLE9IORADATAORATESTSYSTEM01.DBF'
ORA-01251: 文件號1的未知文件標題版本讀取
SQL>shudown immediate;
SQL>host copy e:backupSYSTEM01.bak E:Softwareoracle9ioradataoratestSYSTEM01.DBF
SQL> startup mount;
ORACLE 例程已經啟動。
SQL>host copy e:backupSYSTEM01.bak E:Softwareoracle9ioradataoratestSYSTEM01.DBF
SQL> startup mount;
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
數據庫裝載完畢。
SQL> alter database open; //打開時提示需要介質恢復
alter database open
*
ERROR 位於第 1 行:
ORA-01113: 文件 1 需要介質恢復
ORA-01110: 數據文件 1: 'E:SOFTWAREORACLE9IORADATAORATESTSYSTEM01.DBF'
SQL> recover datafile 1;
ORA-00279: 更改 734610 (在 04/26/2005 08:50:12 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_8_001.ARC
ORA-00280: 更改 734610 對於線程 1 是按序列 # 8 進行的
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
數據庫裝載完畢。
SQL> alter database open; //打開時提示需要介質恢復
alter database open
*
ERROR 位於第 1 行:
ORA-01113: 文件 1 需要介質恢復
ORA-01110: 數據文件 1: 'E:SOFTWAREORACLE9IORADATAORATESTSYSTEM01.DBF'
SQL> recover datafile 1;
ORA-00279: 更改 734610 (在 04/26/2005 08:50:12 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_8_001.ARC
ORA-00280: 更改 734610 對於線程 1 是按序列 # 8 進行的
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
auto //指定為auto自動
ORA-00279: 更改 734775 (在 04/26/2005 08:51:09 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_9_001.ARC
ORA-00280: 更改 734775 對於線程 1 是按序列 # 9 進行的
ORA-00278: 此恢復不再需要日志文件 'E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_8_001.ARC'
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_9_001.ARC
ORA-00280: 更改 734775 對於線程 1 是按序列 # 9 進行的
ORA-00278: 此恢復不再需要日志文件 'E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_8_001.ARC'
ORA-00279: 更改 734787 (在 04/26/2005 08:51:14 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_10_001.ARC
ORA-00280: 更改 734787 對於線程 1 是按序列 # 10 進行的
ORA-00278: 此恢復不再需要日志文件 'E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_9_001.ARC'
ORA-00279: 更改 734874 (在 04/26/2005 08:51:35 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_11_001.ARC
ORA-00280: 更改 734874 對於線程 1 是按序列 # 11 進行的
ORA-00278: 此恢復不再需要日志文件 'E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_10_001.ARC'
ORA-00279: 更改 734884 (在 04/26/2005 08:51:40 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_12_001.ARC
ORA-00280: 更改 734884 對於線程 1 是按序列 # 12 進行的
ORA-00278: 此恢復不再需要日志文件 'E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_11_001.ARC'
ORA-00279: 更改 734894 (在 04/26/2005 08:51:46 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_13_001.ARC
ORA-00280: 更改 734894 對於線程 1 是按序列 # 13 進行的
ORA-00278: 此恢復不再需要日志文件 'E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_12_001.ARC'
ORA-00279: 更改 734897 (在 04/26/2005 08:51:47 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_14_001.ARC
ORA-00280: 更改 734897 對於線程 1 是按序列 # 14 進行的
ORA-00278: 此恢復不再需要日志文件 'E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_13_001.ARC'
ORA-00279: 更改 734905 (在 04/26/2005 08:51:53 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_15_001.ARC
ORA-00280: 更改 734905 對於線程 1 是按序列 # 15 進行的
ORA-00278: 此恢復不再需要日志文件 'E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_14_001.ARC'
ORA-00279: 更改 741087 (在 04/26/2005 09:32:00 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_16_001.ARC
ORA-00280: 更改 741087 對於線程 1 是按序列 # 16 進行的
ORA-00278: 此恢復不再需要日志文件 'E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_15_001.ARC'
已應用的日志。
完成介質恢復。
SQL> alter database open;
SQL> archive log list;
數據庫日志模式 存檔模式
自動存檔 啟用
存檔終點 e:Softwareoracle9iadminoratestarchive2
最早的概要日志序列 18
下一個存檔日志序列 20
當前日志序列 20
SQL>
2、undo表空間損壞
SQL> show parameter undo; //查看undo表空間
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string AUTO
undo_retention integer 10800
undo_suppress_errors boolean FALSE
undo_tablespace string UNDOTBS1
SQL>
SQL> col file_name for a60;
SQL> col tablespace_name for a20;
SQL> select file_name,tablespace_name from dba_data_files;
------------------------------------ ----------- ------------------------------
undo_management string AUTO
undo_retention integer 10800
undo_suppress_errors boolean FALSE
undo_tablespace string UNDOTBS1
SQL>
SQL> col file_name for a60;
SQL> col tablespace_name for a20;
SQL> select file_name,tablespace_name from dba_data_files;
FILE_NAME TABLESPACE_NAME
------------------------------------------------------------ --------------------
E:SOFTWAREORACLE9IORADATAORATESTSYSTEM01.DBF SYSTEM
E:SOFTWAREORACLE9IORADATAORATESTUNDOTBS01.DBF UNDOTBS1
E:SOFTWAREORACLE9IORADATAORATESTCWMLITE01.DBF CWMLITE
E:SOFTWAREORACLE9IORADATAORATESTDRSYS01.DBF DRSYS
E:SOFTWAREORACLE9IORADATAORATESTEXAMPLE01.DBF EXAMPLE
E:SOFTWAREORACLE9IORADATAORATESTINDX01.DBF INDX
E:SOFTWAREORACLE9IORADATAORATESTODM01.DBF ODM
E:SOFTWAREORACLE9IORADATAORATESTTOOLS01.DBF TOOLS
E:SOFTWAREORACLE9IORADATAORATESTUSERS01.DBF USERS
E:SOFTWAREORACLE9IORADATAORATESTXDB01.DBF XDB
E:SOFTWAREORACLE9IORADATAORATESTUSERS02.DBF USERS
SQL>
------------------------------------------------------------ --------------------
E:SOFTWAREORACLE9IORADATAORATESTSYSTEM01.DBF SYSTEM
E:SOFTWAREORACLE9IORADATAORATESTUNDOTBS01.DBF UNDOTBS1
E:SOFTWAREORACLE9IORADATAORATESTCWMLITE01.DBF CWMLITE
E:SOFTWAREORACLE9IORADATAORATESTDRSYS01.DBF DRSYS
E:SOFTWAREORACLE9IORADATAORATESTEXAMPLE01.DBF EXAMPLE
E:SOFTWAREORACLE9IORADATAORATESTINDX01.DBF INDX
E:SOFTWAREORACLE9IORADATAORATESTODM01.DBF ODM
E:SOFTWAREORACLE9IORADATAORATESTTOOLS01.DBF TOOLS
E:SOFTWAREORACLE9IORADATAORATESTUSERS01.DBF USERS
E:SOFTWAREORACLE9IORADATAORATESTXDB01.DBF XDB
E:SOFTWAREORACLE9IORADATAORATESTUSERS02.DBF USERS
SQL>
故障模擬
SQL>host copy d:backuphotbackup.sql E:Softwareoracle9ioradataoratestUNDOTBS01.DBF
SQL> shutdown immediate;
ORA-01122: 數據庫文件 2 驗證失敗
ORA-01110: 數據文件 2: 'E:SOFTWAREORACLE9IORADATAORATESTUNDOTBS01.DBF'
ORA-01251: 文件號2的未知文件標題版本讀取
SQL> shutdown abort;
ORACLE 例程已經關閉。
SQL>
SQL> startup
ORACLE 例程已經啟動。
SQL>host copy d:backuphotbackup.sql E:Softwareoracle9ioradataoratestUNDOTBS01.DBF
SQL> shutdown immediate;
ORA-01122: 數據庫文件 2 驗證失敗
ORA-01110: 數據文件 2: 'E:SOFTWAREORACLE9IORADATAORATESTUNDOTBS01.DBF'
ORA-01251: 文件號2的未知文件標題版本讀取
SQL> shutdown abort;
ORACLE 例程已經關閉。
SQL>
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
數據庫裝載完畢。
ORA-01122: 數據庫文件 2 驗證失敗
ORA-01110: 數據文件 2: 'E:SOFTWAREORACLE9IORADATAORATESTUNDOTBS01.DBF'
ORA-01251: 文件號2的未知文件標題版本讀取
SQL>shutdown abort
SQL>host copy e:backupUNDOTBS01.bak E:SOFTWAREORACLE9IORADATAORATESTUNDOTBS01.DBF //講備份文件拷貝過去
SQL>startup mount
SQL> select * from v$recover_file; //查看需要恢復的文件的狀態
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
數據庫裝載完畢。
ORA-01122: 數據庫文件 2 驗證失敗
ORA-01110: 數據文件 2: 'E:SOFTWAREORACLE9IORADATAORATESTUNDOTBS01.DBF'
ORA-01251: 文件號2的未知文件標題版本讀取
SQL>shutdown abort
SQL>host copy e:backupUNDOTBS01.bak E:SOFTWAREORACLE9IORADATAORATESTUNDOTBS01.DBF //講備份文件拷貝過去
SQL>startup mount
SQL> select * from v$recover_file; //查看需要恢復的文件的狀態
FILE# ONLINE ONLINE_ ERROR CHANGE# TIME
---------- ------- ------- ----------------------------------------------------------------- ---------- ----------
2 ONLINE ONLINE WRONG FILE TYPE 0
也可以用alter database datafile 2 offline 將該文件離線
然后在恢復,但是恢復完成后用alter database datafile 2 online 使undo在線
---------- ------- ------- ----------------------------------------------------------------- ---------- ----------
2 ONLINE ONLINE WRONG FILE TYPE 0
也可以用alter database datafile 2 offline 將該文件離線
然后在恢復,但是恢復完成后用alter database datafile 2 online 使undo在線
SQL> recover datafile 2;
ORA-00279: 更改 734789 (在 04/26/2005 08:51:15 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_10_001.ARC
ORA-00280: 更改 734789 對於線程 1 是按序列 # 10 進行的
ORA-00279: 更改 734789 (在 04/26/2005 08:51:15 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_10_001.ARC
ORA-00280: 更改 734789 對於線程 1 是按序列 # 10 進行的
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: 更改 734874 (在 04/26/2005 08:51:35 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_11_001.ARC
ORA-00280: 更改 734874 對於線程 1 是按序列 # 11 進行的
ORA-00278: 此恢復不再需要日志文件 'E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_10_001.ARC'
ORA-00279: 更改 734884 (在 04/26/2005 08:51:40 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_12_001.ARC
ORA-00280: 更改 734884 對於線程 1 是按序列 # 12 進行的
ORA-00278: 此恢復不再需要日志文件 'E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_11_001.ARC'
ORA-00279: 更改 734894 (在 04/26/2005 08:51:46 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_13_001.ARC
ORA-00280: 更改 734894 對於線程 1 是按序列 # 13 進行的
ORA-00278: 此恢復不再需要日志文件 'E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_12_001.ARC'
ORA-00279: 更改 734897 (在 04/26/2005 08:51:47 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_14_001.ARC
ORA-00280: 更改 734897 對於線程 1 是按序列 # 14 進行的
ORA-00278: 此恢復不再需要日志文件 'E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_13_001.ARC'
ORA-00279: 更改 734905 (在 04/26/2005 08:51:53 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_15_001.ARC
ORA-00280: 更改 734905 對於線程 1 是按序列 # 15 進行的
ORA-00278: 此恢復不再需要日志文件 'E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_14_001.ARC'
ORA-00279: 更改 741087 (在 04/26/2005 09:32:00 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_16_001.ARC
ORA-00280: 更改 741087 對於線程 1 是按序列 # 16 進行的
ORA-00278: 此恢復不再需要日志文件 'E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_15_001.ARC'
ORA-00279: 更改 741732 (在 04/26/2005 09:36:04 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_17_001.ARC
ORA-00280: 更改 741732 對於線程 1 是按序列 # 17 進行的
ORA-00278: 此恢復不再需要日志文件 'E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_16_001.ARC'
已應用的日志。
完成介質恢復。
SQL>
3、非系統(system) 表空間數據文件損壞
要求:DATAFILE備份后的所有AF必須存在。RECOVER期間充許用戶正常使用未出故障的TABLESPACE。
結果:出故障時,屬於故障數據文件且未提交的數據不能RECOVER。
當然可以停掉數據庫恢復,恢復跟恢復系統表空間一樣,這里只模擬用戶正常使用的情況。
SQL> host copy d:backupaa.txt E:Softwareoracle9ioradataoratestUSERS01.DBF
已復制 1 個文件。
已復制 1 個文件。
SQL> host copy d:backupaa.txt E:Softwareoracle9ioradataoratestUSERS02.DBF
已復制 1 個文件。
SQL> select * from test;
select * from test
*
ERROR 位於第 1 行:
ORA-01115: 從文件 11 讀取塊時出現 IO 錯誤 (塊 # 12)
ORA-01110: 數據文件 11: 'E:SOFTWAREORACLE9IORADATAORATESTUSERS02.DBF'
ORA-27091: skgfqio: 無法進行 I/O 操作
ORA-27070: skgfdisp: 異步讀取/寫入失敗
OSD-04006: ReadFile() 失敗, 無法讀取文件
O/S-Error: (OS 38) 到達文件結尾。
SQL>
SQL>select d.file#,d.name,d.status,h.status from v$datafile d,v$datafile_header h where d.file#=h.file# //查看文件狀態
FILE# NAME STATUS STATUS
--------- ---------------------------------------- ------- -------
1 E:SOFTWAREORACLE9IORADATAORATESTSYS SYSTEM ONLINE
TEM01.DBF
已復制 1 個文件。
SQL> select * from test;
select * from test
*
ERROR 位於第 1 行:
ORA-01115: 從文件 11 讀取塊時出現 IO 錯誤 (塊 # 12)
ORA-01110: 數據文件 11: 'E:SOFTWAREORACLE9IORADATAORATESTUSERS02.DBF'
ORA-27091: skgfqio: 無法進行 I/O 操作
ORA-27070: skgfdisp: 異步讀取/寫入失敗
OSD-04006: ReadFile() 失敗, 無法讀取文件
O/S-Error: (OS 38) 到達文件結尾。
SQL>
SQL>select d.file#,d.name,d.status,h.status from v$datafile d,v$datafile_header h where d.file#=h.file# //查看文件狀態
FILE# NAME STATUS STATUS
--------- ---------------------------------------- ------- -------
1 E:SOFTWAREORACLE9IORADATAORATESTSYS SYSTEM ONLINE
TEM01.DBF
2 E:SOFTWAREORACLE9IORADATAORATESTUND ONLINE ONLINE
OTBS01.DBF
OTBS01.DBF
3 E:SOFTWAREORACLE9IORADATAORATESTCWM ONLINE ONLINE
LITE01.DBF
LITE01.DBF
4 E:SOFTWAREORACLE9IORADATAORATESTDRS ONLINE ONLINE
YS01.DBF
YS01.DBF
FILE# NAME STATUS STATUS
--------- ---------------------------------------- ------- -------
--------- ---------------------------------------- ------- -------
5 E:SOFTWAREORACLE9IORADATAORATESTEXA ONLINE ONLINE
MPLE01.DBF
MPLE01.DBF
6 E:SOFTWAREORACLE9IORADATAORATESTIND ONLINE ONLINE
X01.DBF
X01.DBF
7 E:SOFTWAREORACLE9IORADATAORATESTODM ONLINE ONLINE
01.DBF
01.DBF
8 E:SOFTWAREORACLE9IORADATAORATESTTOO ONLINE ONLINE
FILE# NAME STATUS STATUS
--------- ---------------------------------------- ------- -------
LS01.DBF
--------- ---------------------------------------- ------- -------
LS01.DBF
9 E:SOFTWAREORACLE9IORADATAORATESTUSE ONLINE ONLINE
RS01.DBF
RS01.DBF
10 E:SOFTWAREORACLE9IORADATAORATESTXDB ONLINE ONLINE
01.DBF
01.DBF
11 E:SOFTWAREORACLE9IORADATAORATESTUSE ONLINE ONLINE
RS02.DBF
SQL> alter database datafile 9 offline ;
SQL> alter database datafile 11 offline ;
SQL> select d.file#,d.name,d.status,h.status from v$datafile d,v$datafile_header h where d.file#=h.file#
RS02.DBF
SQL> alter database datafile 9 offline ;
SQL> alter database datafile 11 offline ;
SQL> select d.file#,d.name,d.status,h.status from v$datafile d,v$datafile_header h where d.file#=h.file#
FILE# NAME STATUS STATUS
---------- ---------------------------------------- ------- -------
---------- ---------------------------------------- ------- -------
9 E:SOFTWAREORACLE9IORADATAORATESTUSE RECOVER OFFLINE
RS01.DBF
RS01.DBF
10 E:SOFTWAREORACLE9IORADATAORATESTXDB ONLINE ONLINE
01.DBF
01.DBF
11 E:SOFTWAREORACLE9IORADATAORATESTUSE RECOVER OFFLINE
RS02.DBF
RS02.DBF
SQL>host copy e:backupUSERS01.bak E:SOFTWAREORACLE9IORADATAORATESTUSERS01.DBF
SQL>host copy e:backupUSERS02.bak E:SOFTWAREORACLE9IORADATAORATESTUSERS02.DBF
SQL>recover datafile 9;
auto
...
已應用的日志。
完成介質恢復。
SQL>recover datafile 11;
auto
....
已應用的日志。
完成介質恢復。
SQL>alter database datafile 9 online;
SQL>alter database datafile 11 online;
SQL>host copy e:backupUSERS02.bak E:SOFTWAREORACLE9IORADATAORATESTUSERS02.DBF
SQL>recover datafile 9;
auto
...
已應用的日志。
完成介質恢復。
SQL>recover datafile 11;
auto
....
已應用的日志。
完成介質恢復。
SQL>alter database datafile 9 online;
SQL>alter database datafile 11 online;
SQL> select * from test;
A B
---------- -
1 1
1 1
2 2
SQL>
---------- -
1 1
1 1
2 2
SQL>
4、普通文件損壞,沒有數據文件備份
要求:檔建立后,所有的AF必須存在。且檔不是SYSTEM的檔。
這里的AF存在的意思是,從這個檔建立之后的AF文件。
故障模擬:
SQL>create tablespace abc datafile 'E:SOFTWAREORACLE9IORADATAORATESTabc.dbf' size 5M ;
SQL>select d.file#,d.name,d.status,h.status from v$datafile d,v$datafile_header h where d.file#=h.file#;
FILE# NAME STATUS STATUS
-------- ---------------------------------------- ------- -------
12 E:SOFTWAREORACLE9IORADATAORATESTABC ONLINE ONLINE
.DBF
SQL>archive log list
數據庫日志模式 存檔模式
自動存檔 啟用
存檔終點 e:Softwareoracle9iadminoratestarchive2
最早的概要日志序列 21
下一個存檔日志序列 23
當前日志序列 23
SQL> alter system switch logfile;
SQL> archive log list;
數據庫日志模式 存檔模式
自動存檔 啟用
存檔終點 e:Softwareoracle9iadminoratestarchive2
最早的概要日志序列 22
下一個存檔日志序列 24
當前日志序列 24
SQL> alter system switch logfile;
SQL> alter system switch logfile;
SQL> archive log list;
數據庫日志模式 存檔模式
自動存檔 啟用
存檔終點 e:Softwareoracle9iadminoratestarchive2
最早的概要日志序列 24
下一個存檔日志序列 26
當前日志序列 26
SQL> shutdown immediate
數據庫已經關閉。
已經卸載數據庫。
ORACLE 例程已經關閉。
SQL> host del E:SOFTWAREORACLE9IORADATAORATESTABC.DBF
SQL>select d.file#,d.name,d.status,h.status from v$datafile d,v$datafile_header h where d.file#=h.file#;
FILE# NAME STATUS STATUS
-------- ---------------------------------------- ------- -------
12 E:SOFTWAREORACLE9IORADATAORATESTABC ONLINE ONLINE
.DBF
SQL>archive log list
數據庫日志模式 存檔模式
自動存檔 啟用
存檔終點 e:Softwareoracle9iadminoratestarchive2
最早的概要日志序列 21
下一個存檔日志序列 23
當前日志序列 23
SQL> alter system switch logfile;
SQL> archive log list;
數據庫日志模式 存檔模式
自動存檔 啟用
存檔終點 e:Softwareoracle9iadminoratestarchive2
最早的概要日志序列 22
下一個存檔日志序列 24
當前日志序列 24
SQL> alter system switch logfile;
SQL> alter system switch logfile;
SQL> archive log list;
數據庫日志模式 存檔模式
自動存檔 啟用
存檔終點 e:Softwareoracle9iadminoratestarchive2
最早的概要日志序列 24
下一個存檔日志序列 26
當前日志序列 26
SQL> shutdown immediate
數據庫已經關閉。
已經卸載數據庫。
ORACLE 例程已經關閉。
SQL> host del E:SOFTWAREORACLE9IORADATAORATESTABC.DBF
SQL> startup
ORACLE 例程已經啟動。
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
數據庫裝載完畢。
ORA-01157: 無法標識/鎖定數據文件 12 - 請參閱 DBWR 跟蹤文件
ORA-01110: 數據文件 12: 'E:SOFTWAREORACLE9IORADATAORATESTABC.DBF'
SQL> select * from v$recover_file;
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
數據庫裝載完畢。
ORA-01157: 無法標識/鎖定數據文件 12 - 請參閱 DBWR 跟蹤文件
ORA-01110: 數據文件 12: 'E:SOFTWAREORACLE9IORADATAORATESTABC.DBF'
SQL> select * from v$recover_file;
FILE# ONLINE ONLINE_ ERROR CHANGE# TIME
---------- ------- ------- ----------------------------------------------------------------- ---------- ----------
12 ONLINE ONLINE FILE NOT FOUND
0
SQL>alter database datafile 12 offline ;
SQL> select * from v$recover_file;
---------- ------- ------- ----------------------------------------------------------------- ---------- ----------
12 ONLINE ONLINE FILE NOT FOUND
0
SQL>alter database datafile 12 offline ;
SQL> select * from v$recover_file;
FILE# ONLINE ONLINE_ ERROR CHANGE# TIME
---------- ------- ------- ----------------------------------------------------------------- ---------- ----------
12 OFFLINE OFFLINE FILE NOT FOUND 0
SQL> alter database open;
SQL> create tablespace abc datafile 'E:SOFTWAREORACLE9IORADATAORATESTABC.DBF' size 5M;//用這個命令創建表空間失敗,控制文件中仍然記錄該表空間
create tablespace abc datafile 'E:SOFTWAREORACLE9IORADATAORATESTABC.DBF' size 5M
*
ERROR 位於第 1 行:
ORA-01543: 表空間 'ABC' 已經存在
SQL> alter database create datafile 'E:SOFTWAREORACLE9IORADATAORATESTABC.DBF' as 'E:SOFTWAREORACLE9IORADATAORATESTABC01.DBF';
SQL> alter database datafile 12 online;
alter database datafile 12 online
*
ERROR 位於第 1 行:
ORA-01113: 文件 12 需要介質恢復
ORA-01110: 數據文件 12: 'E:SOFTWAREORACLE9IORADATAORATESTABC01.DBF'
---------- ------- ------- ----------------------------------------------------------------- ---------- ----------
12 OFFLINE OFFLINE FILE NOT FOUND 0
SQL> alter database open;
SQL> create tablespace abc datafile 'E:SOFTWAREORACLE9IORADATAORATESTABC.DBF' size 5M;//用這個命令創建表空間失敗,控制文件中仍然記錄該表空間
create tablespace abc datafile 'E:SOFTWAREORACLE9IORADATAORATESTABC.DBF' size 5M
*
ERROR 位於第 1 行:
ORA-01543: 表空間 'ABC' 已經存在
SQL> alter database create datafile 'E:SOFTWAREORACLE9IORADATAORATESTABC.DBF' as 'E:SOFTWAREORACLE9IORADATAORATESTABC01.DBF';
SQL> alter database datafile 12 online;
alter database datafile 12 online
*
ERROR 位於第 1 行:
ORA-01113: 文件 12 需要介質恢復
ORA-01110: 數據文件 12: 'E:SOFTWAREORACLE9IORADATAORATESTABC01.DBF'
SQL> recover datafile 12 ;
ORA-00279: 更改 880858 (在 04/26/2005 14:12:10 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_23_001.ARC
ORA-00280: 更改 880858 對於線程 1 是按序列 # 23 進行的
ORA-00279: 更改 880858 (在 04/26/2005 14:12:10 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_23_001.ARC
ORA-00280: 更改 880858 對於線程 1 是按序列 # 23 進行的
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
auto
已應用的日志。
完成介質恢復。
SQL> select * from v$recover_file; //需要恢復的文件已經沒有了
SQL> select d.file#,d.name,d.status,h.status from v$datafile d,v$datafile_header h where d.file#=h.file#;//name已經變為新的文件了,但是還是處於offline
FILE# NAME STATUS STATUS
---------- ---------------------------------------- ------- -------
12 E:SOFTWAREORACLE9IORADATAORATESTABC OFFLINE OFFLINE
01.DBF
SQL>alter database datafile 12 online; //使文件online;
SQL> select d.file#,d.name,d.status,h.status from v$datafile d,v$datafile_header h where d.file#=h.file#;
FILE# NAME STATUS STATUS
---------- ---------------------------------------- ------- -------
12 E:SOFTWAREORACLE9IORADATAORATESTABC ONLINE ONLINE
01.DBF
//恢復完成
SQL> create table x (n number, b char) tablespace abc;//在表空間上創建表成功
二、控制文件損壞
1、多個控制文件,一個損壞
故障模擬
SQL> select name from v$controlfile;
NAME
----------------------------------------
E:SOFTWAREORACLE9IORADATAORATESTCON
TROL01.CTL
----------------------------------------
E:SOFTWAREORACLE9IORADATAORATESTCON
TROL01.CTL
E:SOFTWAREORACLE9IORADATAORATESTCON
TROL02.CTL
TROL02.CTL
E:SOFTWAREORACLE9IORADATAORATESTCON
TROL03.CTL
TROL03.CTL
SQL>host copy d:backupaa.txt E:SOFTWAREORACLE9IORADATAORATESTCONTROL01.CTL
執行操作出現錯誤
SQL> select name from v$tablespace;
select name from v$tablespace
*
ERROR 位於第 1 行:
ORA-12571: TNS: 包寫入程序失敗
SQL> conn / as sysdba
已連接到空閑例程。
SQL> startup
ORACLE 例程已經啟動。
執行操作出現錯誤
SQL> select name from v$tablespace;
select name from v$tablespace
*
ERROR 位於第 1 行:
ORA-12571: TNS: 包寫入程序失敗
SQL> conn / as sysdba
已連接到空閑例程。
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
ORA-00227: ????????????: (? 1?# ? 1)
ORA-00202: ????: 'E:SOFTWAREORACLE9IORADATAORATESTCONTROL01.CTL'
SQL> startup
ORACLE 例程已經啟動。
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
ORA-00227: ????????????: (? 1?# ? 1)
ORA-00202: ????: 'E:SOFTWAREORACLE9IORADATAORATESTCONTROL01.CTL'
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
數據庫裝載完畢。
數據庫已經打開。
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
數據庫裝載完畢。
數據庫已經打開。
解決方法是將該控制文件刪除,拷貝另一個一個替換他
2、全部控制文件損壞
2、全部控制文件損壞
前提條件:是保留有所有數據備份或歸檔日值和alter database backup controlfile to trace文件備份
故障模擬
SQL> create table con (a number ,c char) tablespace abc;
故障模擬
SQL> create table con (a number ,c char) tablespace abc;
表已創建。
SQL> insert into con values(2,2);
SQL> insert into con values(2,2);
已創建 1 行。
SQL> insert into con values(3,2);
已創建 1 行。
SQL> commit;
提交完成。
SQL> archive log list
數據庫日志模式 存檔模式
自動存檔 啟用
存檔終點 e:Softwareoracle9iadminoratestarchive2
最早的概要日志序列 41
下一個存檔日志序列 43
當前日志序列 43
SQL>
數據庫日志模式 存檔模式
自動存檔 啟用
存檔終點 e:Softwareoracle9iadminoratestarchive2
最早的概要日志序列 41
下一個存檔日志序列 43
當前日志序列 43
SQL>
SQL> alter system switch logfile;
系統已更改。
SQL> alter system switch logfile;
系統已更改。
SQL> alter system switch logfile;
系統已更改。
SQL> archive log list;
數據庫日志模式 存檔模式
自動存檔 啟用
存檔終點 e:Softwareoracle9iadminoratestarchive2
最早的概要日志序列 44
下一個存檔日志序列 46
當前日志序列 46
SQL>
數據庫日志模式 存檔模式
自動存檔 啟用
存檔終點 e:Softwareoracle9iadminoratestarchive2
最早的概要日志序列 44
下一個存檔日志序列 46
當前日志序列 46
SQL>
SQL> host copy d:backupaa.txt E:SOFTWAREORACLE9IORADATAORATESTCONTROL01.CTL
已復制 1 個文件。
SQL> host copy d:backupaa.txt E:SOFTWAREORACLE9IORADATAORATESTCONTROL02.CTL
已復制 1 個文件。
已復制 1 個文件。
SQL> host copy d:backupaa.txt E:SOFTWAREORACLE9IORADATAORATESTCONTROL03.CTL
已復制 1 個文件。
SQL> create table aaa (a number b char) tablespace user;
已復制 1 個文件。
SQL> create table aaa (a number b char) tablespace user;
create table aaa (a number b char) tablespace user
*
ERROR 位於第 1 行:
ORA-01092: ORACLE 例程終止。強行斷開連接
SQL> startup
ORACLE 例程已經啟動。
*
ERROR 位於第 1 行:
ORA-01092: ORACLE 例程終止。強行斷開連接
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
ORA-00227: ????????????: (? 1?# ? 1)
ORA-00202: ????: 'E:SOFTWAREORACLE9IORADATAORATESTCONTROL01.CTL'
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
ORA-00227: ????????????: (? 1?# ? 1)
ORA-00202: ????: 'E:SOFTWAREORACLE9IORADATAORATESTCONTROL01.CTL'
SQL> shutdown abort
ORACLE 例程已經關閉。
SQL> startup nomount //啟動到nomount狀態,這個狀態不打開控制文件
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
SQL> CREATE CONTROLFILE REUSE DATABASE "ORATEST" NORESETLOGS ARCHIVELOG //選擇NORESETLOGS,創建控制文件,前提是online redo完好
2 -- SET STANDBY TO MAXIMIZE PERFORMANCE
3 MAXLOGFILES 50
4 MAXLOGMEMBERS 5
5 MAXDATAFILES 100
6 MAXINSTANCES 1
7 MAXLOGHISTORY 226
8 LOGFILE
9 GROUP 1 'E:SOFTWAREORACLE9IORADATAORATESTREDO01.LOG' SIZE 100M,
10 GROUP 2 'E:SOFTWAREORACLE9IORADATAORATESTREDO02.LOG' SIZE 100M,
11 GROUP 3 'E:SOFTWAREORACLE9IORADATAORATESTREDO03.LOG' SIZE 100M
12 -- STANDBY LOGFILE
13 DATAFILE
14 'E:SOFTWAREORACLE9IORADATAORATESTSYSTEM01.DBF',
15 'E:SOFTWAREORACLE9IORADATAORATESTUNDOTBS01.DBF',
16 'E:SOFTWAREORACLE9IORADATAORATESTCWMLITE01.DBF',
17 'E:SOFTWAREORACLE9IORADATAORATESTDRSYS01.DBF',
18 'E:SOFTWAREORACLE9IORADATAORATESTEXAMPLE01.DBF',
19 'E:SOFTWAREORACLE9IORADATAORATESTINDX01.DBF',
20 'E:SOFTWAREORACLE9IORADATAORATESTODM01.DBF',
21 'E:SOFTWAREORACLE9IORADATAORATESTTOOLS01.DBF',
22 'E:SOFTWAREORACLE9IORADATAORATESTUSERS01.DBF',
23 'E:SOFTWAREORACLE9IORADATAORATESTXDB01.DBF',
24 'E:SOFTWAREORACLE9IORADATAORATESTUSERS02.DBF',
25 'E:SOFTWAREORACLE9IORADATAORATESTABC01.DBF'
26 CHARACTER SET ZHS16GBK
27 ;
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
SQL> CREATE CONTROLFILE REUSE DATABASE "ORATEST" NORESETLOGS ARCHIVELOG //選擇NORESETLOGS,創建控制文件,前提是online redo完好
2 -- SET STANDBY TO MAXIMIZE PERFORMANCE
3 MAXLOGFILES 50
4 MAXLOGMEMBERS 5
5 MAXDATAFILES 100
6 MAXINSTANCES 1
7 MAXLOGHISTORY 226
8 LOGFILE
9 GROUP 1 'E:SOFTWAREORACLE9IORADATAORATESTREDO01.LOG' SIZE 100M,
10 GROUP 2 'E:SOFTWAREORACLE9IORADATAORATESTREDO02.LOG' SIZE 100M,
11 GROUP 3 'E:SOFTWAREORACLE9IORADATAORATESTREDO03.LOG' SIZE 100M
12 -- STANDBY LOGFILE
13 DATAFILE
14 'E:SOFTWAREORACLE9IORADATAORATESTSYSTEM01.DBF',
15 'E:SOFTWAREORACLE9IORADATAORATESTUNDOTBS01.DBF',
16 'E:SOFTWAREORACLE9IORADATAORATESTCWMLITE01.DBF',
17 'E:SOFTWAREORACLE9IORADATAORATESTDRSYS01.DBF',
18 'E:SOFTWAREORACLE9IORADATAORATESTEXAMPLE01.DBF',
19 'E:SOFTWAREORACLE9IORADATAORATESTINDX01.DBF',
20 'E:SOFTWAREORACLE9IORADATAORATESTODM01.DBF',
21 'E:SOFTWAREORACLE9IORADATAORATESTTOOLS01.DBF',
22 'E:SOFTWAREORACLE9IORADATAORATESTUSERS01.DBF',
23 'E:SOFTWAREORACLE9IORADATAORATESTXDB01.DBF',
24 'E:SOFTWAREORACLE9IORADATAORATESTUSERS02.DBF',
25 'E:SOFTWAREORACLE9IORADATAORATESTABC01.DBF'
26 CHARACTER SET ZHS16GBK
27 ;
控制文件已創建
SQL> shutdown abort
ORACLE 例程已經關閉。
SQL> conn / as sysdba
已連接到空閑例程。
SQL> startup
ORACLE 例程已經啟動。
ORACLE 例程已經關閉。
SQL> conn / as sysdba
已連接到空閑例程。
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
數據庫裝載完畢。
ORA-01113: 文件 1 需要介質恢復
ORA-01110: 數據文件 1: 'E:SOFTWAREORACLE9IORADATAORATESTSYSTEM01.DBF'
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
數據庫裝載完畢。
ORA-01113: 文件 1 需要介質恢復
ORA-01110: 數據文件 1: 'E:SOFTWAREORACLE9IORADATAORATESTSYSTEM01.DBF'
SQL> recover database;
完成介質恢復。
SQL> alter database open;
數據庫已更改。
SQL>
SQL> alter database open;
數據庫已更改。
SQL> select * from con;
A C
---------- -
1 1
2 2
3 2
---------- -
1 1
2 2
3 2
已選擇3行。
SQL>
還有一種情況是備份的是控制文件的二進制文件,online redo完好,並且保存了所有archive log
這時所有控制文件壞了需要將控制文件和數據文件全部restore,確保init文件設置與控制文件一致
然后利用recover database until cancel using backup controlfile;
alter database open resetlogs|noresetlogs 打開數據庫
三、在線redo損壞
1、當前日志組損壞
前提是,數據庫數據文件全備份和archive log全備份
前提是,數據庫數據文件全備份和archive log全備份
故障模擬
SQL> insert into con1 values(11,1);
SQL> insert into con1 values(11,1);
已創建 1 行。
SQL> select * from con1;
A B
---------- -
1 1
11 1
---------- -
1 1
11 1
SQL> commit;
提交完成。
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -------------------
1 1 13 104857600 1 YES INACTIVE 1673370 2005/04/30/14:48:36
2 1 14 104857600 1 NO CURRENT 1673377 2005/04/30/14:48:37
3 1 12 104857600 1 YES INACTIVE 1673360 2005/04/30/14:48:34
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -------------------
1 1 13 104857600 1 YES INACTIVE 1673370 2005/04/30/14:48:36
2 1 14 104857600 1 NO CURRENT 1673377 2005/04/30/14:48:37
3 1 12 104857600 1 YES INACTIVE 1673360 2005/04/30/14:48:34
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER
---------- ------- ------- ----------------------------------------
3 ONLINE E:SOFTWAREORACLE9IORADATAORATESTRED
O03.LOG
---------- ------- ------- ----------------------------------------
3 ONLINE E:SOFTWAREORACLE9IORADATAORATESTRED
O03.LOG
2 ONLINE E:SOFTWAREORACLE9IORADATAORATESTRED
O02.LOG
O02.LOG
1 ONLINE E:SOFTWAREORACLE9IORADATAORATESTRED
O01.LOG
O01.LOG
SQL> host copy d:backupaa.txt E:SOFTWAREORACLE9IORADATAORATESTREDO02.LOG
已復制 1 個文件。
SQL> alter system switch logfile;
alter system switch logfile
*
ERROR 位於第 1 行:
ORA-03113: 通信通道的文件結束
alter system switch logfile
*
ERROR 位於第 1 行:
ORA-03113: 通信通道的文件結束
SQL> conn / as sysdba
已連接到空閑例程。
SQL> startup
ORACLE 例程已經啟動。
已連接到空閑例程。
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
數據庫裝載完畢。
ORA-00316: 日志 2 (線程 1),標題中的類型 0 不是日志文件
ORA-00312: 聯機日志 2 線程 1: 'E:SOFTWAREORACLE9IORADATAORATESTREDO02.LOG'
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
數據庫裝載完畢。
ORA-00316: 日志 2 (線程 1),標題中的類型 0 不是日志文件
ORA-00312: 聯機日志 2 線程 1: 'E:SOFTWAREORACLE9IORADATAORATESTREDO02.LOG'
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ----------
1 1 13 104857600 1 YES INACTIVE 1673370 30-4月 -05
2 1 14 104857600 1 NO INVALIDATED 1673377 30-4月 -05
3 1 0 104857600 1 YES UNUSED 0 30-4月 -05
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ----------
1 1 13 104857600 1 YES INACTIVE 1673370 30-4月 -05
2 1 14 104857600 1 NO INVALIDATED 1673377 30-4月 -05
3 1 0 104857600 1 YES UNUSED 0 30-4月 -05
將備份的數據文件restore
SQL> recover database until cancel;
ORA-00279: 更改 1672616 (在 04/30/2005 14:44:27 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_1_001.ARC
ORA-00280: 更改 1672616 對於線程 1 是按序列 # 1 進行的
ORA-00279: 更改 1672616 (在 04/30/2005 14:44:27 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_1_001.ARC
ORA-00280: 更改 1672616 對於線程 1 是按序列 # 1 進行的
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: 更改 1672625 (在 04/30/2005 14:44:29 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_2_001.ARC
ORA-00280: 更改 1672625 對於線程 1 是按序列 # 2 進行的
ORA-00278: 此恢復不再需要日志文件 'E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_1_001.ARC'
ORA-00279: 更改 1672636 (在 04/30/2005 14:44:33 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_3_001.ARC
ORA-00280: 更改 1672636 對於線程 1 是按序列 # 3 進行的
ORA-00278: 此恢復不再需要日志文件 'E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_2_001.ARC'
ORA-00279: 更改 1672804 (在 04/30/2005 14:45:19 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_4_001.ARC
ORA-00280: 更改 1672804 對於線程 1 是按序列 # 4 進行的
ORA-00278: 此恢復不再需要日志文件 'E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_3_001.ARC'
ORA-00279: 更改 1672815 (在 04/30/2005 14:45:25 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_5_001.ARC
ORA-00280: 更改 1672815 對於線程 1 是按序列 # 5 進行的
ORA-00278: 此恢復不再需要日志文件 'E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_4_001.ARC'
ORA-00279: 更改 1672827 (在 04/30/2005 14:45:29 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_6_001.ARC
ORA-00280: 更改 1672827 對於線程 1 是按序列 # 6 進行的
ORA-00278: 此恢復不再需要日志文件 'E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_5_001.ARC'
ORA-00279: 更改 1673157 (在 04/30/2005 14:47:44 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_7_001.ARC
ORA-00280: 更改 1673157 對於線程 1 是按序列 # 7 進行的
ORA-00278: 此恢復不再需要日志文件 'E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_6_001.ARC'
ORA-00279: 更改 1673175 (在 04/30/2005 14:47:51 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_8_001.ARC
ORA-00280: 更改 1673175 對於線程 1 是按序列 # 8 進行的
ORA-00278: 此恢復不再需要日志文件 'E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_7_001.ARC'
ORA-00279: 更改 1673263 (在 04/30/2005 14:48:21 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_9_001.ARC
ORA-00280: 更改 1673263 對於線程 1 是按序列 # 9 進行的
ORA-00278: 此恢復不再需要日志文件 'E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_8_001.ARC'
ORA-00279: 更改 1673275 (在 04/30/2005 14:48:28 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_10_001.ARC
ORA-00280: 更改 1673275 對於線程 1 是按序列 # 10 進行的
ORA-00278: 此恢復不再需要日志文件 'E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_9_001.ARC'
ORA-00279: 更改 1673357 (在 04/30/2005 14:48:33 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_11_001.ARC
ORA-00280: 更改 1673357 對於線程 1 是按序列 # 11 進行的
ORA-00278: 此恢復不再需要日志文件 'E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_10_001.ARC'
ORA-00279: 更改 1673360 (在 04/30/2005 14:48:34 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_12_001.ARC
ORA-00280: 更改 1673360 對於線程 1 是按序列 # 12 進行的
ORA-00278: 此恢復不再需要日志文件 'E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_11_001.ARC'
ORA-00279: 更改 1673370 (在 04/30/2005 14:48:36 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_13_001.ARC
ORA-00280: 更改 1673370 對於線程 1 是按序列 # 13 進行的
ORA-00278: 此恢復不再需要日志文件 'E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_12_001.ARC'
ORA-00279: 更改 1673377 (在 04/30/2005 14:48:37 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_14_001.ARC
ORA-00280: 更改 1673377 對於線程 1 是按序列 # 14 進行的
ORA-00278: 此恢復不再需要日志文件 'E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_13_001.ARC'
ORA-00308: 無法打開存檔日志 'E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_14_001.ARC'
ORA-27041: 無法打開文件
OSD-04002: 無法打開文件
O/S-Error: (OS 2) 系統找不到指定的文件。
SQL> alter database open resetlogs;
數據庫已更改。
SQL> select * from con1;
A B
---------- -
1 1
---------- -
1 1
SQL> alter system switch logfile;
系統已更改。
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ----------
1 1 2 104857600 1 NO CURRENT 1675246 30-4月 -05
2 1 1 104857600 1 YES ACTIVE 1673378 30-4月 -05
3 1 0 104857600 1 YES UNUSED 0
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ----------
1 1 2 104857600 1 NO CURRENT 1675246 30-4月 -05
2 1 1 104857600 1 YES ACTIVE 1673378 30-4月 -05
3 1 0 104857600 1 YES UNUSED 0
2、非活動的redo log 損壞恢復
故障模擬
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ----------
1 1 2 104857600 1 YES INACTIVE 1675246 30-4月 -05
2 1 4 104857600 1 NO CURRENT 1675327 30-4月 -05
3 1 3 104857600 1 YES INACTIVE 1675322 30-4月 -05
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ----------
1 1 2 104857600 1 YES INACTIVE 1675246 30-4月 -05
2 1 4 104857600 1 NO CURRENT 1675327 30-4月 -05
3 1 3 104857600 1 YES INACTIVE 1675322 30-4月 -05
SQL> host del E:SOFTWAREORACLE9IORADATAORATESTREDO03.LOG
SQL> shutdown immediate
數據庫已經關閉。
已經卸載數據庫。
ORACLE 例程已經關閉。
SQL> startup
ORACLE 例程已經啟動。
數據庫已經關閉。
已經卸載數據庫。
ORACLE 例程已經關閉。
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
數據庫裝載完畢。
ORA-00313: 無法打開日志組 3 (線程 1) 的成員
ORA-00312: 聯機日志 3 線程 1: 'E:SOFTWAREORACLE9IORADATAORATESTREDO03.LOG'
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
數據庫裝載完畢。
ORA-00313: 無法打開日志組 3 (線程 1) 的成員
ORA-00312: 聯機日志 3 線程 1: 'E:SOFTWAREORACLE9IORADATAORATESTREDO03.LOG'
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ----------
1 1 2 104857600 1 YES INACTIVE 1675246 30-4月 -05
2 1 4 104857600 1 NO CURRENT 1675327 30-4月 -05
3 1 3 104857600 1 YES INACTIVE 1675322 30-4月 -05
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ----------
1 1 2 104857600 1 YES INACTIVE 1675246 30-4月 -05
2 1 4 104857600 1 NO CURRENT 1675327 30-4月 -05
3 1 3 104857600 1 YES INACTIVE 1675322 30-4月 -05
SQL> alter database clear logfile group 3;
數據庫已更改。
SQL> alter database open;
數據庫已更改。
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ----------
1 1 2 104857600 1 YES INACTIVE 1675246 30-4月 -05
2 1 4 104857600 1 NO CURRENT 1675327 30-4月 -05
3 1 0 104857600 1 YES UNUSED 1675322 30-4月 -05
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ----------
1 1 2 104857600 1 YES INACTIVE 1675246 30-4月 -05
2 1 4 104857600 1 NO CURRENT 1675327 30-4月 -05
3 1 0 104857600 1 YES UNUSED 1675322 30-4月 -05
SQL>
四、控制文件和Redo損壞
1、全部的控制文件和全部redolog損壞
故障模擬
故障模擬
SQL> select * from con1;
A B
---------- -
1 1
---------- -
1 1
SQL> insert into con1 values(2,1);
已創建 1 行。
SQL> insert into con1 values(3,1);
已創建 1 行。
SQL> insert into con1 values(4,1);
已創建 1 行。
SQL> commit;
提交完成。
SQL> select * from con1;
A B
---------- -
1 1
2 1
3 1
4 1
---------- -
1 1
2 1
3 1
4 1
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -------------------
1 1 30 104857600 1 NO CURRENT 3426067 2005/05/08/10:25:31
2 1 28 104857600 1 YES INACTIVE 3426049 2005/05/08/10:25:24
3 1 29 104857600 1 YES INACTIVE 3426061 2005/05/08/10:25:30
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -------------------
1 1 30 104857600 1 NO CURRENT 3426067 2005/05/08/10:25:31
2 1 28 104857600 1 YES INACTIVE 3426049 2005/05/08/10:25:24
3 1 29 104857600 1 YES INACTIVE 3426061 2005/05/08/10:25:30
SQL> host copy d:backupaa.txt E:Softwareoracle9ioradataoratestCONTROL01.CTL
已復制 1 個文件。
已復制 1 個文件。
SQL> host copy d:backupaa.txt E:Softwareoracle9ioradataoratestCONTROL02.CTL
已復制 1 個文件。
已復制 1 個文件。
SQL> host copy d:backupaa.txt E:Softwareoracle9ioradataoratestCONTROL03.CTL
SQL> host copy d:backupaa.txt E:Softwareoracle9ioradataoratestREDO01.LOG
已復制 1 個文件。
已復制 1 個文件。
SQL> host copy d:backupaa.txt E:Softwareoracle9ioradataoratestREDO02.LOG
已復制 1 個文件。
已復制 1 個文件。
SQL> select * from v$log;
select * from v$log
*
ERROR 位於第 1 行:
ORA-12571: TNS: 包寫入程序失敗
SQL> conn / as sysdba
已連接到空閑例程。
SQL> startup
ORACLE 例程已經啟動。
已連接到空閑例程。
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
ORA-00227: ????????????: (? 1?# ? 1)
ORA-00202: ????: 'E:SOFTWAREORACLE9IORADATAORATESTCONTROL01.CTL'
shutdown abrot
strat nomount
利用trace備份的control文件創建控制文件,由於當前的redolog損壞所以選擇RESETLOGS方式
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
ORA-00227: ????????????: (? 1?# ? 1)
ORA-00202: ????: 'E:SOFTWAREORACLE9IORADATAORATESTCONTROL01.CTL'
shutdown abrot
strat nomount
利用trace備份的control文件創建控制文件,由於當前的redolog損壞所以選擇RESETLOGS方式
CREATE CONTROLFILE REUSE DATABASE "ORATEST" RESETLOGS ARCHIVELOG
-- SET STANDBY TO MAXIMIZE PERFORMANCE
MAXLOGFILES 50
MAXLOGMEMBERS 5
MAXDATAFILES 100
MAXINSTANCES 1
MAXLOGHISTORY 226
LOGFILE
GROUP 1 'E:SOFTWAREORACLE9IORADATAORATESTREDO01.LOG' SIZE 100M,
GROUP 2 'E:SOFTWAREORACLE9IORADATAORATESTREDO02.LOG' SIZE 100M,
GROUP 3 'E:SOFTWAREORACLE9IORADATAORATESTREDO03.LOG' SIZE 100M
-- STANDBY LOGFILE
DATAFILE
'E:SOFTWAREORACLE9IORADATAORATESTSYSTEM01.DBF',
'E:SOFTWAREORACLE9IORADATAORATESTUNDOTBS01.DBF',
'E:SOFTWAREORACLE9IORADATAORATESTCWMLITE01.DBF',
'E:SOFTWAREORACLE9IORADATAORATESTDRSYS01.DBF',
'E:SOFTWAREORACLE9IORADATAORATESTEXAMPLE01.DBF',
'E:SOFTWAREORACLE9IORADATAORATESTINDX01.DBF',
'E:SOFTWAREORACLE9IORADATAORATESTODM01.DBF',
'E:SOFTWAREORACLE9IORADATAORATESTTOOLS01.DBF',
'E:SOFTWAREORACLE9IORADATAORATESTUSERS01.DBF',
'E:SOFTWAREORACLE9IORADATAORATESTXDB01.DBF',
'E:SOFTWAREORACLE9IORADATAORATESTUSERS02.DBF',
'E:SOFTWAREORACLE9IORADATAORATESTABC01.DBF'
CHARACTER SET ZHS16GBK
;
SQL>
SQL> recover database until cancel;
ORA-00283: ??????????
ORA-01610: ?? BACKUP CONTROLFILE ??????????
-- SET STANDBY TO MAXIMIZE PERFORMANCE
MAXLOGFILES 50
MAXLOGMEMBERS 5
MAXDATAFILES 100
MAXINSTANCES 1
MAXLOGHISTORY 226
LOGFILE
GROUP 1 'E:SOFTWAREORACLE9IORADATAORATESTREDO01.LOG' SIZE 100M,
GROUP 2 'E:SOFTWAREORACLE9IORADATAORATESTREDO02.LOG' SIZE 100M,
GROUP 3 'E:SOFTWAREORACLE9IORADATAORATESTREDO03.LOG' SIZE 100M
-- STANDBY LOGFILE
DATAFILE
'E:SOFTWAREORACLE9IORADATAORATESTSYSTEM01.DBF',
'E:SOFTWAREORACLE9IORADATAORATESTUNDOTBS01.DBF',
'E:SOFTWAREORACLE9IORADATAORATESTCWMLITE01.DBF',
'E:SOFTWAREORACLE9IORADATAORATESTDRSYS01.DBF',
'E:SOFTWAREORACLE9IORADATAORATESTEXAMPLE01.DBF',
'E:SOFTWAREORACLE9IORADATAORATESTINDX01.DBF',
'E:SOFTWAREORACLE9IORADATAORATESTODM01.DBF',
'E:SOFTWAREORACLE9IORADATAORATESTTOOLS01.DBF',
'E:SOFTWAREORACLE9IORADATAORATESTUSERS01.DBF',
'E:SOFTWAREORACLE9IORADATAORATESTXDB01.DBF',
'E:SOFTWAREORACLE9IORADATAORATESTUSERS02.DBF',
'E:SOFTWAREORACLE9IORADATAORATESTABC01.DBF'
CHARACTER SET ZHS16GBK
;
SQL>
SQL> recover database until cancel;
ORA-00283: ??????????
ORA-01610: ?? BACKUP CONTROLFILE ??????????
SQL> recover database;
ORA-00283: ??????????
RA-01610: ?? BACKUP CONTROLFILE ??????????
SQL> shutdown abort
ORACLE 例程已經關閉。
SQL> conn / as sysdba
已連接到空閑例程。
SQL> startup mount;
ORACLE 例程已經啟動。
ORACLE 例程已經關閉。
SQL> conn / as sysdba
已連接到空閑例程。
SQL> startup mount;
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
數據庫裝載完畢。
SQL> recover database ;
ORA-00283: 恢復會話因錯誤而取消
RA-01610: 使用 BACKUP CONTROLFILE 選項的恢復必須已完成
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
數據庫裝載完畢。
SQL> recover database ;
ORA-00283: 恢復會話因錯誤而取消
RA-01610: 使用 BACKUP CONTROLFILE 選項的恢復必須已完成
restore所有備份得數據文件。
SQL> recover database using backup controlfile;
ORA-00279: 更改 3425439 (在 05/08/2005 10:21:57 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_22_001.ARC
ORA-00280: 更改 3425439 對於線程 1 是按序列 # 22 進行的
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: 更改 3425841 (在 05/08/2005 10:24:18 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_23_001.ARC
ORA-00280: 更改 3425841 對於線程 1 是按序列 # 23 進行的
ORA-00278: 此恢復不再需要日志文件 'E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_22_001.ARC'
ORA-00279: 更改 3425851 (在 05/08/2005 10:24:23 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_24_001.ARC
ORA-00280: 更改 3425851 對於線程 1 是按序列 # 24 進行的
ORA-00278: 此恢復不再需要日志文件 'E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_23_001.ARC'
ORA-00279: 更改 3425948 (在 05/08/2005 10:25:13 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_25_001.ARC
ORA-00280: 更改 3425948 對於線程 1 是按序列 # 25 進行的
ORA-00278: 此恢復不再需要日志文件 'E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_24_001.ARC'
ORA-00279: 更改 3426034 (在 05/08/2005 10:25:18 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_26_001.ARC
ORA-00280: 更改 3426034 對於線程 1 是按序列 # 26 進行的
ORA-00278: 此恢復不再需要日志文件 'E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_25_001.ARC'
ORA-00279: 更改 3426046 (在 05/08/2005 10:25:23 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_27_001.ARC
ORA-00280: 更改 3426046 對於線程 1 是按序列 # 27 進行的
ORA-00278: 此恢復不再需要日志文件 'E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_26_001.ARC'
ORA-00279: 更改 3426049 (在 05/08/2005 10:25:24 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_28_001.ARC
ORA-00280: 更改 3426049 對於線程 1 是按序列 # 28 進行的
ORA-00278: 此恢復不再需要日志文件 'E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_27_001.ARC'
ORA-00279: 更改 3426061 (在 05/08/2005 10:25:30 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_29_001.ARC
ORA-00280: 更改 3426061 對於線程 1 是按序列 # 29 進行的
ORA-00278: 此恢復不再需要日志文件 'E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_28_001.ARC'
ORA-00279: 更改 3426067 (在 05/08/2005 10:25:31 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_30_001.ARC
ORA-00280: 更改 3426067 對於線程 1 是按序列 # 30 進行的
ORA-00278: 此恢復不再需要日志文件 'E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_29_001.ARC'
ORA-00308: 無法打開存檔日志 'E:SOFTWAREORACLE9IADMINORATESTARCHIVE2ORATEST_30_001.ARC'
ORA-27041: 無法打開文件
OSD-04002: 無法打開文件
O/S-Error: (OS 2) 系統找不到指定的文件。
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR 位於第 1 行:
ORA-01113: 文件 1 需要介質恢復
ORA-01110: 數據文件 1: 'E:SOFTWAREORACLE9IORADATAORATESTSYSTEM01.DBF'
修改參數文件加入_allow_resetlogs_corruption=true 強制恢復
SQL> alter database open resetlogs;
數據庫打開
數據庫打開
修改參數文件去掉_allow_resetlogs_corruption=true
2、一個數據文件損壞和一個日值文件損壞
故障模擬
SQL> host copy d:backupaa.txt E:Softwareoracle9ioradataorcCONTROL01.CTL
已復制 1 個文件
SQL> host copy d:backupaa.txt E:Softwareoracle9ioradataorcREDO01.LOG
已復制 1 個文件。
已復制 1 個文件
SQL> host copy d:backupaa.txt E:Softwareoracle9ioradataorcREDO01.LOG
已復制 1 個文件。
SQL> select * from v$log;
select * from v$log
*
ERROR 位於第 1 行:
ORA-12571: TNS: 包寫入程序失敗
select * from v$log
*
ERROR 位於第 1 行:
ORA-12571: TNS: 包寫入程序失敗
SQL> conn / as sysdba
已連接到空閑例程。
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
ORA-00227: ????????????: (? 1?# ? 1)
ORA-00202: ????: 'E:SOFTWAREORACLE9IORADATAORCCONTROL01.CTL'
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
ORA-00227: ????????????: (? 1?# ? 1)
ORA-00202: ????: 'E:SOFTWAREORACLE9IORADATAORCCONTROL01.CTL'
SQL> shutdown abort
ORACLE 例程已經關閉。
SQL>
拷貝正常的替換損壞的
SQL> startup
oRACLE 例程已經啟動。
oRACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
數據庫裝載完畢。
ORA-00313: 無法打開日志組 1 (線程 1) 的成員
ORA-00312: 聯機日志 1 線程 1: 'E:SOFTWAREORACLE9IORADATAORCREDO01.LOG'
SQL> select * from v$log;
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
數據庫裝載完畢。
ORA-00313: 無法打開日志組 1 (線程 1) 的成員
ORA-00312: 聯機日志 1 線程 1: 'E:SOFTWAREORACLE9IORADATAORCREDO01.LOG'
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS
---------- ---------- ---------- ---------- ---------- --- ----------------
FIRST_CHANGE# FIRST_TIME
------------- ----------
1 1 2 104857600 1 YES INACTIVE
476608 11-5月 -05
---------- ---------- ---------- ---------- ---------- --- ----------------
FIRST_CHANGE# FIRST_TIME
------------- ----------
1 1 2 104857600 1 YES INACTIVE
476608 11-5月 -05
2 1 3 104857600 1 YES INACTIVE
752579 13-5月 -05
752579 13-5月 -05
3 1 4 104857600 1 NO INVALIDATED
812309 13-5月 -05
812309 13-5月 -05
SQL>
查看為非當前日值 (如果是當前redo損壞那么那着當前損壞的情況恢復)
SQL> alter database clear group 1;
alter database clear group 1
*
ERROR 位於第 1 行:
ORA-01900: 需要 LOGFILE 關鍵字
alter database clear group 1
*
ERROR 位於第 1 行:
ORA-01900: 需要 LOGFILE 關鍵字
SQL> alter database clear logfile group 1;
數據庫已更改。
SQL> recover database;
ORA-00283: 恢復會話因錯誤而取消
ORA-00264: 不要求恢復
SQL> recover database;
ORA-00283: 恢復會話因錯誤而取消
ORA-00264: 不要求恢復
SQL> alter database open ;
數據庫已更改。
SQL>
四、全部文件都損壞
故障模擬:所有歸檔日值存在
先在線熱備
SQL> create table con1 (a number,b char) tablespace users;
表已創建。
SQL> alter system switch logfile;
系統已更改。
SQL> alter system switch logfile;
系統已更改。
SQL> alter system switch logfile;
系統已更改。
SQL> insert into con1(1,1);
insert into con1(1,1)
insert into con1(1,1)
SQL> shutdown immediate
數據庫已經關閉。
已經卸載數據庫。
ORACLE 例程已經關閉。
SQL>
數據庫已經關閉。
已經卸載數據庫。
ORACLE 例程已經關閉。
SQL>
刪除所有文件
SQL> startup
ORACLE 例程已經啟動。
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
ORA-00205: ?????????????????????
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
ORA-00205: ?????????????????????
SQL> exit
SQL> shutdown abort
ORACLE 例程已經關閉。
ORACLE 例程已經關閉。
恢復熱備的數據文件
SQL> startup nomount
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
留用備份的trace文件中的語句創建控制文件
SQL> CREATE CONTROLFILE REUSE DATABASE "ORC" RESETLOGS ARCHIVELOG
2 -- SET STANDBY TO MAXIMIZE PERFORMANCE
3 MAXLOGFILES 50
4 MAXLOGMEMBERS 5
5 MAXDATAFILES 100
6 MAXINSTANCES 1
7 MAXLOGHISTORY 226
8 LOGFILE
9 GROUP 1 'E:SOFTWAREORACLE9IORADATAORCREDO01.LOG' SIZE
10 GROUP 2 'E:SOFTWAREORACLE9IORADATAORCREDO02.LOG' SIZE
11 GROUP 3 'E:SOFTWAREORACLE9IORADATAORCREDO03.LOG' SIZE
12 -- STANDBY LOGFILE
13 DATAFILE
14 'E:SOFTWAREORACLE9IORADATAORCSYSTEM01.DBF',
15 'E:SOFTWAREORACLE9IORADATAORCUNDOTBS01.DBF',
16 'E:SOFTWAREORACLE9IORADATAORCCWMLITE01.DBF',
17 'E:SOFTWAREORACLE9IORADATAORCDRSYS01.DBF',
18 'E:SOFTWAREORACLE9IORADATAORCEXAMPLE01.DBF',
19 'E:SOFTWAREORACLE9IORADATAORCINDX01.DBF',
20 'E:SOFTWAREORACLE9IORADATAORCODM01.DBF',
21 'E:SOFTWAREORACLE9IORADATAORCTOOLS01.DBF',
22 'E:SOFTWAREORACLE9IORADATAORCUSERS01.DBF',
23 'E:SOFTWAREORACLE9IORADATAORCXDB01.DBF',
24 'E:SOFTWAREORACLE9IORADATAORCUSERS02.DBF',
25 'E:SOFTWAREORACLE9IORADATAORCABC01.DBF'
26 CHARACTER SET ZHS16GBK
27 ;
SQL> CREATE CONTROLFILE REUSE DATABASE "ORC" RESETLOGS ARCHIVELOG
2 -- SET STANDBY TO MAXIMIZE PERFORMANCE
3 MAXLOGFILES 50
4 MAXLOGMEMBERS 5
5 MAXDATAFILES 100
6 MAXINSTANCES 1
7 MAXLOGHISTORY 226
8 LOGFILE
9 GROUP 1 'E:SOFTWAREORACLE9IORADATAORCREDO01.LOG' SIZE
10 GROUP 2 'E:SOFTWAREORACLE9IORADATAORCREDO02.LOG' SIZE
11 GROUP 3 'E:SOFTWAREORACLE9IORADATAORCREDO03.LOG' SIZE
12 -- STANDBY LOGFILE
13 DATAFILE
14 'E:SOFTWAREORACLE9IORADATAORCSYSTEM01.DBF',
15 'E:SOFTWAREORACLE9IORADATAORCUNDOTBS01.DBF',
16 'E:SOFTWAREORACLE9IORADATAORCCWMLITE01.DBF',
17 'E:SOFTWAREORACLE9IORADATAORCDRSYS01.DBF',
18 'E:SOFTWAREORACLE9IORADATAORCEXAMPLE01.DBF',
19 'E:SOFTWAREORACLE9IORADATAORCINDX01.DBF',
20 'E:SOFTWAREORACLE9IORADATAORCODM01.DBF',
21 'E:SOFTWAREORACLE9IORADATAORCTOOLS01.DBF',
22 'E:SOFTWAREORACLE9IORADATAORCUSERS01.DBF',
23 'E:SOFTWAREORACLE9IORADATAORCXDB01.DBF',
24 'E:SOFTWAREORACLE9IORADATAORCUSERS02.DBF',
25 'E:SOFTWAREORACLE9IORADATAORCABC01.DBF'
26 CHARACTER SET ZHS16GBK
27 ;
控制文件已創建
SQL> shutdown abort
ORACLE 例程已經關閉。
SQL> startup
ORACLE 例程已經啟動。
ORACLE 例程已經關閉。
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
數據庫裝載完畢。
ORA-01589: 要打開數據庫則必須使用 RESETLOGS 或 NORESETLOGS 選項
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
數據庫裝載完畢。
ORA-01589: 要打開數據庫則必須使用 RESETLOGS 或 NORESETLOGS 選項
設置初始化參數文件_allow_resetlogs_corruption=true
SQL> recover database using backup controlfile;
ORA-00279: 更改 842741 (在 05/13/2005 09:51:58 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORCARCHIVE2ORC_5_1.ARC
ORA-00280: 更改 842741 對於線程 1 是按序列 # 5 進行的
ORA-00279: 更改 842741 (在 05/13/2005 09:51:58 生成) 對於線程 1 是必需的
ORA-00289: 建議: E:SOFTWAREORACLE9IADMINORCARCHIVE2ORC_5_1.ARC
ORA-00280: 更改 842741 對於線程 1 是按序列 # 5 進行的
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
auto
SQL> alter database open resetlogs;
數據庫已更改。
SQL> select name from v$datafile;
SQL> select name from v$datafile;
NAME
------------------------------------------------
E:SOFTWAREORACLE9IORADATAORCSYSTEM01.DBF
E:SOFTWAREORACLE9IORADATAORCUNDOTBS01.DBF
E:SOFTWAREORACLE9IORADATAORCCWMLITE01.DBF
E:SOFTWAREORACLE9IORADATAORCDRSYS01.DBF
E:SOFTWAREORACLE9IORADATAORCEXAMPLE01.DBF
E:SOFTWAREORACLE9IORADATAORCINDX01.DBF
E:SOFTWAREORACLE9IORADATAORCODM01.DBF
E:SOFTWAREORACLE9IORADATAORCTOOLS01.DBF
E:SOFTWAREORACLE9IORADATAORCUSERS01.DBF
E:SOFTWAREORACLE9IORADATAORCXDB01.DBF
E:SOFTWAREORACLE9IORADATAORCUSERS02.DBF
------------------------------------------------
E:SOFTWAREORACLE9IORADATAORCSYSTEM01.DBF
E:SOFTWAREORACLE9IORADATAORCUNDOTBS01.DBF
E:SOFTWAREORACLE9IORADATAORCCWMLITE01.DBF
E:SOFTWAREORACLE9IORADATAORCDRSYS01.DBF
E:SOFTWAREORACLE9IORADATAORCEXAMPLE01.DBF
E:SOFTWAREORACLE9IORADATAORCINDX01.DBF
E:SOFTWAREORACLE9IORADATAORCODM01.DBF
E:SOFTWAREORACLE9IORADATAORCTOOLS01.DBF
E:SOFTWAREORACLE9IORADATAORCUSERS01.DBF
E:SOFTWAREORACLE9IORADATAORCXDB01.DBF
E:SOFTWAREORACLE9IORADATAORCUSERS02.DBF
NAME
------------------------------------------------
E:SOFTWAREORACLE9IORADATAORCABC01.DBF
------------------------------------------------
E:SOFTWAREORACLE9IORADATAORCABC01.DBF
已選擇12行。
SQL> select * from con1;
A B
---------- -
1 1
---------- -
1 1
SQL>
由於熱備不備份臨時表空間,所以可以刪除臨時表空間,再重建一個
SQL> select tablespace_name,status from dba_tablespaces where tablespace_name='TEMP';
TABLESPACE_NAME STATUS
------------------------------ ---------
TEMP ONLINE
------------------------------ ---------
TEMP ONLINE
SQL> create temporary tablespace temp1 tempfile 'E:SOFTWAREORACLE9IORADATAORCTEMP01.DBF' size 5M;
表空間已創建。
SQL> alter database default temporary tablespace temp1;
數據庫已更改。
SQL> drop tablespace temp;
表空間已丟棄。
SQL>