ORA-00600 7999

今日巡检发现一台数据库alert日志中出现

ORA-00600:internal error code,arguments:[7999],[300]错误,查看MOS上的文档,发现该错误可能是由于BUG11814891 引起,与update lob字段有关,查看trc文件发现是在对一个表做update操作的时候引起的ORA-600报错,查看该表的表结构发现update的其中一个字段果然是blob类型,基本可以定位到BUG 11814891上。



参考以下MOS文档:

Bug 11814891 - ORA-600 [7999] [9] [1] [<lob block rdba>] / ORA-1555 double allocated LOB block [ID 11814891.8]


Affects:

Product (Component)Oracle Server (Rdbms)
Range of versions believed to be affectedVersions BELOW 12.1
Versions confirmed as being affected
Platforms affectedGeneric (all / most platforms affected)

Fixed:

This issue is fixed in

Symptoms:

Related To:

Description

ORA-600 [7999] [9] [1] [<lob block rdba>] / ORA-1555 caused by
a double allocated LOB block after a LOB column UPDATE.
 
The second argument [1] in the ORA-600 [7999] indicates ORA-1.
 
The problem is introduced by an UPDATE producing an ORA-1551 (internal
error not visible to user) of a LOB column based on a subquery. The
statement is basically of the form:
 
   update D set c1 = (select to_lob(c1) from S where D.pk = S.pk)
 
   Where D.c1 is a CLOB column and S.c1 is a LONG column.
 
This problem may occur in both ASSM and MSSM tablespaces.
 
If the problem is detected during SMON transaction recovery, it may cause a
hang / spin which is fixed by Bug 11790175 .
 
The affected rows can be identified by running the next plsql:
 
find_lob.sql :
 set echo on
 TRUNCATE TABLE CORRUPT_LOBS;
 CREATE TABLE CORRUPT_LOBS (corrupt_rowid ROWID, error_number NUMBER);
 set echo off
 set feedback off
 alter session set nls_date_format='YYYY/MM/DD HH24:MI:SS';
 set serveroutput on
 set head off
 set timing on
 set verify off
 set concat off
 declare
  error_1555 exception;
  error_22922 exception;
  pragma exception_init(error_1555,-1555);
  pragma exception_init(error_22922,-22922);
  n number;
  invalid_rows number := 0;
 begin
  for cursor_lob in (select rowid r, &&lob_column from &table_owner.&table_name) loop
  begin
   n := dbms_lob.instr(cursor_lob.&&lob_column,hextoraw('889911')) ;
  exception
   when error_1555 then
    insert into corrupt_lobs values (cursor_lob.r,1555);
    commit;
    invalid_rows := invalid_rows+1;
   when error_22922 then
    insert into corrupt_lobs values (cursor_lob.r,22922);
    commit;
    invalid_rows := invalid_rows+1;
  end;
  end loop;
  if invalid_rows > 0 then /* plsql found invalid rowids */
    dbms_output.put_line('==============================================');
    dbms_output.put_line('Problem found in '||invalid_rows||' rows:');
    dbms_output.put_line('==============================================');
  else
    dbms_output.put_line('No problems identified');
  end if;
 end;
 /
 set timing off
 undefine lob_column
 
 select CORRUPT_ROWID
     , dbms_rowid.rowid_relative_fno(CORRUPT_ROWID) rfile#
     , dbms_rowid.rowid_block_number(CORRUPT_ROWID) block#
     , dbms_rowid.ROWID_ROW_NUMBER(CORRUPT_ROWID) row#
     , error_number
 from corrupt_lobs;
 
Note:
  If a system encounters this bug then the corruption introduced
  can also cause a spin in SMON. See bug 11790175 for details.
 
Getting a Fix
 Use one of the "Fixed" versions listed above
 (for Patch Sets / bundles use the latest version available as
  contents are cumulative - the "Fixed" version listed above is
  the first version where the fix is included)
 or
 You can check for existing interim patches here: Patch:11814891
 or
 Click here for suggestions on how to get a fix for this issue
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值