oracle ora00353,ORA-00354,ORA-00353和ORA-00312的處理方法

ORA-00354,ORA-00353和ORA-00312的處理方法

在日志文件損壞或者dump這些損壞的日志文件的時候,通常回收到類似下面的錯誤:

ORA-00354: corrupt redo log block header

ORA-00353: log corruption near block 3740 change 0 time 04/11/2006 13:49:56

ORA-00312: online log 1 thread 1: '/oracle/oradata/TSMISC02/redo01.log'

或者:

sys@TSMISC02> ALTER SYSTEM DUMP LOGFILE '/oracle/oradata/TSMISC02/redo01.log';

ALTER SYSTEM DUMP LOGFILE '/oracle/oradata/TSMISC02/redo01.log'

*

ERROR at line 1:

ORA-00354: corrupt redo log block header

ORA-00353: log corruption near block 3740 change 6918597 time 04/10/2006 23:53:24

ORA-00334: archived log: '/oracle/oradata/TSMISC02/redo01.log'

Elapsed: 00:00:03.36

sys@TSMISC02>

這里首先介紹一下oracle使用日志文件的策略。每一個數據庫至少有兩個或多個日志文件組(redo log group),每個組中至少有一個日志成員(redo log member)。日志文件的主要功能是真實完整的記錄對數據庫作的全部修改。在出現故障時,如果不能將修改數據永久地寫入數據文件,則系統將利用日志前滾來恢復數據庫數據文件。日志文件主要是保護數據庫以防止故障。

如果LGWR至少能夠訪問一個組內的某一個成員,那么oracle就會對這個組內的可訪問成員繼續照常進行讀寫操作,也就是說,LGWR將忽略組內的不可用成員。如果在日志切換時LGWR無法訪問下一個組的所有成員或者損壞的日志文件時改組中日志成員,數據庫的正常操作就無法進行了。這也就是oracle常說的,為了防止日志文件的故障或丟失,強烈建議鏡象日志(mirrored redo log),即,在不同磁盤上維護至少兩個或多個日志文件(redo log member)副本的作用——只要組內有一個可用的成員,oracle就會繼續“正常”操作。

回到這里,如果數據庫發生日志文件的上述損壞,不管是哪種原因造成的,解決方法無外乎是使用完好的文件恢復已經損壞的文件,或者初始化損壞的文件組等等(日志文件的故障處理不做這里的重點介紹,我將會在其他的文章中逐一說明和舉例)。

我們這里主要是使用了_disable_logging=true這個隱含參數(實際性能故障診斷時,你可以通過alert.log找到相關信息)造成了歸檔數據庫中,所有日志不能歸檔,最終數據庫不能繼續操作的問題,因此解決方法就是:

(a)如果是使用了隱含參數,那么去掉這個隱含參數:

alter system set "_disable_logging"=false scope=both;

(b)然后,初始化損壞的redo log:

alter database clear unarchived logfile '';

例如:

sys@TSMISC02> alter system set "_disable_logging"=false scope=both;

System altered.

Elapsed: 00:00:00.01

sys@TSMISC02>

sys@TSMISC02> alter databaseclear unarchived logfile'/oracle/oradata/TSMISC02/redo02.log';

Database altered.

Elapsed: 00:00:00.18

sys@TSMISC02> alter database clear unarchived logfile'/oracle/oradata/TSMISC02/redo03.log';

Database altered.

Elapsed: 00:00:00.17

sys@TSMISC02>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值