ORA-600 [ktsircinfo_num1] 和后继处理步骤
适用于Oracle 11.2.0.3及之后版本数据库
ORA-600 [ktsircinfo_num1]报错一般会出现在在从sys.seg$获取row cache信息出现问题时。
多数情况下是在sys.seg$下找不到信息。这意味着可能存在数据讹误或触发了bug,在当时会在操作执行时得到立即的失败返回。
报错信息中一般以ORA-600 [ktsircinfo_num1] [a] [b] [c]形式显示,其中:
- 参数[a] 为表空间编号
- 参数[b] 为文件号
- 参数[c] 为块号
症状
报错可能在索引重建,CREATE table AS SELECT (CTAS), DROP, DELETE,运行PL/SQL程序包,并行或顺序执行时发生。
它可能意外产生于高负载工作中,当对于某些对象操作未能保持完整性并导致数据字典讹误和SGE$和TAB$之间信息不一致。
报错信息在Call stack中类似于以下信息:
ktsircinfo1 ktsircinfo ktsagob ktsausp ktsapus
ktsircinfo1 ktsircinfo ktsixfl_num kkfdmtfl kkfddelupdups
原因
在MOS Note 139182.1 - ORA-600 [ktsircinfo_num1]中已经列出的已知bug。
还有一些未在文档中列出的bug,如:
1. Bug 7338447 ORA-600:[KTSIRCINFO_NUM1] ON FND_STATS.GATHER_SCHEMA_STATS
被分析后认为不是bug,是字典讹误导致的问题。
2. Bug 2169303 ORA-600 [KTSIRCINFO_NUM1] CALLING DBMS_SPACE WITH LOB PARTITION BUT NO PART SPEC
问题发生于LOB。LOB PARTITION大小在10g前并未得到DBMS_SPACE包的支持。
如果,你还是找不到与之匹配的问题原因,那么你就需要对这种潜在的数据讹误进行细致检查。
调查解决方法
- 对已知问题bug,打补丁解决。
- 对未知问题,可运行hcheck脚本检查数据讹误和不一致处。
如果在seg$和tab$信息之间存在不一致性,将检查结果交给第三方专业人员来定位讹误解决问题。例如以下问题:
Problem: Orphaned TAB$ (no SEG$)
ORPHAN TABPART$: OBJ=584395 TS=10 RFILE/BLOCK=14 12404 BO#=584392 SegType=
ORPHAN TABPART$: OBJ=584396 TS=10 RFILE/BLOCK=14 12412 BO#=584392 SegType=
关于 hcheck.sql
这个脚本主要用于查出数据字典上的一般问题。
脚本中会对字典对象关系进行一致性检查,并查看是否存在某些已知问题 - 可以看到一些被报"problems"的信息。
脚本仅会对数据库信息进行只读操作,因此不会有任何影响。
- 执行步骤
执行环境: SQL*Plus
访问权限: 要求以SYS用户执行
$ sqlplus
SQL*Plus: Release 12.1.0.2.0 Production on Tue Apr 19 08:14:13 2016
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Enter username: / as sysdba
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL> spool hcheck.log
SQL> @hcheck
SQL> spool off
对于12c对租户情况,需要连接到PDB后再运行脚本。例如:
SQL*Plus: Release 12.1.0.2.0 Production on Tue Apr 19 08:14:13 2016
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Enter username: / as sysdba
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
-------- ------------ -------------- -------------
2 PDB$SEED READ ONLY NO
3 CDB1_PDB1 READ WRITE NO
4 CDB1_PDB2 READ WRITE NO
SQL> alter session set container=CDB1_PDB1;
Session altered.
SQL> spool hcheck.log
SQL> @hcheck
SQL> spool off
脚本会报告各种数据字典相关信息,其中可能有问题,也可能不存在问题,因此需要交给专业人员来查看。
其中:HCKE 报错被看作一种潜在问题;HCKW 报错被看作是一种警告.
hcheck.sql脚本中会给出以下分级提示:
CRITICAL | 是最高级别问题且需要立刻进行修正处理 |
FAIL | 高优先级问题 |
WARN | 告警,如果能处理掉最好 |
PASS | 没有问题 |
- 一般输出如下
$ sqlplus
SQL*Plus: Release 12.2.0.1.0 Production on ...
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Enter username: / as sysdba
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL> spool hcheck.log
SQL> @hcheck
HCheck Version 07MAY18 on .....
----------------------------------------------
Catalog Version 12.2.0.1.0 (1202000100)
db_name:
Is CDB?: YES CON_ID: 3 Container: CDB1_PDB1
Catalog Fixed
Procedure Name Version Vs Release Timestamp Result
------------------------------ ... ---------- -- ---------- -------------- ------
.- LobNotInObj ... 1202000100 <= *All Rel* ..... 09:49:01 PASS
.- MissingOIDOnObjCol ... 1202000100 <= *All Rel* ..... 09:49:01 PASS
...
.- OrphanedTable ... 1202000100 <= *All Rel* ..... 09:49:02 FAIL
HCKE-0019: Orphaned TAB$ (no SEG$) (Doc ID 1360889.1)
ORPHAN TAB$: OBJ#=105785 DOBJ#=105785 TS=7 RFILE/BLOCK=7/113 TABLE=SCOTT.SALES_REP BOBJ#=
.- MaxControlfSeq ... 1202000100 <= *All Rel* ..... 09:49:02 PASS
.- SegNotInDeferredStg ... 1202000100 > 1102000000 ..... 09:49:02 PASS
---------------------------------------
..................... Elapsed: 1 secs
---------------------------------------
Found 1 potential problem(s) and 0 warning(s)
Contact Oracle Support with the output and trace file
to check if the above needs attention or not
PL/SQL procedure successfully completed.
Statement processed.
Complete output is in trace file:
/oracle/log/diag/rdbms/c201/c201/trace/c201_ora_24507_HCHECK.trc
SQL> spool off