数据库版本10.2.0.5,Alert 日志存在ORA-600报错
ORA-00600: internal error code, arguments: [kole_t2u], [34], []
--Trace日志如下
System name: Linux
Oracle process number:
Unix process pid: , image: oracle@pquerydb02 (TNS V1-V3) *** ACTION NAME:() -- ::57.272
*** MODULE NAME:(OGG-RE_LIS_A-OPEN_DATA_SOURCE) -- ::57.272
*** SERVICE NAME:(SYS$USERS) -- ::57.272
*** SESSION ID:(1709.7459) -- ::57.272
*** -- ::57.272
ksedmp: internal or fatal error
ORA-: internal error code, arguments: [kole_t2u], [], [], [], [], [], [], []
Current SQL statement for this session:
DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
TR_EVENT_ID VARCHAR2();
TR_TERMINAL VARCHAR2();
TR_IPADDR VARCHAR2();
TR_CUR_USER VARCHAR2();
TR_CUR_USERID NUMBER;
TR_SE_USER VARCHAR2();
TR_SE_USERID NUMBER;
TR_PROXY_USER VARCHAR2();
TR_PROXY_USERID NUMBER;
TR_CUR_SC VARCHAR2();
TR_HOST VARCHAR2();
TR_OS_USER VARCHAR2();
TR_SESSIONID VARCHAR2();
TR_SQL_ID VARCHAR2();
TR_SQL VARCHAR2();
TR_VERSION_NO NUMBER;
TR_N NUMBER;
TR_STMT CLOB := NULL;
TR_SQL_TEXT ORA_NAME_LIST_T;
BEGIN
TR_EVENT_ID := SYS_GUID();
--获取用户信息
SELECT NVL(SYS_CONTEXT('USERENV','TERMINAL'),''),--客户端操作系统终端的名称
NVL(SYS_CONTEXT('USERENV','IP_ADDRESS'),''),--客户端操作系统终端的名称
NVL(SYS_CONTEXT('USERENV','CURRENT_USER'),''),--当前SESSION拥有权限的用户的名称(比如说当前SESSION是SYS,但是正在执行SYSTEM.MYPROC,那么CURRENT_USER就是SYSTEM)
NVL(SYS_CONTEXT('USERENV','CURRENT_USERID'),''),--当前SESSION拥有的权限的用户的ID
NVL(SYS_CONTEXT('USERENV','SESSION_USER'),''),--SESSION所属的用户名
NVL(SYS_CONTEXT('USERENV','SESSION_USERID'),''),--当前SESSION所属的用户ID
NVL(SYS_CONTEXT('USERENV','PROXY_USER'),''),--打开当前SESSION的用户的名称
NVL(SYS_CONTEXT('USERENV','PROXY_USERID'),''),--打开当前SESSION的用户的ID
NVL(SYS_CONTEXT('USERENV','CURRENT_SCHEMA'),''),--当前SESSION缺省的SCHEMA名称
NVL(SYS_CONTEXT('USERENV','HOST'),''),--客户端的主机名称
NVL(SYS_CONTEXT('USERENV','OS_USER'),''),--客户端的操作系统用户名
NVL(SYS_CONTEXT('USERENV','SESSIONID'),'')--SESSION的ID
INTO TR_TERMINAL,TR_IPADDR,TR_CUR_USER,TR_CUR_USERID,TR_SE_USER,TR_SE_USERID,TR_PROXY_USER,TR_PROXY_USERID,
TR_CUR_SC,TR_HOST,TR_OS_USER,TR_SESSIONID
FROM DUAL;
--获取DDL SQL语句,如果语句过长无法全部获得,可以根据SQL_ID查询
BEGIN
SELECT SQL_TEXT,SQL_ID INTO TR_SQL,TR_SQL_ID
FROM V$OPEN_CURSOR
WHERE UPPER(SQL_TEXT) LIKE 'ALTER%'
OR UPPER(SQL_TEXT) LIKE 'CREATE%'
OR UPPER(SQL_TEXT) LIKE 'DROP%';
TR_N := ORA_SQL_TXT(TR_SQL_TEXT);
FOR I IN .. TR_N LOOP
TR_STMT := TR_STMT || TR_SQL_TEXT(I);
END LOOP;
EXCEPTION WHEN OTHERS THEN
TR_SQL_ID := NULL;
TR_STMT := NULL;
END;
--向TB_SYSTEM_DDL_LOGS日志表中插入DDL操作记录
IF ORA_DICT_OBJ_TYPE<>'SEQUENCE'AND ORA_SYSEVENT<>'GRANT' AND ORA_DICT_OBJ_OWNER='LISPRDD' AND ORA_DICT_OBJ_NAME NOT LIKE 'SYS_C%' THEN
SELECT SEQ_DDL_VERSION.NEXTVAL INTO TR_VERSION_NO FROM DUAL;
INSERT INTO TB_SYSTEM_DDL_LOGS
(EVENT_ID,EVENT_NAME,TERMINAL,DB_NAME,OBJECT_NAME,OBJECT_OWNER,OBJECT_TYPE,
IS_ALTER_COLUMN,IS_DROP_COLUMN,SQL_ID,SQL_TEXT,SESSION_ID,
CURRENT_USER,CURRENT_USERID,SESSION_USER,SESSION_USERID,
PROXY_USER,PROXY_USERID,CURRENT_SCHEMA,HOST,OS_USER,IP_ADDRESS,VERSION_NO)
VALUES (TR_EVENT_ID,ORA_SYSEVENT,TR_TERMINAL,ORA_DATABASE_NAME,ORA_DICT_OBJ_NAME,ORA_DICT_OBJ_OWNER,ORA_DICT_OBJ_TYPE,
NULL,NULL,TR_SQL_ID,TR_STMT,TR_SESSIONID,
TR_CUR_USER,TR_CUR_USERID,TR_SE_USER,TR_SE_USERID,
TR_PROXY_USER,TR_PROXY_USERID,TR_CUR_SC,TR_HOST,TR_OS_USER,TR_IPADDR,TR_VERSION_NO
);
COMMIT;
END IF;
END;
----- PL/SQL Call Stack -----
object line object
handle number name
0x207a6ee990 anonymous block
----- Call Stack Trace -----
calling call entry argument values in hex
location type point (? means dubious value)
-------------------- -------- -------------------- ----------------------------
ssd_unwind_bp: unhandled instruction at 0x3d12266 instr=f
ksedst()+ call ksedst1()
ksedmp()+ call ksedst()
ksfdmp()+ call ksedmp()
kgerinv()+ call ksfdmp()
kgesinv()+ call kgerinv()
kgesin()+ call kgesinv()
kole_t2u()+ call kgesin()
koklwrite()+ call kole_t2u()
koklc_write()+ call koklwrite()
kole_ba2l()+ call koklc_write()
pfrcvfc_format_conv call kole_ba2l()
ersion()+
pevm_CNVMSC()+ call pfrcvfc_format_conv
ersion()
pfrinstr_CNVMSC()+ call pevm_CNVMSC() pfrrun_no_tool()+ call pfrinstr_CNVMSC()
pfrrun()+ call pfrrun_no_tool()
plsql_run()+ call pfrrun()
peicnt()+ call plsql_run()
kkxexe()+ call peicnt()
opiexe()+ call kkxexe()
opiall0()+ call opiexe()
opikpr()+ call opiall0()
opiodr()+ call opikpr()
rpidrus()+ call opiodr()
skgmstack()+ call rpidrus()
ssd_unwind_bp: unhandled instruction at 0x1309d1f i
rpidru()+ call skgmstack()
rpiswu2()+ call rpidru()
kprball()+ call rpiswu2()
kktextrg()+ call kprball()
kkttrex()+ call kktextrg()
kktexeevt0()+ call kkttrex()
kktfrddltrg()+ call kktexeevt0()
opiexe()+ call kktfrddltrg()
opiosq0()+ call opiexe()
kpooprx()+ call opiosq0()
kpoal8()+ call kpooprx()
opiodr()+ call kpoal8()
ttcpip()+ call opiodr()
opitsk()+ call ttcpip()
opiino()+ call opitsk()
opiodr()+ call opiino()
opidrv()+ call opiodr()
sou2o()+ call opidrv()
opimai_real()+ call sou2o()
main()+ call opimai_real()
__libc_start_main() call main()
+
_start()+ call __libc_start_main()
--------------------- Binary Stack Dump ---------------------
--匹配MOS 提示是一个Bug,由于字符转换导致的问题
ORA- [kole_t2u], [] - description, bugs, and reasons (文档 ID 734474.1) Cause type-: Invalid multibyte data being inserted into a CLOB SQL>select * from nls_database_parameters where VALUE like '%AL32%' OR VALUE LIKE '%AL16%' PARAMETER VALUE
------------------------------ ------------------------------
NLS_CHARACTERSET AL32UTF8
NLS_NCHAR_CHARACTERSET AL16UTF16 SQL> CREATE TABLE T(A CLOB); Table created. SQL> INSERT INTO T VALUES(UTL_RAW.CAST_TO_VARCHAR2('EC'));
INSERT INTO T VALUES(UTL_RAW.CAST_TO_VARCHAR2('EC'))
*
ERROR at line :
ORA-: internal error code, arguments: [kole_t2u], [], [], [], [], [], [], []
--其它相关Bug --未明确匹配任何有效信息
Bug EXTENDED auditing in multibyte gets ORA- [kole_t2u] for long bind data
Do not use the EXTENDED feature of AUDIT_TRAIL 当前数据库版本10.2.0.,数据库审计参数AUDIT_TRAIL=NONE 关闭审计功能状态
--问题影响,我们可以发现,该service_name为OGG自带的相关服务,因此协调OGG管理员,查询相关OGG服务是否正常,是否由于该ORA-600错误导致ogg功能性异常,结果检测,未发现问题,因此可忽略。
在面对这种ORA-600的情况下,大部分均无法有效解决,因此评估该报错产生的影响性是重要的,当确认报错未直接影响功能,可以暂且忽略。