li
  当前位置:主页 > 性能优化 > 文章内容
li
oracle 在线日志文件损坏与ora-600 [4000]处理
来源: itpub.net  作者: 缥缈游侠    时间:2008-03-11   阅读:30  
本文章共1916字,分2页,当前第1页,快速翻页:
 


这次又是一台机器上面有两个实例A和B。又是由于非当前的在线日志文件的状态是处于closed状态的(裸设备),于是dba将A节点的非当前在线日志文件填加到了B节点上面去了,于是在A节点日志发生切换时,导致了当前在线日志文件损坏。

一般情况下当前在线日志文件损坏也是还好处理的,但是这次却是较为复杂。。。。

系统环境:aix p550,oracle 9206


首先检查v$datafile_header,发现checkpoint_change#都是一致的。

于是按着一般的当前在线日志文件损坏步骤处理:

增加下列参数至Oracle启动文件:

_allow_resetlogs_corruption=TRUE

_corrupted_rollback_segments=(list of all your rollback segments)
注释掉启动文件中的rollback_segments参数或undo_tablespaces参数
startup mount
recover database until cancel
alter database open resetlogs;

一般情况下,open resetlogs后最容易出现的600号错误为ora-600 [2662]和ora-600 [2256]。这两个错误也相对来说好处理一些,只需要采用10015事件adjust scn号即可。

但是这次我却是碰到了ora-600 [4000]号错误。

Errors in file /home/oracle/app/oracle/admin/test/udump/test_ora_2838638.trc:
ORA-00704: bootstrap process failure
ORA-00704: bootstrap process failure
ORA-00600: internal error code, arguments: [4000], [46], [], [], [], [], [], []
Mon Aug 14 15:05:31 2006
Error 704 happened during db open, shutting down database
USER: terminating instance due to error 704
Instance terminated by USER, pid = 2838638

metalink上对该错误的解释是:

DESCRIPTION:

This has the potential to be a very serious error.

It means that Oracle has tried to find an undo segment number in the
dictionary cache and failed.

ARGUMENTS:
Arg [a] Undo segment number

FUNCTIONALITY:
KERNEL TRANSACTION UNDO

IMPACT:
INSTANCE FAILURE - Instance will not restart
STATEMENT FAILURE

由于一开始_corrupted_rollback_segments里面只是列到_syssmu20$,于是将它列到_syssmu60$。重试后还是报这个错。

增加10513事件,禁止smon进程回滚,结果还是一样。

在600号的Trace文件中有:

ORA-00600: internal error code, arguments: [4000], [46], [], [], [], [], [], []
Current SQL statement for this session:
select ctime, mtime, stime from obj$ where obj# = :1

于是我怀疑会不会是undo$基表中没有46号回滚段的信息?

采用bbed检查undo$表格,发现里面是有这个回滚段的信息。

于是我想这个错误是出现在访问obj$基表上面,也就是说该表格的scn号与系统当前的scn号是不一致的。于是我想偿试修改该块的scn号。依然采用bbed,偿试修改该块的scn号。修改后,结果还是一样的。

于是我想应该是obj$基表上还有一个未提交的事务。于是继续查看trace文件,发现如下信息:

Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x002e.025.00005b2c 0x00800f78.080c.01 --U- 1 fsc 0x0000.c5b527cf

data_block_dump,data header at 0x700000001f6e044
===============
tsiz: 0x1fb8
hsiz: 0xea
pbl: 0x700000001f6e044
bdba: 0x0040007a
76543210
flag=--------

很明显,是有一个未提交的事务,于是我就偿试用bbed修改该事务的状态,将该事务改成提交状态。

首先找到itl信息:find /x 00005b2c,找到flag状态,现在其状态是20,也就是未提交,将之修改为80(提交状态),并修改checkval。

之后去掉所有隐含参数,正常启动数据库,发现后台报出了ora-600[2662]错误。哈哈,事情至此就好办了,采用10015 adjust scn号,正常启动数据库:


阅读更多内容1 · 2 · 下一页>>


  上一篇: oracle数据库版本升级后导致的ca...   下一篇: ORA-00604:案例学习Oracle错误
li
 §相关评论  
 热点文章

·Resize datafile导致ASM Crash
·在Oracle10g RAC下新增ASM磁盘
·ORACLE SQL性能优化系列 (一)
·oracle性能调优:管理oracle日志
·oracle RAC环境中系统时钟的调
·why:Rac的心跳线不支持交叉线?
·RAC的VIP及实例依赖关系:版本O
·如何启动DataGuard的备用数据库
·系统表空间IO错误 数据损坏处理
·不幸中的万幸:遭遇ORA-00600 [
·用ORACLE的高级复制实现内外网
li
 编辑推荐
·Resize datafile导致ASM Crash
·在Oracle10g RAC下新增ASM磁盘
·ORACLE SQL性能优化系列 (一)
·oracle性能调优:管理oracle日志
·oracle RAC环境中系统时钟的调
·why:Rac的心跳线不支持交叉线?
·RAC的VIP及实例依赖关系:版本O
·如何启动DataGuard的备用数据库
·系统表空间IO错误 数据损坏处理
·不幸中的万幸:遭遇ORA-00600 [
·用ORACLE的高级复制实现内外网
li
 相关篇章
·oracle数据库版本升级后导致的ca...
·oracle rac案例:时间同步问题导致...
·RMAN备份还原时出现Ora-01220错误...
·oracle rman备份时出现ORA-19502...
·oracle10g RAC中VIP和实例的版本...
·ora-12514错误以及解决方案
·Oracle 10g RAC for AIX安装配置...
·AIX下oracle10g rac:ora-12545错...
·全面解析Oracle数据库字符集问题
·如何整理Oracle数据库碎片
·ORA-00604:案例学习Oracle错误
·oracle ORA-00904 错误解决
·ORA-01631错误解决方法
·ORA-27123 错误解决方法 unable ...
·ORA-12516: TNS:监听程序找不到符...
·ORA-04052,TNS-12640错误解决方法
·影响Oracle数据库性能的主要因素
·ORA-00257错误解决方法
·ORA-00604 error occurred at re...
·Oracle 11g最有特点的五大新特性
 
li
设为首页 | 关于我们 | 技术服务 | 收藏本站 | 网站地图 | 联系方式 | 本站友情连接