今天早上做數據庫巡檢,發現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)!