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



服务热线 : 13764045638 QQ号:47079569 邮箱



 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.


 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.

 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’
  • 原因: 最有可能是因为硬件故障导致了联机重做日志的损坏。






1 alter database clear logfile group <group number>;



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




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

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







沪公网安备 31010802001379号