_disable_logging 对于归档数据库的影响

 

_disable_logging 对于归档数据库的影响

2008-6-23

事件:为了测试硬盘IO是否是影响数据库性能的瓶颈,将数据库关闭redo log记录。设置_disable_loggingtrue。测试结束后,直接alter system set "_disable_logging"=false; alter system switch logfile; 后一直做不完,DB Hang

分析:

检查alert log发现很多类似报错,主要如下:

Sat Jun 21 15:05:06 2008

ALTER SYSTEM SET _disable_logging=TRUE SCOPE=BOTH;     

Sat Jun 21 15:06:04 2008

Thread 1 advanced to log sequence 132

 Current log# 3 seq# 132 mem# 0: /ANTIDB_DS/redo/redo03.log

 Current log# 3 seq# 132 mem# 1: /ANTIDB_D01/redo/redo03.log

Sat Jun 21 15:06:06 2008

ARC1: Log corruption near block 820285 change 7006681 time ?

Sat Jun 21 15:06:06 2008

Errors in file /oracle/admin/antidb1/bdump/antidb1_arc1_3672.trc:

ORA-00354: corrupt redo log block header

ORA-00353: log corruption near block 820285 change 7006681 time 06/21/2008 14:38:31

ORA-00312: online log 2 thread 1: '/ANTIDB_D01/redo/redo02.log'

ORA-00312: online log 2 thread 1: '/ANTIDB_DS/redo/redo02.log'

ARC1: All Archive destinations made inactive due to error 354

Sat Jun 21 15:06:06 2008

ARC1: Closing local archive destination LOG_ARCHIVE_DEST_1: '/ANTIDB_ARCH/ANTIDB11_131_657212803.arc' (error 354)

 (antidb1)

Committing creation of archivelog '/ANTIDB_ARCH/ANTIDB11_131_657212803.arc' (error 354)

Sat Jun 21 15:06:17 2008

ARC1: Failed to archive thread 1 sequence 131 (354)

ARCH: Archival stopped, error occurred. Will continue retrying

Sat Jun 21 15:06:17 2008

ORACLE Instance antidb1 - Archival Error

原因:

在归档数据库下,如果设置了 _disable_loggingtrue,那么数据库就会将所有的online redo logfile标记为corrput,从而在归档数据库下不能够正常的归档了,因此,每次需要当数据库中所有的日志组归档状态都为“NO”,且STATUS列的值出现n-1个“INACTIVE”和一个“CURRENT”时,即,除了当前日志外,其余所有的日志都是不活动且没有归档的时候,对数据库的所有操作(只要产生的日志超过current日志的可用大小的时候,也就是需要发生日志切换的时候)就会hang

处理:

1、检查log 状态

Select * from v$log;

发现 3组日志的archive 状态都是no,难怪在日志切换的时候不能用。

 

2、 依次对所有没有归档的日志做清理未归档日志的工作

根据alert log的错误,依次对redo log 做清理

alter database clear unarchived logfile group 2;    

alter database clear unarchived logfile group 3;

alter database clear unarchived logfile group 1;

需要清理哪些日志,你可以根据alert.log的报错来做,比如这里,当你清理了日志组2,alert中就开始报关于group 3不能归档的信息;当你清理了日志组3,alert中就开始报关于group 1不能归档的信息。。。,以此类推,所有的日志组都被初始化后,数据库就恢复正常了。

3、再次检查log 状态

Select * from v$log;

此时除了current组日志的archive 状态都是no,其他都是yes,状态为unused。这种状态在log 切换后就会变为正常。

 

4、进行数据库全备份

 

总结:对于隐含参数尽量不要修改,特别是在正式环境。

 

其他信息:

Select * from v$loghist; 查询redo log 切换历史

Select * from v$log;

Select * from v$logfile;

 

转载于:https://www.cnblogs.com/yifan268/archive/2008/06/23/1227979.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值