1 数据库的报错信息
Wed Sep 01 19:38:00 2021
Errors in file /u01/app/oracle/diag/rdbms/ractest/ractest1/trace/ractest1_ora_176925.trc (incident=411775):
ORA-00600: 内部错误代码, 参数: [kgantc_1], [0], [1], [], [], [], [], [], [], [], [], []
ORA-00604: 递归 SQL 级别 1 出现错误
ORA-01013: 用户请求取消当前的操作
ORA-06508: PL/SQL: 无法找到正在调用 : "SYS.PP_B" 的程序单元
ORA-06512: 在 line 1
ORA-01013: 用户请求取消当前的操作
ORA-06512: 在 "userA.table_A", line 1398
ORA-06512: 在 "userA.table_A", line 54
ORA-06512: 在 line 3
Incident details in: /u01/app/oracle/diag/rdbms/ractest/ractest1/incident/incdir_411775/ractest1_ora_176925_i411775.trc
.............................
Wed Sep 01 19:40:31 2021
Errors in file /u01/app/oracle/diag/rdbms/ractest/ractest1/trace/ractest1_ora_176925.trc (incident=430639):
ORA-00603: ORACLE server session terminated by fatal error
ORA-00600: internal error code, arguments: [kgantc_1], [0], [1], [], [], [], [], [], [], [], [], []
ORA-00604: error occurred at recursive SQL level 1
ORA-01013: user requested cancel of current operation
ORA-06508: PL/SQL: could not find program unit being called: "SYS.PP_B"
ORA-06512: at line 1
ORA-01013: user requested cancel of current operation
ORA-06512: at "userA.table_A", line 1398
ORA-06512: at "userA.table_A", line 54
ORA-06512: at line 3
Incident details in: /u01/app/oracle/diag/rdbms/ractest/ractest1/incident/incdir_430639/ractest1_ora_176925_i430639.trc
Errors in file /u01/app/oracle/diag/rdbms/ractest/ractest1/incident/incdir_430639/ractest1_ora_176925_i430639.trc:
ORA-00603: ORACLE server session terminated by fatal error
ORA-00600: internal error code, arguments: [kgantc_1], [0], [1], [], [], [], [], [], [], [], [], []
ORA-00604: error occurred at recursive SQL level 1
ORA-01013: user requested cancel of current operation
ORA-06508: PL/SQL: could not find program unit being called: "SYS.PP_B"
ORA-06512: at line 1
ORA-01013: user requested cancel of current operation
ORA-06512: at "userA.table_A", line 1398
ORA-06512: at "userA.table_A", line 54
ORA-06512: at line 3
2 查看ORA-603错误的原因,说明是由于致命错误导致进程终止
[oracle@hosta ~]$ oerr ora 603
00603, 00000, "ORACLE server session terminated by fatal error"
// *Cause: An ORACLE server session was in an unrecoverable state.
// *Action: Login to ORACLE again so a new server session will be created
3 查看Oracle生成的trace文件,主要看ractest1_ora_176925_i430639.trc 文件的内容,尤其是针对call stack,此trace才会有正确的信息,ractest1_ora_176925.trc生成的信息中,call stack同Oracle官方文档的BUG对不上,但ractest1_ora_176925_i411775.trc 同Oracle官方文档的BUG是一致的
Dump file /u01/app/oracle/diag/rdbms/ractest/ractest1/incident/incdir_411775/ractest1_ora_176925_i411775.trc
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1
System name: Linux
Node name: hosta
Release: 2.6.32-642.el6.x86_64
Version: #1 SMP Wed Apr 13 00:51:26 EDT 2016
Machine: x86_64
Instance name: ractest1
Redo thread mounted by this instance: 1
Oracle process number: 199
Unix process pid: 176925, image: oracle@hosta
*** 2021-09-01 19:38:00.476
*** SESSION ID:(2991.49395) 2021-09-01 19:38:00.476
*** CLIENT ID:() 2021-09-01 19:38:00.476
*** SERVICE NAME:(ractest) 2021-09-01 19:38:00.476
*** MODULE NAME:(PL/SQL Developer) 2021-09-01 19:38:00.476 --报错使用的客户端未PL/SQL
*** ACTION NAME:(测试窗口 - procedure user_A.proc_tt_A@2) 2021-09-01 19:38:00.476
Dump continued from file: /u01/app/oracle/diag/rdbms/ractest/ractest1/trace/ractest1_ora_176925.trc
ORA-00600: 内部错误代码, 参数: [kgantc_1], [0], [1], [], [], [], [], [], [], [], [], []
ORA-00604: 递归 SQL 级别 1 出现错误
ORA-01013: 用户请求取消当前的操作
ORA-06508: PL/SQL: 无法找到正在调用 : "SYS.PP_B" 的程序单元
ORA-06512: 在 line 1
ORA-01013: 用户?
========= Dump for incident 411775 (ORA 600 [kgantc_1]) ========
*** 2021-09-01 19:38:00.480
dbkedDefDump(): Starting incident default dumps (flags=0x2, level=3, mask=0x0)
----- Current SQL Statement for this session (sql_id=8qz18zaafy6hs) -----
begin
-- Call the procedure
user_A.proc_tt_A(p_date => :p_date); --调用的存储过程
end;
----- Call Stack Trace ----- 报错的堆盏信息
calling call entry argument values in hex
location type point (? means dubious value)
-------------------- -------- -------------------- ----------------------------
skdstdst()+41 call kgdsdst() 000000000 ? 000000000 ?
7FFDBD5916D0 ? 7FFDBD5917A8 ?
7FFDBD596250 ? 000000002 ?
ksedst1()+103 call skdstdst() 000000000 ? 000000000 ?
7FFDBD5916D0 ? 7FFDBD5917A8 ?
7FFDBD596250 ? 000000002 ?
ksedst()+39 call ksedst1() 000000000 ? 000000001 ?
7FFDBD5916D0 ? 7FFDBD5917A8 ?
7FFDBD596250 ? 000000002 ?
dbkedDefDump()+2746 call ksedst() 000000000 ? 000000001 ?
7FFDBD5916D0 ? 7FFDBD5917A8 ?
7FFDBD596250 ? 000000002 ?
ksedmp()+41 call dbkedDefDump() 000000003 ? 000000002 ?
7FFDBD5916D0 ? 7FFDBD5917A8 ?
7FFDBD596250 ? 000000002 ?
ksfdmp()+69 call ksedmp() 000000003 ? 000000002 ?
7FFDBD5916D0 ? 7FFDBD5917A8 ?
7FFDBD596250 ? 000000002 ?
dbgexPhaseII()+1764 call ksfdmp() 000000003 ? 000000002 ?
7FFDBD5916D0 ? 7FFDBD5917A8 ?
7FFDBD596250 ? 000000002 ?
dbgexProcessError() call dbgexPhaseII() 7F1CB54A5738 ? 7F1CB52D3F60 ?
+2680 7FFDBD59AD28 ? 7FFDBD5917A8 ?
7FFDBD596250 ? 000000002 ?
dbgeExecuteForError call dbgexProcessError() 7F1CB54A5738 ? 7F1CB52D3F60 ?
()+88 000000001 ? 000000000 ?
7FFDBD596250 ? 000000002 ?
dbgePostErrorKGE()+ call dbgeExecuteForError 7F1CB54A5738 ? 7F1CB52D3F60 ?
2136 () 000000001 ? 000000001 ?
000000000 ? 000000002 ?
dbkePostKGE_kgsf()+ call dbgePostErrorKGE() 00C110DA0 ? 7F1CB5211168 ?
71 000000258 ? 000000001 ?
000000000 ? 000000002 ?
kgeadse()+390 call dbkePostKGE_kgsf() 00C110DA0 ? 7F1CB5211168 ?
000000258 ? 000000001 ?
000000000 ? 000000002 ?
kgerinv_internal()+ call kgeadse() 00C110DA0 ? 7F1CB5211168 ?
50 000000258 ? 000000001 ?
000000000 ? 000000002 ?
kgerinv()+38 call kgerinv_internal() 00C110DA0 ? 7F1CB5211168 ?
000000258 ? 000000001 ?
000000000 ? 000000002 ?
kgesinv()+33 call kgerinv() 00C110DA0 ? 7F1CB5211168 ?
000000258 ? 000000001 ?
000000000 ? 000000002 ?
kgesin()+128 call kgesinv() 00C110DA0 ? 7F1CB5211168 ?
000000258 ? 000000001 ?
000000000 ? 000000002 ?
kgantc_term_call()+ call kgesin() 00C110DA0 ? 7F1CB5211168 ?
166 000000258 ? 000000001 ?
000000000 ? 000000000 ?
kqanntc()+16 call kgantc_term_call() 00C110DA0 ? 7F1CB5211168 ?
000000258 ? 000000001 ?
000000000 ? 000000000 ?
ksudlc()+1080 call kqanntc() 00C110DA0 ? 7F1CB5211168 ?
000000258 ? 000000001 ?
000000000 ? 000000000 ?
kssdel()+155 call ksudlc() 6B2D59D40 ? 00C1153C0 ?
000000258 ? 000000001 ?
000000000 ? 000000000 ?
ksupop()+465 call kssdel() 6B2D59D40 ? 000000002 ?
000000258 ? 000000001 ?
000000000 ? 000000000 ?
opiodr()+4149 call ksupop() 000000002 ? 000000002 ?
000000258 ? 000000001 ?
000000000 ? 000000000 ?
ttcpip()+2183 call opiodr() 00000005E ? 00000001C ?
7FFDBD59EB20 ? 000000001 ?
000000000 ? 000000000 ?
opitsk()+1710 call ttcpip() 00C12E9F0 ? 0099D4190 ?
7FFDBD59EB20 ? 000000000 ?
7FFDBD59E578 ? 7FFDBD59EB1C ?
opiino()+969 call opitsk() 00C12E9F8 ? 000000000 ?
7FFDBD59EB20 ? 000000000 ?
7FFDBD59E578 ? 7FFDBD59EB1C ?
opiodr()+917 call opiino() 00000003C ? 000000004 ?
7FFDBD5A0318 ? 000000000 ?
7FFDBD59E578 ? 7FFDBD59EB1C ?
opidrv()+570 call opiodr() 00000003C ? 000000004 ?
7FFDBD5A0318 ? 000000000 ?
7FFDBD59E578 ? 7FFDBD59EB1C ?
sou2o()+103 call opidrv() 00000003C ? 000000004 ?
7FFDBD5A0318 ? 000000000 ?
7FFDBD59E578 ? 7FFDBD59EB1C ?
opimai_real()+133 call sou2o() 7FFDBD5A02F0 ? 00000003C ?
000000004 ? 7FFDBD5A0318 ?
7FFDBD59E578 ? 7FFDBD59EB1C ?
ssthrdmain()+265 call opimai_real() 000000002 ? 7FFDBD5A04E0 ?
000000004 ? 7FFDBD5A0318 ?
7FFDBD59E578 ? 7FFDBD59EB1C ?
main()+201 call ssthrdmain() 000000002 ? 7FFDBD5A04E0 ?
000000001 ? 000000000 ?
7FFDBD59E578 ? 7FFDBD59EB1C ?
__libc_start_main() call main() 000000002 ? 7FFDBD5A0688 ?
+253 000000001 ? 000000000 ?
7FFDBD59E578 ? 7FFDBD59EB1C ?
_start()+41 call __libc_start_main() 000A2A2C4 ? 000000002 ?
7FFDBD5A0678 ? 000000000 ?
7FFDBD59E578 ? 7FFDBD59EB1C ?
4 查看官方文档,
ORA-00600 [kgantc_1] (Doc ID 1380118.1),
此文档说明是由于会话持有一个锁,但用户使用crtl + C 或 kill终止了会话引起的,
Oracle建议使用alter system kill session方法终止会话,此情况同生成环境报错一致,认为有这种可能性。
APPLIES TO:
Oracle Database - Enterprise Edition - Version 11.2.0.2 and later
Oracle Database Cloud Schema Service - Version N/A and later
Oracle Database Exadata Cloud Machine - Version N/A and later
Oracle Cloud Infrastructure - Database Service - Version N/A and later
Oracle Database Exadata Express Cloud Service - Version N/A and later
Information in this document applies to any platform.
SYMPTOMS
Executing PL/SQL code fails with next errors in the alert log:
ORA-00600: internal error code, arguments: [kgantc_1], [0], [1], [], [], [], [], [], [], [], [], []
ORA-00604: error occurred at recursive SQL level 1
ORA-06510: PL / SQL: non-operated excluding certain user-
ORA-06512: at "SYS.PBREAK", line 1087
ORA-06512: at "SYS.PBSDE", line 201
ORA-06510: PL / SQL: non-operated excluding certain user-
ORA-06512: at line 1
ORA-01013: user requested cancel of current operation
ORA-06512: at "
ORA-06512: at "
ORA-06510: PL / SQL: non-operated excluding certain user-
ORA-06512: at "SYS.PBREAK", line 1087
ORA-06512: at "SYS.PBSDE", line 201
ORA-06510: PL / SQL: do not operate
You make see some of all of the following function codes in the "Call Stack" portion of the trace file.
... kgantc_term_call kqanntc ksudlc kssdel ksupop opiodr ...
NOTE: In this case the session information the trace file showed the use of the 3rd party
tool PL/SQL Developer (plsqldev.exe).
CHANGES
CAUSE
Sudden exit of the program using kill -9 or ctrl + c command when the session is still holding a lock.
SOLUTION
It is not recommended that you terminate the session with Ctrl+C or kill-9.
Oracle recommends you only kill a sessions via standard 'alter system kill session' command.
根据ORA-600[kgantc_1] from PL/SQL Execution (Doc ID 2472133.1)文档中的信息,
发现Oracle生成的报错信息同此文档一致,如下:
APPLIES TO:
Oracle Database - Enterprise Edition - Version 11.2.0.4 to 12.1.0.2 [Release 11.2 to 12.1]
Information in this document applies to any platform.
SYMPTOMS
PL/SQL execution fails with the following errors in the alert log:
ORA-00603: ORACLE server session terminated by fatal error
ORA-00600: internal error code, arguments: [kgantc_1], [0], [1], [], [], [], [], [], [], [], [], []
The Call Stack Trace in the associated incident trace file shows:
kgantc_term_call <- kqanntc <- ksudlc <- kss_del_cb <- kssdel <- ksupop <- opiodr <- ttcpip
<- opitsk <- opiino <- opiodr <- opidrv <- sou2o <- opimai_real <- ssthrdmain <- main
CAUSE
The error is caused by a product defect and was investigated in unpublished Bug 22502861.
SOLUTION
1. Upgrade to 12.2
-OR-
2. Apply Patch 22502861 if available for your version and platform.
To check for conflicting patches, please use the My Oracle Support (MOS) Patch Planner Tool.
Reference:
Note 1317012.1 - How To Use MOS Patch Planner To Check And Request The Conflict Patches?
If no patch exists for your platform and version, please contact Oracle Support to request a fix.
5 查看数据库的PSU,发现确实没有22502861的补丁,如下:
[oracle@host1 ~]$ opatch lsinventory |grep 22502861
[oracle@host1 ~]$ opatch lsinventory
Oracle Interim Patch Installer version 11.2.0.3.16
Copyright (c) 2021, Oracle Corporation. All rights reserved.
Oracle Home : /u01/app/oracle/product/11.2.0/db_1
Central Inventory : /u01/app/oraInventory
from : /u01/app/oracle/product/11.2.0/db_1/oraInst.loc
OPatch version : 11.2.0.3.16
OUI version : 11.2.0.4.0
Log file location : /u01/app/oracle/product/11.2.0/db_1/cfgtoollogs/opatch/opatch2021-09-06_17-44-21PM_1.log
Lsinventory Output file location : /u01/app/oracle/product/11.2.0/db_1/cfgtoollogs/opatch/lsinv/lsinventory2021-09-06_17-44-21PM.txt
--------------------------------------------------------------------------------
Local Machine Information::
Hostname: dbssvrb
ARU platform id: 226
ARU platform description:: Linux x86-64
Installed Top-level Products (1):
Oracle Database 11g 11.2.0.4.0
There are 1 products installed in this Oracle Home.
Interim patches (2) :
Patch 26609929 : applied on Sat Dec 16 15:31:42 CST 2017
Unique Patch ID: 21512432
Patch description: "OCW Patch Set Update : 11.2.0.4.170814 (26609929)"
Created on 10 Aug 2017, 22:16:45 hrs PST8PDT
Bugs fixed:
19270660, 18328800, 18508710, 18691572, 20038451, 21251192, 22162062
21232394, 20365005, 17750548, 17387214, 17617807, 14497275, 20219458
17733927, 18180541, 23757020, 18962892, 17292250, 17378618, 16759171
20110156, 17843489, 17065496, 21694632, 13991403, 17273020, 22762046
17155238, 18261183, 18053580, 20012766, 21245437, 20218012, 17013634
17886392, 20995001, 17039197, 17947785, 16317771, 10052729, 22353346
20340620, 16237657, 20317221, 15917869, 18199185, 18399991, 20186278
18024089, 17374271, 16849642, 20246071, 20746251, 14270845, 23621494
20552947, 18414137, 18882642, 17001914, 17927970, 14378120, 16346413
15986647, 18068871, 21222147, 18143836, 16206997, 21982225, 25490238
19168690, 20235511, 18343490, 21875360, 16613232, 19276791, 17722664
20440643, 12928658, 18952577, 16249829, 18520351, 18226143, 18265482
16076412, 18229842, 17172091, 20676340, 17818075, 20091753, 18231837
14373486, 20136892, 17483479, 20551654, 18120545, 18729166, 13843841
21225209, 17405302, 18709496, 18330979, 18744838, 14525998, 18187697
17087371, 20531190, 20598625, 14385860, 18348155, 19479503, 12928592
17516024, 18370031, 17764053, 19272663, 17551223, 14671408, 18272135
14207615, 21255373, 17500165, 18875012, 14769643, 25656952, 19558324
18464784, 18848125, 19241857, 17955615, 14851828, 20315294, 14693336
20014326, 17352230, 16284825, 17238586, 17089344, 17405605, 21327402
17531342, 26546632, 19398098, 17640316, 17159489, 13823394, 16543190
6 总结:
根据如上信息,客户端使用的PL/SQL ,且是用户自己终止了会话,触发了ORACLE的BUG,从而
产生ORA-600 kgantc_1 的错误,
解决方法为:1 打补丁或升级到12以上 2 使用正确的方法杀相关的会话。