创建用户时产生ORA-600(kzdugt)错误。
错误信息为:
Mon Mar 12 12:06:58 CST 2012 Errors IN file /u01/app/oracle/admin/orcl10g/udump/orcl10g_ora_22193.trc: ORA-00600: internal error code, arguments: [kzdugt], [], [], [], [], [], [], [] |
详细的信息为:
Dump file /u01/app/oracle/admin/orcl10g/udump/orcl10g_ora_22193.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: 22193, image: oracle@hpserver2.enmotech.com (TNS V1-V3) *** ACTION NAME:() 2012-03-12 12:06:58.209 *** MODULE NAME:(sqlplus@hpserver2.enmotech.com (TNS V1-V3)) 2012-03-12 12:06:58.209 *** SERVICE NAME:(SYS$USERS) 2012-03-12 12:06:58.209 *** SESSION ID:(31.660) 2012-03-12 12:06:58.209 *** 2012-03-12 12:06:58.209 ksedmp: internal OR fatal error ORA-00600: internal error code, arguments: [kzdugt], [], [], [], [], [], [], [] CURRENT SQL statement FOR this SESSION: CREATE USER reptdb IDENTIFIED BY *******DEFAULT tablespace users ----- Call Stack Trace ----- calling CALL entry argument VALUES IN hex location TYPE point (? means dubious VALUE) -------------------- -------- -------------------- ---------------------------- ssd_unwind_bp: unhandled instruction at 0x76ab50 instr=f ksedst()+31 CALL ksedst1() 000000000 ? 000000001 ? 7FFFFD029C60 ? 7FFFFD029CC0 ? 7FFFFD029C00 ? 000000000 ? ksedmp()+610 CALL ksedst() 000000000 ? 000000001 ? 7FFFFD029C60 ? 7FFFFD029CC0 ? 7FFFFD029C00 ? 000000000 ? ksfdmp()+63 CALL ksedmp() 000000003 ? 000000001 ? 7FFFFD029C60 ? 7FFFFD029CC0 ? 7FFFFD029C00 ? 000000000 ? kgerinv()+161 CALL ksfdmp() 006AE9A40 ? 000000003 ? 7FFFFD029C60 ? 7FFFFD029CC0 ? 7FFFFD029C00 ? 000000000 ? kgesinv()+33 CALL kgerinv() 006AE9A40 ? 007F5EE48 ? 7FFFFD029CC0 ? 7FFFFD029C00 ? 000000000 ? 000000000 ? ksesin()+211 CALL kgesinv() 006AE9A40 ? 007F5EE48 ? 7FFFFD029CC0 ? 7FFFFD029C00 ? 000000000 ? 000000000 ? kzdugt()+1435 CALL ksesin() 006AE9A40 ? 007F5EE48 ? |
这个错误是在创建用户时产生的,其对应的bug描述为:ORA-00600 [kzdugt] While Creating An User [ID 734801.1]。
导致问题的原因仍然是数据字典的不一致,如果从USER$查询MAX(USER#)的值大于_NEXT_USER对应的USER#的值,就会导致这个问题。
接近方法除了可以直接更新_NEXT_USER对应的USER#的值外,还可以通过PL/SQL循环动态创建用户并捕获错误,使得_NEXT_USER的值最终超过USER$其他所有的记录,就可以避免这个错误了。