eygle.com   eygle.com
eygle.com  
 

« 骄阳似我-俺在八达岭滑雪的照片 | Blog首页 | Internet make Us Closer »

Oracle Diag:如何处理ORA-600 2662错误

作者:eygle |【转载时请以超链接形式标明文章和作者信息及本声明
链接:

ORA-00600 2262错误解决一文中,我曾经提到过,很多时候使用隐含参数_ALLOW_RESETLOGS_CORRUPTION后resetlogs打开数据库,我们可能会由于SCN不一致而遭遇到ORA-00600 2662号错误,这里给出一个完整的例子及解决过程。

当然模拟2662错误需要技巧,本文并不会涉及这个内容。

通过正常方式启动数据库时,从alert文件中,我们可以看到ora-00600 2662号错误。

Sun Dec 11 18:02:25 2005
Errors in file /opt/oracle/admin/conner/udump/conner_ora_13349.trc:
ORA-00600: internal error code, arguments: [2662], [0], [547743994], [0], [898092653], [8388617], [], []
Sun Dec 11 18:02:27 2005
Errors in file /opt/oracle/admin/conner/udump/conner_ora_13349.trc:
ORA-00600: internal error code, arguments: [2662], [0], [547743994], [0], [898092653], [8388617], [], []
Sun Dec 11 18:02:27 2005
Error 600 happened during db open, shutting down database
USER: terminating instance due to error 600

此时我们可以通过Oracle的内部事件来调整SCN:

增进SCN有两种常用方法:

1.通过immediate trace name方式(在数据库Open状态下)

alter session set events 'IMMEDIATE trace name ADJUST_SCN level x';

2.通过10015事件(在数据库无法打开,mount状态下)

alter session set events '10015 trace name adjust_scn level x';

注:level 1为增进SCN 10亿 (1 billion) (1024*1024*1024),通常Level 1已经足够。也可以根据实际情况适当调整。

本例由于数据库无法打开,只能使用的二种方法。

[oracle@jumper dbs]$ sqlplus "/ as sysdba"
SQL*Plus: Release 9.2.0.4.0 - Production on Sun Dec 11 18:26:18 2005
Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
Connected to an idle instance.
SQL> startup mount pfile=initconner.ora
ORACLE instance started.
Total System Global Area   97588504 bytes
Fixed Size                   451864 bytes
Variable Size              33554432 bytes
Database Buffers           62914560 bytes
Redo Buffers                 667648 bytes
Database mounted.
SQL> alter session set events '10015 trace name adjust_scn level 10';
Session altered.
SQL> alter database open;
Database altered.

注意,由于我使用了10015事件,使得SCN增进了10 billion,稍后我们可以验证。 

[oracle@jumper dbs]$ sqlplus "/ as sysdba"
SQL*Plus: Release 9.2.0.4.0 - Production on Sun Dec 11 18:26:18 2005
Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
Connected to an idle instance.
SQL> startup mount pfile=initconner.ora
ORACLE instance started.
Total System Global Area   97588504 bytes
Fixed Size                   451864 bytes
Variable Size              33554432 bytes
Database Buffers           62914560 bytes
Redo Buffers                 667648 bytes
Database mounted.
SQL> alter session set events '10015 trace name adjust_scn level 10';
Session altered.
SQL> alter database open;
Database altered.

此时数据库可以打开,从alert文件中我们可以看到如下提示:

Sun Dec 11 18:27:04 2005
SMON: enabling cache recovery
Sun Dec 11 18:27:05 2005
Debugging event used to advance scn to 10737418240

SCN被增进了10 billion,即 10 * (1024*1024*1024) = 10737418240,正好是日志里记录的数量。

我们从数据库内部看一下检查点的增进情况:

SQL> select open_mode from v$database;
OPEN_MODE
----------
READ WRITE
SQL> select file#,CHECKPOINT_CHANGE# from v$datafile;
     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1          547783998
         2          547783998
         3          547783998
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area   97588504 bytes
Fixed Size                   451864 bytes
Variable Size              33554432 bytes
Database Buffers           62914560 bytes
Redo Buffers                 667648 bytes
Database mounted.
Database opened.
SQL> select file#,CHECKPOINT_CHANGE# from v$datafile;
     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1         1.0737E+10
         2         1.0737E+10
         3         1.0737E+10
SQL> col CHECKPOINT_CHANGE# for 99999999999999999
SQL>  select file#,CHECKPOINT_CHANGE# from v$datafile;
     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1        10737418447
         2        10737418447
         3        10737418447

我们看到CHECKPOINT_CHANGE# 最终被增进了10 Billion.这要是账户上的钱该有多好:)


历史上的今天...
      >> 2008-12-20文章:
             《深入解析Oracle》一书勘误表
      >> 2006-12-20文章:
             圣诞快乐与搜索引擎的力量
      >> 2004-12-20文章:
             纪念Veritas的离去
             Gmail你还需要吗?
             Rman Crosscheck删除失效归档
             SUN的DISKSUITE
             Man Page Of METASTAT
------
这篇 【Oracle Diag:如何处理ORA-600 2662错误】来自 eygle.com | CSDN网摘| del.icio.us|Google订阅 | 鲜果订阅 | 抓虾订阅

By eygle on 2005-12-20 19:52 | Comments (3) | Posted to Backup&Recovery | Case | Internal | Edit |

相关文章 随机文章
  • 如何调整Oracle Redo Logfile日志文件的大小
  • 获得Redo Block Size的非典型方法
  • 隐含参数_disable_logging的几点说明
  • 转储日志文件头 获得日志信息
  • Oracle Hidden Parameter:_allow_resetlogs_corruption
  • 将出席Quest的数据库开发及管理研讨会
    《深入浅出Oracle》修订稿第二章目录
    《深度解析Oracle》之《循序渐进Oracle》
    使用热备份进行分时恢复
    结束Quest的数据库开发及管理研讨会
    搜索本站:

    Listed below are links to weblogs that reference Oracle Diag:如何处理ORA-600 2662错误:

    » Oracle HowTo: How to deal with Ora-600 4193 error from Friends Life and Oracle
    在解决2662错误之后,经常会出现Ora-00600 4193错误,经常可以在alert文件中看到的错误号类似 [Read More]

    Tracked on September 7, 2006 1:55 PM

    留言 (3)

    学习

    Posted by: happy at January 17, 2006 11:46 AM

    Test

    Posted by: eygle at September 4, 2006 2:56 PM

    您好,
    我是IPI猎头顾问Mandy,很高兴通过电话认识您,谢谢您的信任与支持!
    目前,我们的客户是路透社,它是国际知名的金融信息提供商,以其媒体平台为基础,路透社可为Stanley等金融机构提供金融信息产品。2006年8月,路透社在中国北京成立研发中心,主要是将WEB层和后台数据库之间的研发工作放在中国。目前,该研发中心大约有200人。
    我们现在需要的技术人员要具备以下任意一种技术,要求3年以上工作经验:
    1、 OracleDBA
    2、 C++,COM
    3、 Perl,SQL,Sybase

    附上正在热招的职位说明,请查阅。
    请将简历更新后赠我一份。如有问题,欢迎随时联系我。
    祝 工作顺利 生活开心!

    fanxuan1983@hotmail.com

    Posted by: 范萱 at July 10, 2007 10:48 AM

    发表留言:



    Remember Me?
    (输入验证码后方可评论,谢谢支持)



    CopyRight © 2004~2010 eygle.com, All rights reserved.