欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

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

程序员文章站 2022-06-12 21:59:43
...

今天早上做数据库巡检,发现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)!