一、部分备份数据文件损坏(除了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>