视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
ORA-00600:internalerrorcode,arguments:[kqlnrc_1],[0x70
2020-11-09 09:42:55 责编:小采
文档

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

下载本文
显示全文
专题