几种redofile恢复
SQL> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 CURRENT
2 UNUSED
3 UNUSED
4 INACTIVE
现在的情况
情况一丢失logfile member
SQL> select group#,status,members from v$log;
GROUP# STATUS MEMBERS
---------- ---------------- ----------
1 CURRENT 3~
2 UNUSED 1
3 UNUSED 1
4 INACTIVE 2
MEMBER
------------------------------------------------------------
1
E:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\REDO01.LOG
1
E:\REDO01_2.LOG
1
E:\REDO01_3.LOG
SQL> startup force mount
ORACLE instance started.
Total System Global Area 171966464 bytes
Fixed Size 787988 bytes
Variable Size 145488364 bytes
Database Buffers 25165824 bytes
Redo Buffers 524288 bytes
Database mounted.
SQL>
SQL>
SQL> select group#,status,members from v$log;
SQL> host del e:\redo01_2.log
SQL> alter database open;~(因为startup force所以 会instance recovery)
SQL> alter database open;~~~~~~~~~~~~~丢失一个member database 可以继续运行 写入alert.log
Database altered.
SQL> select group#,status,members from v$log;
GROUP# STATUS MEMBERS
---------- ---------------- ----------
1 INACTIVE 3
2 CURRENT 1
3 UNUSED 1
4 INACTIVE 2
GROUP# STATUS MEMBERS
---------- ---------------- ----------
1 CURRENT 3
2 UNUSED 1
3 UNUSED 1
4 INACTIVE 2
查看alert.log
Beginning crash recovery of 1 threads~~~
Errors in file e:\oracle\product\10.1.0\admin\orcl\udump\orcl_ora_187756.trc:
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1: 'E:\REDO01_2.LOG'
ORA-27041: unable to open file
OSD-04002: unable to open file
O/S-Error: (OS 2) 系统找不到指定的文件。
Completed redo application
Fri Aug 21 16:30:54 2009
Completed crash recovery at
Incremental checkpoint up to RBA [0x3.3.0], current log tail at RBA [0x3.3.0]
Fri Aug 21 16:30:57 2009
Errors in file e:\oracle\product\10.1.0\admin\orcl\bdump\orcl_arc1_186560.trc:
ORA-00313: open failed for members of log group 1 of thread 1~~~
会出现警告 在instance recover时 和incrmental checkpoint时候
直接drop 这个member也不行 因为不可以drop 活动的
可以切换 然后drop member add member
or switch后
SQL> alter database clear logfile group 1;~~~会自动重新建立
Database altered.
~~~~~~~
非活动的group 中所有member全丢失
SQL> select group#,status,members from v$log;
GROUP# STATUS MEMBERS
---------- ---------------- ----------
1 UNUSED 3~~~~~~~~~~~~~刚才clear 后重新建立的 还未使用过
2 INACTIVE 1
3 CURRENT 1
4 INACTIVE 2
SQL> select group#,member from v$logfile where group#=2;
GROUP#
----------
MEMBER
--------------------------------------------------------------------------------
2
E:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\REDO02.LOG
SQL> startup force;
ORACLE instance started.
Total System Global Area 171966464 bytes
Fixed Size 787988 bytes
Variable Size 145488364 bytes
Database Buffers 25165824 bytes
Redo Buffers 524288 bytes
Database mounted.
Database opened.
SQL> startup force mount;
ORACLE instance started.
Total System Global Area 171966464 bytes
Fixed Size 787988 bytes
Variable Size 145488364 bytes
Database Buffers 25165824 bytes
Redo Buffers 524288 bytes
Database mounted.
SQL> host del E:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\REDO02.LOG;
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-00313: open failed for members of log group 2 of thread 1
ORA-00312: online log 2 thread 1:
'E:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\REDO02.LOG'
SQL> alter database clear logfile group 2; (open 时候丢失也可以用这个 如果要归档unarchived, 另外可以drop group ,add group)
Database altered.
SQL> alter database open;
Database altered.
~~~~~~~~~~情况3 当前current日志丢失 这个需要不完全恢复了~理由很简单 current中 有未写入datafile 的drity buffer,也有写入datafile未commit的 总之 datafile不一致
SQL> select group#,status,members from v$log;
GROUP# STATUS MEMBERS
---------- ---------------- ----------
1 INACTIVE 3
2 CURRENT 1
3 INACTIVE 1
4 INACTIVE 2
SQL> startup force mount;
ORACLE instance started.
Total System Global Area 171966464 bytes
Fixed Size 787988 bytes
Variable Size 145488364 bytes
Database Buffers 25165824 bytes
Redo Buffers 524288 bytes
SQL> select group#,status,members from v$log;
GROUP# STATUS MEMBERS
---------- ---------------- ----------
1 INACTIVE 3
2 CURRENT 1
3 INACTIVE 1
4 INACTIVE 2
SQL> host del E:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\REDO02.LOG;
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-00313: open failed for members of log group 2 of thread 1
ORA-00312: online log 2 thread 1:
'E:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\REDO02.LOG'
ORA-27041: unable to open file
OSD-04002: unable to open file
O/S-Error: (OS 2) 系统找不到指定的文件。
SQL> alter database clear unarchived logfile group 2;
alter database clear unarchived logfile group 2
*
ERROR at line 1:
ORA-01624: log 2 needed for crash recovery of instance orcl (thread 1)
ORA-00312: online log 2 thread 1:
'E:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\REDO02.LOG'
SQL> alter database drop logfile group 2;
alter database drop logfile group 2
*
ERROR at line 1:
ORA-01623: log 2 is current log for instance orcl (thread 1) - cannot drop ~以上是模拟一下这种情况force后需要crash recovery但 current logfile删除了
ORA-00312: online log 2 thread 1: 不允许clear,不允许drop
'E:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\REDO02.LOG'
LIST BACKUP
File LV Type Ckp SCN Ckp Time Name
---- -- ---- ---------- ---------- ----
1 Full 7688214 21-8月 -09 E:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\SYSTE
M01.DBF
2 Full 7688214 21-8月 -09 E:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\UNDOT
BS01.DBF
3 Full 7688214 21-8月 -09 E:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\SYSAU
X01.DBF
4 Full 7688214 21-8月 -09 E:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\USERS
01.DBF
5 Full 7688214 21-8月 -09 E:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\EXAMP
LE01.DBF
10 Full 7688214 21-8月 -09 D:\TEST.DBF
RMAN> restore database;
Starting restore at 21-8月 -09
using target database controlfile instead of recovery catalog~~~~~~~~~~~~~~~
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=158 devtype=DISK
restoring datafile 00001 to E:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\SYSTEM01.DBF
restoring datafile 00002 to E:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\UNDOTBS01.DBF
restoring datafile 00003 to E:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\SYSAUX01.DBF
restoring datafile 00004 to E:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\USERS01.DBF
restoring datafile 00005 to E:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\EXAMPLE01.DBF
restoring datafile 00010 to D:\TEST.DBF
channel ORA_DISK_1: restore complete
Finished restore at 21-8月 -09
SQL> revover database ;~~~~~~~~~不能完全恢复
ORA-00283: recovery session canceled due to errors
ORA-00313: open failed for members of log group 2 of thread 1
ORA-00312: online log 2 thread 1:
'E:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\REDO02.LOG'
ORA-27041: unable to open file
OSD-04002: unable to open file
O/S-Error: (OS 2) 系统找不到指定的文件。
ORA-01112: media recovery not started
SQL> recover database until cancel;~~~能应用到哪算哪
ORA-00279: change 7770598 generated at 08/21/2009 17:01:10 needed for thread 1
ORA-00289: suggestion :
E:\ORACLE\PRODUCT\10.1.0\FLASH_RECOVERY_AREA\XHTEST\ARCHIVELOG\2009_08_21\O1_MF_
1_6_%U_.ARC
ORA-00280: change 7770598 for thread 1 is in sequence #6
Specify log: {=suggested | filename | AUTO | CANCEL}
auto
SQL> select checkpoint_change# from v$database;
CHECKPOINT_CHANGE#
------------------
7770599~~~~~~~~~~~~~~~~~~~~来自controlfile
SQL> select checkpoint_change# from v$datafile;
CHECKPOINT_CHANGE#
------------------
7770599
7770599
7770599~~~~~~~~~~~~~~~~~~~~来自controlfile
7770599
7770599
7770599
6 rows selected.
SQL> select checkpoint_change# from v$datafile_header;
CHECKPOINT_CHANGE#
------------------
7770598
7770598
7770598 ~~~~~~~~~~~~~~~~~~~~来自datafile
7770598
7770598
7770598
6 rows selected.
SQL> ALTER DATABASE OPEN RESETLOGS;
Database altered.
SQL> select checkpoint_change# from v$datafile;
CHECKPOINT_CHANGE#
------------------
7770600
7770600
7770600
7770600
7770600
7770600
6 rows selected.
SQL> select checkpoint_change# from v$datafile_header;
CHECKPOINT_CHANGE#
------------------
7770600
7770600
7770600
7770600
7770600
7770600
6 rows selected.
SQL> select checkpoint_change# from v$database;
CHECKPOINT_CHANGE#
------------------
7770600
SQL> select group#,status,members from v$log;
GROUP# STATUS MEMBERS
---------- ---------------- ----------
1 UNUSED 3~~~~~~~~~~~~~~~~~resetlogs时候都重新建立了
2 CURRENT 1
3 UNUSED 1
4 UNUSED 2
不完全恢复 应用到最后可以应用的archivedlog后,后面的数据都将丢失.
~~~~~~~~~~~~~~~~~~~
情况4 没有备份的情况下 丢失 current redo file;
SQL> archive log list;
数据库日志模式 存档模式
自动存档 启用
存档终点 f:\archivelog
最早的联机日志序列 61
下一个存档日志序列 62
当前日志序列 62
SQL> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 CURRENT
2 INACTIVE
3 UNUSED
SQL> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 CURRENT
2 INACTIVE
3 UNUSED
SQL> conn xh/a831115
已连接。
SQL> show user
USER 为 "XH"
SQL> select * from test;
A
----------
bbb
SQL> insert into test values('aaa');
已创建 1 行。
SQL> select * from test;
A
----------
bbb
aaa
SQL> shutdown abort
ORA-01031: 权限不足
SQL> conn / as sysdba
已连接。
SQL> shutdown abort
ORACLE 例程已经关闭。
SQL> host del F:\oracle\product\10.2.0\oradata\xhtest\redo01.log;
SQL> startup
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE 例程已经启动。
Total System Global Area 289406976 bytes
Fixed Size 1248576 bytes
Variable Size 79692480 bytes
Database Buffers 201326592 bytes
Redo Buffers 7139328 bytes
数据库装载完毕。
ORA-00313: 无法打开日志组 1 (用于线程 1) 的成员
ORA-00312: 联机日志 1 线程 1:
'F:\ORACLE\PRODUCT\10.2.0\ORADATA\XHTEST\REDO01.LOG'
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
SQL> alter database clear logfile group 1;
alter database clear logfile group 1
*
第 1 行出现错误:
ORA-01624: 日志 1 是紧急恢复实例 xhtest (线程 1) 所必需的
ORA-00312: 联机日志 1 线程 1:
'F:\ORACLE\PRODUCT\10.2.0\ORADATA\XHTEST\REDO01.LOG'
SQL> alter database drop logfile group 1;
alter database drop logfile group 1
*
第 1 行出现错误:
ORA-01623: 日志 1 是实例 xhtest (线程 1) 的当前日志 - 无法删除
ORA-00312: 联机日志 1 线程 1:
'F:\ORACLE\PRODUCT\10.2.0\ORADATA\XHTEST\REDO01.LOG'
因为是current log file,drop clear都不行(因为是abort关闭的 需要instance recovery)
此时只能 不完全恢复,但现在情况是 没有备份
SQL> recover database;
ORA-00283: 恢复会话因错误而取消
ORA-00313: 无法打开日志组 1 (用于线程 1) 的成员
ORA-00312: 联机日志 1 线程 1:
'F:\ORACLE\PRODUCT\10.2.0\ORADATA\XHTEST\REDO01.LOG'
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
current log file丢失 完全恢复是不行的.
SQL> recover database until cancel;
ORA-00279: 更改 4714463 (在 10/22/2009 14:04:13 生成) 对于线程 1 是必需的
ORA-00289: 建议: F:\ARCHIVELOG\ARC00062_0700761652.001
ORA-00280: 更改 4714463 (用于线程 1) 在序列 #62 中
指定日志: {=suggested | filename | AUTO | CANCEL}
auto
ORA-00308: 无法打开归档日志 'F:\ARCHIVELOG\ARC00062_0700761652.001'
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
ORA-00308: 无法打开归档日志 'F:\ARCHIVELOG\ARC00062_0700761652.001'
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 将出现如下错误
ORA-01194: 文件 1 需要更多的恢复来保持一致性
ORA-01110: 数据文件 1: 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\XHTEST\SYSTEM01.DBF'
SQL> alter database open resetlogs;
alter database open resetlogs
*
第 1 行出现错误:
ORA-01194: 文件 1 需要更多的恢复来保持一致性
ORA-01110: 数据文件 1: 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\XHTEST\SYSTEM01.DBF'
由于没有备份 不完全恢复 是进行不 了的,会有错误 ,用的是最近最新的datafile
此时只能尝试使用隐藏参数来强制open resetlogs database
set linesize 132
column name format a30
column value format a25
select
x.ksppinm name,
y.ksppstvl value,
y.ksppstdf isdefault,
decode(bitand(y.ksppstvf,7),1,'MODIFIED',4,'SYSTEM_MOD','FALSE') ismod,
decode(bitand(y.ksppstvf,2),2,'TRUE','FALSE') isadj,x. KSPPDESC
from
sys.x$ksppi x,
sys.x$ksppcv y
where
x.inst_id = userenv('Instance') and
y.inst_id = userenv('Instance') and
x.indx = y.indx and
x.ksppinm like '%_&par%'
order by
translate(x.ksppinm, ' _', ' ')
/
、
输入 par 的值: allow_resetlogs_corruption
原值 14: x.ksppinm like '%_&par%'
新值 14: x.ksppinm like '%_allow_resetlogs_corruption%'
NAME VALUE ISDEFAULT ISMOD IS
ADJ
------------------------------ ------------------------- --------- ---------- --
---
KSPPDESC
--------------------------------------------------------------------------------
----------------------------------------------------
_allow_resetlogs_corruption FALSE TRUE FALSE FA
LSE
allow resetlogs even if it will cause corruption
这将让oracle 忽略scn的不匹配,强制resetlogs open 然后强制同步数据文件 控制文件,redo
SQL> alter system set "_allow_resetlogs_corruption"=true scope=spfile;
系统已更改。
SQL> startup force
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE 例程已经启动。
Total System Global Area 289406976 bytes
Fixed Size 1248576 bytes
Variable Size 79692480 bytes
Database Buffers 201326592 bytes
Redo Buffers 7139328 bytes
数据库装载完毕。
ORA-00313: 无法打开日志组 1 (用于线程 1) 的成员
ORA-00312: 联机日志 1 线程 1: 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\XHTEST\REDO01.LO
G'
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
SQL> recover database until cancel;
ORA-00279: 更改 4714463 (在 10/22/2009 14:04:13 生成) 对于线程 1 是必需的
ORA-00289: 建议: F:\ARCHIVELOG\ARC00062_0700761652.001
ORA-00280: 更改 4714463 (用于线程 1) 在序列 #62 中
指定日志: {=suggested | filename | AUTO | CANCEL}
auto
ORA-00308: 无法打开归档日志 'F:\ARCHIVELOG\ARC00062_0700761652.001'
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
ORA-00308: 无法打开归档日志 'F:\ARCHIVELOG\ARC00062_0700761652.001'
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 将出现如下错误
ORA-01194: 文件 1 需要更多的恢复来保持一致性
ORA-01110: 数据文件 1: 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\XHTEST\SYSTEM01.DBF'
SQL> alter database open resetlogs;
需要很长 时间 有可能会话超时
第 1 行出现错误:
ORA-03113: 通信通道的文件结束
SQL> exit
从 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options 断开
C:\>sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 10月 22 15:11:06 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
已连接到空闲例程。
SQL> startup
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE 例程已经启动。
Total System Global Area 289406976 bytes
Fixed Size 1248576 bytes
Variable Size 79692480 bytes
Database Buffers 201326592 bytes
Redo Buffers 7139328 bytes
数据库装载完毕。
数据库已经打开。
SQL> conn xh/a831115
已连接。
SQL> select * from test;
A
----------
bbb
看到 会丢失数据,aaa数据丢失了,因为数据在current log file中。
SQL> archive log list;
数据库日志模式 存档模式
自动存档 启用
存档终点 f:\archivelog
最早的联机日志序列 1
下一个存档日志序列 2
当前日志序列 2
SQL> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 INACTIVE
2 CURRENT~~~~~~~~
3 UNUSED
SQL> conn xh/a831115
已连接。
SQL> show user
USER 为 "XH"
SQL> select * from test;
A
----------
bbb
SQL> insert into test values('aaa');
已创建 1 行。
SQL> select * from test;
A
----------
bbb
aaa
SQL> commit;
提交完成。
SQL> conn / as sysdba
已连接。
SQL> shutdown abort
ORACLE 例程已经关闭。
SQL> host del F:\oracle\product\10.2.0\oradata\xhtest\redo02.log;
SQL> startup
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE 例程已经启动。
Total System Global Area 289406976 bytes
Fixed Size 1248576 bytes
Variable Size 79692480 bytes
Database Buffers 201326592 bytes
Redo Buffers 7139328 bytes
数据库装载完毕。
ORA-00313: 无法打开日志组 2 (用于线程 1) 的成员
ORA-00312: 联机日志 2 线程 1:
'F:\ORACLE\PRODUCT\10.2.0\ORADATA\XHTEST\REDO02.LOG'
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
SQL> recover database until cancel;
ORA-00279: 更改 4734470 (在 10/22/2009 15:11:16 生成) 对于线程 1 是必需的
ORA-00289: 建议: F:\ARCHIVELOG\ARC00002_0700931062.001
ORA-00280: 更改 4734470 (用于线程 1) 在序列 #2 中
指定日志: {=suggested | filename | AUTO | CANCEL}
auto
ORA-00308: 无法打开归档日志 'F:\ARCHIVELOG\ARC00002_0700931062.001'
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
ORA-00308: 无法打开归档日志 'F:\ARCHIVELOG\ARC00002_0700931062.001'
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 将出现如下错误
ORA-01194: 文件 1 需要更多的恢复来保持一致性
ORA-01110: 数据文件 1: 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\XHTEST\SYSTEM01.DBF'
SQL> alter database open resetlogs;
SQL> conn xh/a831115
已连接。
SQL> select * from test;
A
----------
bbb
commit了 还是丢了
继续实验一次 这次 让dirty block写入datafile
SQL> insert into test values('aaa');
已创建 1 行。
SQL> select * from test;
A
----------
bbb
aaa
SQL> commit;
提交完成。
SQL> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 INACTIVE
2 INACTIVE
3 CURRENT
SQL> alter system flush buffer_cache;启动dbwn将dirty block写入datafile
系统已更改。
SQL> conn / as sysdba
已连接。
SQL> shutdown abort
ORACLE 例程已经关闭。
SQL> host del F:\oracle\product\10.2.0\oradata\xhtest\redo03.log;
SQL> startup
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE 例程已经启动。
Total System Global Area 289406976 bytes
Fixed Size 1248576 bytes
Variable Size 79692480 bytes
Database Buffers 201326592 bytes
Redo Buffers 7139328 bytes
数据库装载完毕。
ORA-00313: 无法打开日志组 3 (用于线程 1) 的成员
ORA-00312: 联机日志 3 线程 1:
'F:\ORACLE\PRODUCT\10.2.0\ORADATA\XHTEST\REDO03.LOG'
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
SQL> recover database until cancel;
ORA-00279: 更改 4775285 (在 10/22/2009 15:29:45 生成) 对于线程 1 是必需的
ORA-00289: 建议: F:\ARCHIVELOG\ARC00003_0700931997.001
ORA-00280: 更改 4775285 (用于线程 1) 在序列 #3 中
指定日志: {=suggested | filename | AUTO | CANCEL}
auto
ORA-00308: 无法打开归档日志 'F:\ARCHIVELOG\ARC00003_0700931997.001'
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
ORA-00308: 无法打开归档日志 'F:\ARCHIVELOG\ARC00003_0700931997.001'
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 将出现如下错误
ORA-01194: 文件 1 需要更多的恢复来保持一致性
ORA-01110: 数据文件 1: 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\XHTEST\SYSTEM01.DBF'
SQL> alter database open resetlogs;
数据库已更改。
SQL> conn xh/a831115
已连接。
SQL> select * from test;
A
----------
bbb
aaa~~~~~~~~~~~~~~~~~数据没丢
总结:如果curren redo log 丢失 那么 没提交的 数据肯定是要丢失,提交的数据 如果没有写入datafile也将丢失(commit 不代表 dbwn启动 将 数据写入datafile,他们之间没有触发关系),原因 由于是abort 所以没有产生 full checkpoint (将触发dbwr将dirty block写入 datafile),而abort后 需要instance recovery 应用current log file 将已COMMIT or 未commit的 dirty block都先写到datafile中 由于curreng log file 丢失 所以 无法instance recovery 造成未写入数据文件的已经提交的数据丢失.
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12020513/viewspace-612885/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/12020513/viewspace-612885/