Oracle 9i 删除用户失败
问题描述:
SQL> drop user fzyh1;
drop user fzyh1
*
ERROR 位于第 1 行:
ORA-01001: 无效的游标
ORA-00600: 内部错误代码,参数: [qmxiUnpPacked2], [121], [], [], [], [], [], []
版本说明:
oracle 9i 9.2.0 .1打补丁到 9.2.0 .7
问题原因:
打补丁升级过程没有完全完成,即装完exe文件后没有进行安装后续的维护操作,以至于导致oracle内部错误。
解决方案:
1, 检查表空间大小,使之空闲空间最小为 10M 之上,否则后续操作将无法完成。
Alter database datafile ‘$oradata\system01.dbf’ resize 500M ;
2, 设置初始化参数SHARED_POOL_SIZE 和 JAVA_POOL_SIZE,使之均至少都大于 150M .
1> 开启数据库:
SQL> STARTUP OPEN
2>如果有必要,输入下面命令查看是否系统使用了初始化参数文件(initsid.ora)或者服务器参数文件(spfiledbname.ora)
SQL> SHOW PARAMETER PFILE;
这个命令展示了初始化参数文件(initsid.ora)或者服务器参数文件(spfiledbname.ora)的文件名字和在操作系统上存在的位置。
3>查看下面参数的大小
SQL> SHOW PARAMETER SHARED_POOL_SIZE
SQL> SHOW PARAMETER JAVA_POOL_SIZE
4> 如果系统使用的是服务器参数文件,则:
a. If necessary, set the value of the SHARED_POOL_SIZE initialization parameter to at least 150 MB:
SQL> ALTER SYSTEM SET SHARED_POOL_SIZE='
150M
' SCOPE=spfile;
b. If necessary, set the value of the JAVA_POOL_SIZE initialization parameter to at least 150 MB:
SQL> ALTER SYSTEM SET JAVA_POOL_SIZE=' 150M ' SCOPE=spfile;
5>如果系统使用的是初始化参数文件,则需要手工找到初始化文件(initsid.ora)打开手动修改SHARED_POOL_SIZE和JAVA_POOL_SIZE的大小,使之都大于 150M 。
6> Shut down the database:
SQL> SHUTDOWN IMMEDIATE
3,更新数据库
1> 以dba身份登录SQL*PLUS:
C:> sqlplus /NOLOG
SQL> CONNECT SYS/password AS SYSDBA
2> 输入下面命令进行升级
SQL> STARTUP MIGRATE
SQL> SPOOL D:\patch.log
SQL> @ORACLE_BASE\ORACLE_HOME\rdbms\admin\catpatch.sql
SQL> SPOOL OFF
3>查看patch.log是否有升级问题,如果存在则需要重新升级。
4>重新启动数据库
SQL> SHUTDOWN IMMEDIATE
SQL> STARTUP OPWN
5> 执行utlrp.sql脚本重新编译数据库无效的PL/SQL包,强烈建议执行这一步骤
SQL> @ORACLE_BASE\ORACLE_HOME\rdbms\admin\utlrp.sql
4,关闭重新打开数据库即可:
SQL> SHUTDOWN IMMEDIATE
SQL> STARTUP OPWN
补充说明:
详细步骤请参考oracle 9i---- 9.2.0 .7补丁安装说明。
重新删除用户:
SQL> drop user fzyh1 cascade;
用户已丢弃