您的位置:首页 > 其它

已归档的活动在线日志损坏,异常关闭(实验系列)

2011-11-25 15:38 417 查看
实验步骤:

i. SQL> ALTER SYSTEM ARCHIVE LOG START;(自动归档设置)

ii. SQL> truncate table t1;

SQL> insert into t1

2 select dbms_flashback.get_system_change_number

3 from (select rownum from dba_objects where rownum <= 1000) a,

4 (select rownum from dba_objects where rownum <= 1000) b;

SQL> commit;

iii. SQL> SELECT GROUP#,ARCHIVED,FIRST_CHANGE#,SEQUENCE#,STATUS FROM V$LOG;
GROUP# ARC FIRST_CHANGE# SEQUENCE# STATUS

---------------- --- ---------------- ---------------- ----------------

1 YES 2464298 5 ACTIVE

2 NO 2465173 6 CURRENT

3 YES 2444296 4 INACTIVE
iv. SQL> select min(scn) ,max(scn) from t1;
v. MIN(SCN) MAX(SCN)

---------------- ----------------

2465027 2465216(数据操作落在哪些在线日志)
vi. SQL> shutdown abort

ORACLE 例程已经关闭。
vii. 直接手动删除日志(D:\REDO01.LOG被删除)
viii. 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: 无法打开日志组 1 (线程 1) 的成员

ORA-00312: 联机日志 1 线程 1: 'D:\REDO01.LOG'

ORA-27047: 无法读取文件的标题块

OSD-04006: ReadFile() 失败, 无法读取文件

O/S-Error: (OS 38) 到达文件结尾。
ix.
SQL> select hxfil FILENUMBER,fhsta STATUS,fhscn SCN,fhrba_Seq SEQUENCE from x$kcvfh;

FILENUMBER STATUS SCN SEQUENCE ---------------- ------ ---------------- ---------------- 1 4 2464299 5
2 4 2464299 5 3 4 2464299 5 4 4 2464299 5 5 4 2464299 5 6 4 2464299 5 7 4 2464299 5 8 4 2464299 5 9 4 2464299 5 10 4 2464299 5 11 4 2464299 5 12 4 2464299 5 13 4 2464299 5 已选择13行。(数据文件需要介质恢复的第一个日志)

x. SQL> recover database;

ORA-00283: 恢复会话因错误而取消

ORA-00313: 无法打开日志组 1 (线程 1) 的成员

ORA-00312: 联机日志 1 线程 1: 'D:\REDO01.LOG'

ORA-27047: 无法读取文件的标题块

OSD-04006: ReadFile() 失败, 无法读取文件

O/S-Error: (OS 38) 到达文件结尾。
(完全恢复失败,因为在线日志让我们破坏,只能做不完全恢复)
xi. SQL> recover database using backup controlfile;(从归档中去取日志)

ORA-00279: 更改 2464299 (在 07/10/2009 15:21:12 生成) 对于线程 1 是必需的

ORA-00289: 建议: D:\ARCHIVE\1_5.DBF

ORA-00280: 更改 2464299 对于线程 1 是按序列 # 5 进行的

指定日志: {<RET>=suggested | filename | AUTO | CANCEL}

'D:\ARCHIVE\1_5.DBF'

ORA-00279: 更改 2465173 (在 07/10/2009 15:24:19 生成) 对于线程 1 是必需的

ORA-00289: 建议: D:\ARCHIVE\1_6.DBF

ORA-00280: 更改 2465173 对于线程 1 是按序列 # 6 进行的

ORA-00278: 此恢复不再需要日志文件 'D:\ARCHIVE\1_5.DBF'
(不用until cancel已经确定可以恢复到最新的状态)
(不完全恢复实际上 oracle自动根据 归档路径的参数 和日志序列号 自动生成的路径去找的)
xii. ORA-00279: 更改 2465173 (在 07/10/2009 15:24:19 生成) 对于线程 1 是必需的

ORA-00289: 建议: D:\ARCHIVE\1_6.DBF

ORA-00280: 更改 2465173 对于线程 1 是按序列 # 6 进行的

ORA-00278: 此恢复不再需要日志文件 'D:\ARCHIVE\1_5.DBF'

指定日志: {<RET>=suggested | filename | AUTO | CANCEL}

D:\REDO02.LOG

已应用的日志。

完成介质恢复。(不完全恢复最后一步需要输入日志路径)
xiii. SQL> alter database open resetlogs;

数据库已更改。
xiv. SQL> select min(scn) ,max(scn) from t1;

MIN(SCN) MAX(SCN)

---------------- ----------------

2465027 2465216

已选择 1 行。
xv. 恢复完成!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: