ITPub博客

首页 > 数据库 > Oracle > 丢失redo的solution

丢失redo的solution

原创 Oracle 作者:dotaddjj 时间:2011-12-20 14:55:25 0 删除 编辑

今早打开自己的测试库发现alter system switch logfile无法日志交换,具体问题及解决步骤如下:

C:Documents and Settings0990753>sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on 星期二 12月 20 10:19:34 2011

Copyright (c) 1982, 2005, Oracle. All rights reserved.

连接到:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Mining options

SQL> alter system switch logfile;

总是等待,看来日志交换出了问题,查看v$session_wait有event switch logfile command事件,又查看alertxiaoyu.log发现如下信息

ARC0: All Archive destinations made inactive due to error 354

Deleted Oracle managed file D:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAXIAOYUARCHIVELOG2011_12_20O1_MF_1_12_7GZWCG09_.ARC

ARC0: Failed to archive thread 1 sequence 12 (354)

ARCH: Archival stopped, error occurred. Will continue retrying

Tue Dec 20 10:22:38 2011

Errors in file d:oracleproduct10.2.0adminxiaoyubdumpxiaoyu_arc0_564.trc:

ORA-16038: log 3 sequence# 12 cannot be archived

ORA-00354: corrupt redo log block header

ORA-00312: online log 3 thread 1: 'D:ORACLEPRODUCT10.2.0ORADATAXIAOYUREDO03.LOG'

Tue Dec 20 10:22:42 2011

ARC1: Archiving not possible: No primary destinations

ARC1: Failed to archive thread 1 sequence 12 (4)

ARCH: Archival stopped, error occurred. Will continue retrying

Tue Dec 20 10:22:43 2011

Errors in file d:oracleproduct10.2.0adminxiaoyubdumpxiaoyu_arc1_560.trc:

ORA-16014: log 3 sequence# 12 not archived, no available destinations

ORA-00312: online log 3 thread 1: 'D:ORACLEPRODUCT10.2.0ORADATAXIAOYUREDO03.LOG'

Tue Dec 20 10:22:44 2011

ARC0: Archiving not possible: No primary destinations

Tue Dec 20 10:22:44 2011

ARC1: Archiving not possible: No primary destinations

有个ORA-00354: corrupt redo log block header日志文件块头有错误,ORA-00312: online log 3 thread 1: 'D:ORACLEPRODUCT10.2.0ORADATAXIAOYUREDO03.LOG'日志文件有问题,然后又是ORA-16038: log 3 sequence# 12 cannot be archived,

查看日志归档情况

SQL> select group#,archived,status from v$log;

GROUP# ARCHIVED STATUS

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

1 NO INACTIVE

2 NO CURRENT

3 NO INACTIVE

初步分析应该是redo03日志块头有问题导致redo03一直没有归档成功,由于当前的current是redo02,alter system switch logfile后current会到redo03,此时redo03又没有被归档不能被覆盖所以一直会出现switch logfile command等待。

清空redo03看看是否能日志交换成功

SQL> alter database clear unarchived logfile group 3;

数据库已更改。

SQL> alter system switch logfile;

系统已更改。

看来问题解决了,由于redo02没有归档就清空覆盖了,archivelog已经出现了不连续性,建议马上做个数据库的全备,不然介质恢复时无法跨越这个点而进行恢复。

由于数据库是打开的,不过如果数据库在open时出现redo错误,这里又分为

1 非活动redo

此时checkpoint已经完成了,可以直接

SQL> alter database clear unarchived logfile group 3;

数据库已更改。

Sql>alter database open;

2 current redo或者active redo

如果数据库正常关闭,checkpoint已经完成,即使丢失了活动redo,数据库也可以打开。

SQL> shutdown immediate;

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

SQL> startup;

ORACLE 例程已经启动。

Total System Global Area 373293056 bytes

Fixed Size 1249080 bytes

Variable Size 130023624 bytes

Database Buffers 239075328 bytes

Redo Buffers 2945024 bytes

数据库装载完毕。

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

ORA-00312: 联机日志 1 线程 1:

'D:ORACLEPRODUCT10.2.0ORADATAXIAOYUREDO01.LOG'

此时在os上删除了所有的redo

SQL> alter database clear logfile group 1;

数据库已更改。

SQL> alter database clear logfile group 2;

数据库已更改。

SQL> alter database clear unarchived logfile group 3;

alter database clear unarchived logfile group 3

*

第 1 行出现错误:

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

ORA-00312: 联机日志 3 线程 1:

'D:ORACLEPRODUCT10.2.0ORADATAXIAOYUREDO03.LOG'

ORA-27041: 无法打开文件

OSD-04002: 无法打开文件

O/S-Error: (OS 2) 系统找不到指定的文件。

无法clear需要进行介质恢复

SQL> recover database until cancel;

完成介质恢复。

SQL> alter database open resetlogs;

数据库已更改。

如果数据库异常关闭,checkpoint没有进行,又丢失了活动redo,,因为没有完成checkpoint,数据文件和控制文件已经不一致,而不一致是无法打开数据库的根本原因

此时就需要进行数据库恢复,可以采取不完全恢复,从备份中restore数据文件然后利用最后的一致的archivelog进行不完全恢复,不过由于丢失了活动的redo,会丢失这部分数据.

还可以利用oracle的隐含参数_allow_resetlogs_corruption为true而忽略跳过oracle到open阶段的一致性检查,然后强制recover database until cancel,选择cancel出现错误忽略,最后resetlogs打开数据库,运气好可以顺利open(此时数据库可能已经损坏,建议exp备份 imp重建数据库),不然此时强制open可能会出现一系列的ora-00600等错误,就需要进一步采取恢复了,所以在利用隐含参数时最好做db的冷备份,可以保留现场.

[@more@]

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25362835/viewspace-1056892/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    220
  • 访问量
    1662973