Heim  >  Artikel  >  Datenbank  >  ORA-00600: internal error code, arguments: [kqlnrc_1], [0x70

ORA-00600: internal error code, arguments: [kqlnrc_1], [0x70

PHP中文网
PHP中文网Original
2016-06-07 17:58:031458Durchsuche

今天早上做数据库巡检,发现alert日志里出现如下错误: Errors in file /home/Oracle/admin/exmxsbusi/udump/exmxsbusi2_ora_27477.trc: ORA-00600: 内部错误代码, 参数: [kqlnrc_1], [0x15E465678], [], [], [], [], [], [] Mon Jun 18 10:11:31 CST 2012 Er

今天早上做数据库巡检,发现alert日志里出现如下错误:

Errors in file /home/Oracle/admin/exmxsbusi/udump/exmxsbusi2_ora_27477.trc:
ORA-00600: 内部错误代码, 参数: [kqlnrc_1], [0x15E465678], [], [], [], [], [], []
Mon Jun 18 10:11:31 CST 2012


Errors in file /home/Oracle/admin/exmxsbusi/udump/exmxsbusi2_ora_27477.trc:
ORA-00600: 内部错误代码, 参数: [kqlnrc_1], [0x15E465678], [], [], [], [], [], []
Mon Jun 18 10:11:55 CST 2012
Errors in file /home/Oracle/admin/exmxsbusi/udump/exmxsbusi2_ora_27477.trc:
ORA-00600: 内部错误代码, 参数: [kqlnrc_1], [0x15E465678], [], [], [], [], [], []
查看trace文件:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options
Oracle_HOME = /home/oracle/db
System name: Linux
Node name: cpexmxsii-coddb-02
Release: 2.6.18-194.1.AXS3
Version: #1 SMP Fri May 7 10:03:53 CST 2010
Machine: x86_64
Instance name: exmxsbusi2
Redo thread mounted by this instance: 2
Oracle process number: 504
Unix process pid: 27477, image:Oracle@cpexmxsii-coddb-02

*** ACTION NAME:(Main session) 2012-06-18 10:11:14.231
*** MODULE NAME:(PL/SQL Developer) 2012-06-18 10:11:14.231
*** SERVICE NAME:(exmxsbusi) 2012-06-18 10:11:14.231
*** SESSION ID:(155.2098) 2012-06-18 10:11:14.231
*** 2012-06-18 10:11:14.231
ksedmp: internal or fatal error
ORA-00600: 内部错误代码, 参数: [kqlnrc_1], [0x15E465678], [], [], [], [], [], []
Current SQL statement for this session:
declare
  c integer := 0;
  p1 varchar2(500);
  p2 varchar2(500);
  expr varchar2(500);
  dblink varchar2(500);
  part1_type integer;
  object_number integer;
  dp integer;
begin
  :object_type := null;
  :object_owner := null;
  :object_name := null;
  :sub_object := null;
  expr := :part1;
  if :part2 is not null then expr := expr || '.' || :part2; end if;
  if :part3 is not null then expr := expr || '.' || :part3; end if;
  loop
    begin
      sys.dbms_utility.name_resolve(name => expr,
                                    context => c,
                                    schema => :object_owner,
                                    part1 => p1,
                                    part2 => p2,
                                    dblink => dblink,
                                    part1_type => part1_type,
                                    object_number => object_number);
      if part1_type = 1 then :object_type := 'INDEX'; end if;
      if part1_type = 2 then :object_type := 'TABLE'; end if;
      if part1_type = 4 then :object_type := 'VIEW'; end if;
      if part1_type = 5 then :object_type := 'SYNONYM'; end if;
      if part1_type = 6 then :object_type := 'SEQUENCE'; end if;
      if part1_type = 7 then :object_type := 'PROCEDURE'; end if;
      if part1_type = 8 then :object_type := 'FUNCTION'; end if;
      if part1_type = 9 then :object_type := 'PACKAGE'; end if;
      if part1_type = 12 then :object_type := 'TRIGGER'; end if;
      if part1_type = 13 then :object_type := 'TYPE'; end if;
      if part1_type = 28 then :object_type := 'JAVA SOURCE'; end if;
      if part1_type = 29 then :object_type := 'JAVA CLASS'; end if;
      if :object_type is null then
        select object_type into :object_type
          from sys.all_objects
         where object_id = object_number;
      end if;
    exception
      when others then null;
    end;
    c := c + 1;
    if c > 9 then
      dp := instr(expr, '.', -1);
      if dp > 0 then
        if :sub_object is not null then
          :sub_object := '.' || :sub_object;
        end if;
        :sub_object := upper(substr(expr, dp + 1)) || :sub_object;
        expr := substr(expr, 1, dp - 1);
        c := 0;
      end if;
    end if;
    exit when (:object_type is not null) or (c > 9);
  end loop;
  if :object_type is not null then
    if p1 is null then
      :object_name := p2;
    elsif p2 is null then
      :object_name := p1;
      if :object_name = :part1 and :part2 is not null then
        :sub_object := :part2;
      end if;
      if :object_name = :part2 and :part3 is not null then
        :sub_object := :part3;
      end if; 
    else
      :object_name := p1;
      :sub_object := p2;
    end if;
    return;
  end if;
  begin
    if :part2 is null and :part3 is null then
      select 'USER', null, :part1
        into :object_type, :object_owner, :object_name
        from sys.all_users u
       where u.username = :part1
         and rownum = 1;
      return;
    end if;
  exception
    when no_data_found then
      null;
  end;
  begin
    if :part2 is null and :part3 is null and :deep != 0 then
      select 'ROLE', null, :part1
        into :object_type, :object_owner, :object_name
        from sys.session_roles r
       where r.role = :part1
         and rownum = 1;
      return;
    end if;
  exception
    when no_data_found then
      null;
  end;
  if :deep != 0 then
    begin
      if :part2 is null then
        select constraint_type, owner, constraint_name
          into :object_type, :object_owner, :object_name
          from sys.all_constraints c
         where c.constraint_name = :part1
           and c.owner = :cur_schema
           and rownum = 1;
      else
        select constraint_type, owner, constraint_name, :part3
          into :object_type, :object_owner, :object_name, :sub_object
          from sys.all_constraints c
         where c.constraint_name = :part2
           and c.owner = :part1
           and rownum = 1;
      end if;
      if :object_type = 'P' then
        :object_type := 'PRIMARY KEY';
      end if;
      if :object_type = 'U' then
        :object_type := 'UNIQUE KEY';
      end if;
      if :object_type = 'R' then
        :object_type := 'FOREIGN KEY';
      end if;
      if :object_type = 'C' then
        :object_type := 'CHECK CONSTRAINT';
      end if;
      return;
    exception
      when no_data_found then
        null;
    end;
  end if;
end;

再看

----- PL/SQL Call Stack -----
  object      line  object
  handle    number  name
0x15d17ad68       116  package body SYS.DBMS_UTILITY

......

......

      SO: 0x13667b708, type: 54, owner: 0x149fa2a30, flag: INIT/-/-/0x00
      LIBRARY OBJECT PIN: pin=0x13667b708 handle=0x15e465678 mode=S lock=11a0570c8
      user=15a46c3d0 session=15a46c3d0 count=1 mask=0001 savepoint=0x7675 flags=[00]
      LIBRARY OBJECT HANDLE: handle=15e465678 mtx=0x15e4657a8(0) lct=1 pct=0 cdp=0
     name=EXMXSQUERY.VW_EBAY_MAIL_CLCT@EBAYTRACK
      hash=f0cd4f621dedeac376c5bc759c015f5e timestamp=12-22-2011 17:03:45
      namespace=TABL flags=REM/KGHP/TIM/XLR/[00020020]
      kkkk-dddd-llll=0000-0001-0001 lock=S pin=S latch#=14 hpc=0002 hlc=0002
      lwt=0x15e465720[0x15e465720,0x15e465720] ltm=0x15e465730[0x15e465730,0x15e465730]
      pwt=0x15e4656e8[0x15e4656e8,0x15e4656e8] ptm=0x15e4656f8[0x15e4656f8,0x15e4656f8]
      ref=0x15e465750[0x15e465750,0x15e465750] lnd=0x15e465768[0x15e465768,0x15e465768]
        LOCK INSTANCE LOCK: id=LBf0cd4f621dedeac3
        PIN INSTANCE LOCK: id=NBf0cd4f621dedeac3 mode=S release=F flags=[00]
        LIBRARY OBJECT: bject=1432efc78
        type=SYNM flags=EXS/LOC[0005] pflags=[0000]status=INVLload=0
        DATA BLOCKS:

看到这个地方,VW_EBAY_MAIL_CLCT是EBAYTRACK库上EXMXSQUERY用户下的一个同义词,应该是这个同义词失效了,一般同义词失效是其同义的对象删掉重建了,或者select权限收回了。为了证实这个认识,打电话询问开发的工程师当时有没有改动那个视图,回答时肯定的,说但是那个时间点正在create or replace,这样同义词就自动失效了。通过如下sql查询:

SQL> SELECT object_name,object_type,owner,status
  2            FROM   dba_objects
  3            WHERE  object_name='VW_EBAY_MAIL_CLCT';

OBJECT_NAME                    OBJECT_TYPE         OWNER      STATUS
--------------------                        -------------------         ----------          -------
VW_EBAY_MAIL_CLCT              VIEW                  EMSTRC         VALID
VW_EBAY_MAIL_CLCT              SYNONYM        EMSQUERY    INVALID

果然失效了。注意在10g中,同义词失效,但是还是可以查询的:

select  count(*)  from vw_ebay_mail_clct;

  COUNT(*)
------------------
         3398700

重建同义词:

create or replace synonym VW_EBAY_MAIL_CLCT for emstrc.VW_EBAY_MAIL_CLCT;

重新查询状态:

SQL> SELECT object_name,object_type,owner,status
  2            FROM   dba_objects
  3            WHERE  object_name='VW_EBAY_MAIL_CLCT';

OBJECT_NAME                    OBJECT_TYPE         OWNER      STATUS
--------------------                        -------------------         ----------          -------
VW_EBAY_MAIL_CLCT              VIEW                  EMSTRC         VALID
VW_EBAY_MAIL_CLCT              SYNONYM        EMSQUERY    VALID

状态已经变为valid了。

参考文档:

How To Find The Object That Causing ORA-600 [kqlnrc_1] [ID 1190673.1]

以上就是ORA-00600: internal error code, arguments: [kqlnrc_1], [0x70的内容,更多相关内容请关注PHP中文网(www.php.cn)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn