详细信息为:Dump file /u01/app/oracle/admin/orcl10g/udump/orcl10g_ora_7838.trc
Oracle DATABASE 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
WITH the Partitioning, OLAP, DATA Mining AND REAL Application Testing options
ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1
System name: Linux
Node name: hpserver2.enmotech.com
Release: 2.6.32-100.28.5.el6.x86_64
Version: #1 SMP Wed Feb 2 18:40:23 EST 2011
Machine: x86_64
Instance name: orcl10g
Redo thread mounted BY this instance: 1
Oracle process NUMBER: 13
Unix process pid: 7838, image: oracle@hpserver2.enmotech.com (TNS V1-V3)
*** ACTION NAME:() 2012-03-13 18:11:14.802
*** MODULE NAME:(sqlplus@hpserver2.enmotech.com (TNS V1-V3)) 2012-03-13 18:11:14.802
*** SERVICE NAME:(SYS$USERS) 2012-03-13 18:11:14.802
*** SESSION ID:(30.124) 2012-03-13 18:11:14.802
*** 2012-03-13 18:11:14.802
ksedmp: internal OR fatal error
ORA-00600: internal error code, arguments: [ktssdrp1], [9], [13], [11], [], [], [], []
CURRENT SQL statement FOR this SESSION:
DROP TABLE "APP"."SERVICE" cascade constraints purge
----- Call Stack Trace -----
calling CALL entry argument VALUES IN hex
location TYPE point (? means dubious VALUE)
-------------------- -------- -------------------- ----------------------------
ssd_unwind_bp: unhandled instruction at 0x3d12d3e instr=f
ssd_unwind_bp: unhandled instruction at 0x1344b61 instr=f
ksedst()+31 CALL ksedst1() 000000000 ? 000000001 ?
7FFFA35C05C0 ? 7FFFA35C0620 ?
7FFFA35C0560 ? 000000000 ?
ksedmp()+610 CALL ksedst() 000000000 ? 000000001 ?
7FFFA35C05C0 ? 7FFFA35C0620 ?
7FFFA35C0560 ? 000000000 ?
ksfdmp()+63 CALL ksedmp() 000000003 ? 000000001 ?
7FFFA35C05C0 ? 7FFFA35C0620 ?
7FFFA35C0560 ? 000000000 ?
kgerinv()+161 CALL ksfdmp() 006AE9A40 ? 000000003 ?
7FFFA35C05C0 ? 7FFFA35C0620 ?
7FFFA35C0560 ? 000000000 ?
kgeasnmierr()+163 CALL kgerinv() 006AE9A40 ? 008754D28 ?
7FFFA35C0620 ? 7FFFA35C0560 ?
000000000 ? 000000000 ?
ktssdrp_segment()+2 CALL kgeasnmierr() 006AE9A40 ? 008754D28 ?
289 7FFFA35C0620 ? 7FFFA35C0560 ?
000000000 ? 000000009 ?
dtbdrp()+1736 CALL ktssdrp_segment() 7FFFA35C2998 ? 008754D28 ?
7FFFA35C0620 ? 7FFFA35C0560 ?
000000000 ? 000000009 ?
dtbdrv()+2732 CALL dtbdrp() 7FFFA35C2998 ? 0779C1148 ?
074FB4318 ? 7FFFA35C2CB0 ?
000000000 ? 7FFFA35C2CE8 ?
opiexe()+13175 CALL dtbdrv() 7FFFA35C2998 ? 0779C1148 ?
000000000 ? 7FFFA35C2CB0 ?
000000000 ? 7FFFA35C2CE8 ?
opiosq0()+3398 CALL opiexe() 000000004 ? 000000000 ?
7FFFA35C3F2C ? 000000005 ?
000000000 ? 7FFFA35C2CE8 ?
opiosq()+14 CALL opiosq0() 000000003 ? 00000000F ?
7FFFA35C5600 ? 000000000 ?
000000000 ? 000000041 ?
opiodr()+1184 CALL opiosq() 000000003 ? 00000000F ?
7FFFA35C5600 ? 000000000 ?
000000000 ? 000000041 ?
ssd_unwind_bp: unhandled instruction at 0x24168a7 instr=f
rpidrus()+196 CALL opiodr() 00000004A ? 00000000F ?
7FFFA35C5600 ? 000000005 ?
005BEBA90 ? 000000041 ?
skgmstack()+158 CALL rpidrus() 7FFFA35C4E58 ? 00000000F ?
7FFFA35C5600 ? 000000005 ?
005BEBA90 ? 000000041 ?
rpidru()+116 CALL skgmstack() 7FFFA35C4E30 ? 006AE9620 ?
00000F618 ? 002419628 ?
7FFFA35C4E58 ? 000000041 ?
rpiswu2()+409 CALL rpidru() 7FFFA35C54F8 ? 006AE9620 ?
00000F618 ? 002419628 ?
7FFFA35C4E58 ? 000000041 ?
rpidrv()+1516 CALL rpiswu2() 07F1AEA58 ? 000000000 ?
7FFFA35C54D8 ? 000000002 ?
7FFFA35C5540 ? 000000000 ?
rpispl()+406 CALL rpidrv() 000000005 ? 00000004A ?
7FFFA35C5600 ? 000000008 ?
7FFFA35C5540 ? 000000000 ?
tbsdrac()+4341 CALL rpispl() 000000005 ? 000000000 ?
0087315C0 ? 000000041 ?
000000000 ? 000000000 ?
dtsdrv()+2882 CALL tbsdrac() 000000009 ? 000000000 ?
000000000 ? 000000001 ?
000000000 ? 000000000 ?
opiexe()+14347 CALL dtsdrv() 000000009 ? 000000000 ?
000000000 ? 000000001 ?
000000000 ? 000000000 ?
opiosq0()+3398 CALL opiexe() 000000004 ? 000000000 ?
7FFFA35C7B3C ? 000000002 ?
000000000 ? 000000000 ?
kpooprx()+318 CALL opiosq0() 000000003 ? 00000000E ?
7FFFA35C7E68 ? 0000000A4 ?
000000000 ? 600000039 ?
kpoal8()+783 CALL kpooprx() 7FFFA35CB04C ? 7FFFA35C9078 ?
000000039 ? 000000001 ?
000000000 ? 600000039 ?
opiodr()+1184 CALL kpoal8() 00000005E ? 000000017 ?
7FFFA35CB048 ? 000000001 ?
000000001 ? 600000039 ?
ttcpip()+1226 CALL opiodr() 00000005E ? 000000017 ?
7FFFA35CB048 ? 000000000 ?
005BEBDB0 ? 600000039 ?
opitsk()+1310 CALL ttcpip() 006AF1FD0 ? 0054A67A0 ?
7FFFA35CB048 ? 000000000 ?
7FFFA35CAB48 ? 7FFFA35CB1B0 ?
opiino()+1024 CALL opitsk() 000000003 ? 000000000 ?
7FFFA35CB048 ? 000000001 ?
000000000 ? 6AF000900000001 ?
opiodr()+1184 CALL opiino() 00000003C ? 000000004 ?
7FFFA35CC248 ? 000000001 ?
000000000 ? 6AF000900000001 ?
opidrv()+548 CALL opiodr() 00000003C ? 000000004 ?
7FFFA35CC248 ? 000000000 ?
005BEB860 ? 6AF000900000001 ?
sou2o()+114 CALL opidrv() 00000003C ? 000000004 ?
7FFFA35CC248 ? 000000000 ?
005BEB860 ? 6AF000900000001 ?
opimai_real()+163 CALL sou2o() 7FFFA35CC220 ? 00000003C ?
000000004 ? 7FFFA35CC248 ?
005BEB860 ? 6AF000900000001 ?
main()+116 CALL opimai_real() 000000002 ? 7FFFA35CC2B0 ?
000000004 ? 7FFFA35CC248 ?
005BEB860 ? 6AF000900000001 ?
__libc_start_main() CALL main() 000000002 ? 7FFFA35CC2B0 ?
+253 000000004 ? 7FFFA35CC248 ?
005BEB860 ? 6AF000900000001 ?
_start()+41 CALL __libc_start_main() 00072D134 ? 000000002 ?
7FFFA35CC408 ? 000000000 ?
005BEB860 ? 6AF000900000001 ?
可以看到,报错发生在删除一个表上。而这个表在数据库中应该是不存在的,或者说即使这个表存在,也不可能建立在这个表空间。那么导致问题的原因应该只有一个,数据字典出现了不一致的状态。SQL> SELECT ts#, COUNT(*) FROM seg$ GROUP BY ts#;
TS# COUNT(*)
---------- ----------
1 11
6 20
2 1126
4 57
5 5
0 1429
6 ROWS selected.
SQL> SELECT ts#, COUNT(*) FROM tab$ GROUP BY ts#;
TS# COUNT(*)
---------- ----------
6 429
11 97
2 247
5 5
4 48
8 30
7 2
0 736
9 10
12 2
10 ROWS selected.
可以看到,在SEG$中不存在表空间编号大于6的对象,但是在TAB$中确存在很多。SQL> SELECT ts#, name FROM ts$ WHERE name = 'ALA_TEST';
TS# NAME
---------- ------------------------------
9 ALA_TEST
SQL> SELECT ts#, name FROM ts$;
TS# NAME
---------- ------------------------------
0 SYSTEM
1 UNDOTBS
2 SYSAUX
3 TEMP
4 TBS_1
5 GGX
6 USERS
7 PERFSTAT
8 STATSPACK
9 ALA_TEST
10 ROWS selected.
可以看到,表空间目前编号只到9,而TAB$中记录的表空间的编号以及到了12。显然这就是导致ORA-600错误的原因。Oracle在删除表空间的时候发现有表存在,但是根据段信息又找不到对应的记录,导致删除无法完成,从而引发了这个错误。
至于数据字典不一致的产生应该是测试环境通过imp导入tab$引起的,对于测试环境而言,这个错误很容易清除掉,直接删除不一致的记录即可,但是对于产品环境而言,不推荐这种方式:SQL> SELECT ts#, COUNT(*) FROM ind$ GROUP BY ts#;
TS# COUNT(*)
---------- ----------
6 239
11 61
13 103
2 332
4 9
8 31
0 858
7 ROWS selected.
SQL> DELETE tab$ WHERE ts# = 9;
10 ROWS deleted.
SQL> commit;
Commit complete.
SQL> DROP tablespace ala_test including contents AND datafiles;
Tablespace dropped.