Oracle 数据库对DML活动挂起Database Hangs for DML Activity ORA-16038, ORA-00354, ORA-00312

如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!

诗檀软件专业数据库修复团队

服务热线 : 13764045638 QQ号:47079569 邮箱:service@parnassusdata.com

 

ORA-16038

 oerr ora 16038
16038, 00000, "log %s sequence# %s cannot be archived"
// *Cause:  An attempt was made to archive the named file, but the
//          file could not be archived. Examine the secondary error
//          messages to determine the cause of the error.
// *Action: No action is required.

ORA-00354

 oerr ora 354
00354, 00000, "corrupt redo log block header"
// *Cause:  The block header on the redo block indicated by the accompanying
//          error, is not reasonable.
// *Action: Do recovery with a good version of the log or do time based
//          recovery up to the indicated time. If this happens when archiving,
//          archiving of the problem log can be skipped by clearing the log
//          with the UNARCHIVED option. This must be followed by a backup of
//          every datafile to insure recoverability of the database.

ORA-00312
 oerr ora 312
00312, 00000, "online log %s thread %s: '%s'"
// *Cause:  This message reports the filename for details of another message.
// *Action: Other messages will accompany this message. See the
//          associated messages for the appropriate action to take

 

 

  • 症状: 数据库对DML活动挂起 ORA-16038, ORA-00354, ORA-00312
  • 症状: Database hangs for dml (insert, update and delete) activity
  • 症状: ORA-16038: log %s sequence# %s cannot be archived
  • 症状: ORA-00354: corrupt redo log block header
  • 症状: ORA-00312: online log %s thread %s: ‘%s’
  • 原因: 最有可能是因为硬件故障导致了联机重做日志的损坏。

 

 

修复:

 

如果数据库被打开或mount,则尝试损坏的日志号(从错误或v$log检查):

1 alter database clear logfile group <group number>;

 

如果不运作(不太可能成功)则:

2 alter database clear unarchived  logfile group <group number>;

 

如果这个成功,db会运行(不再对dml活动挂起)但你丢失一个归档。这表示你要先创建一个备份,只要备份未完成,你就无法使用之前的备份执行媒体恢复,因为你丢失了一个归档。

 

3 如果 1和 2都不起作用,你需要执行不完全恢复。

关闭db,还原一个备份的所有数据文件(仅数据文件)并启动mount 并发出recover database until cancel and recover until corrupted logfile,然后使用alter database open resetlogs打开;你有了数据丢失(最后损坏的日志文件),在数据库打开后你首先必须创建一个新备份)。

 

如果数据库被关闭且无法被打开,则你只有第三个选择。

 

Comment

*

沪ICP备14014813号-2

沪公网安备 31010802001379号