今天一位朋友,在drop user的时候报错ora-00600错误。
执行:
drop user abc cascade;
报错:
VBO:无法删除用户。
ORA-01001 无效的游标
ORA-00600: internal error code, arguments: [qmxiUnpPacked2], [121], [], [], [], [], [], []
这位朋友当前的用户是sysdba用户,应该不存在不能删除自己的用户的情况,而且从报错的信息来看,ora-600属于oracle自己的内部错误,和用户操作关系不大。
开始还以为这位朋友的oracle数据库版本较低,但是经过咨询,他是oracle9207版本,而且是windows 2003的系统平台。想到windows下oracle的版本是9201的,9207肯定是升级上去的,于是怀疑在升级的过程中出了问题所致。
在metalink搜索了 drop user ora-00600,发现其中有一片文章(Doc ID:Note339070.1)说道:
——————————————————————————–
Subject: Drop user fails with ora-600 [qmxiUnpPacked2]
Doc ID: Note:339070.1 Type: PROBLEM
Last Revision Date: 07-DEC-2005 Status: PUBLISHED
In this Document
Symptoms
Cause
Solution
References
——————————————————————————–
Applies to:
Oracle Server – Enterprise Edition – Version: 9.2.0.7
This problem can occur on any platform.
Symptoms
ORA-600 [qmxiUnpPacked2] [121 being reported during a drop user on a new 9.2.0.7 database.
Cause
This is generally caused by an invalid upgrade from earlier release.
If a database is created with the DBCA at 9.2.0.7 and one of the “seed” databases are used (not the “New Database” option),
then this seed database is at 9.2.0.1.
Once the create database is complete it needs patching to 9.2.0.7
This error occurs due to XMLType data that has not been successfully upgraded from a previous version.
Solution
To implement the solution, please execute the following steps:
1)SQL> shutdown immediate
2)SQL> startup migrate
3)SQL> spool patch.log
4)SQL> @?/rdbms/admin/catpatch
5)SQL> spool off
References
Note 222876.1 – ORA-600 [qmxiUnpPacked2]
Errors
ORA-600[QMXIUNPPACKED2]
——————————————————————————–
而那位朋友在升级的时候,确实只运行了升级补丁(setup.exe),没有进行后续的数据库升级和 Internet Directory的升级。在该升级补丁的说明文档中也写明了后续要做的工作是:
● Upgrading Databases from Previous Releases Directly to Oracle9i Version 9.2.0.7.0
● Required Postinstallation Tasks
● Upgrading Oracle Internet Directory 9.2.0.x.x
至此,找到原因,问题解决。
题外话:大家升级的时候一定要清楚的知道自己在干什么,仔细阅读升级文档的每一处,除了升级过程,还有升级前的准备包括表空间,sga内存的检查,升级后后续工作,等等。