oracle共享池不足,10201使用DBUA升级报错共享池不足

在使用DBUA将10.2.0.1升级到10.2.0.3的过程中,出现了ORA-04031: unable to allocate 4096 bytes of shared memory的错误。

查询了METALINK,发现DBUA对于自动内存管理使用不是很好。如果使用DBUA,那么最好在启动之前通过ALTER SYSTEM将内存管理设置为手工调整方式,并设置共享池足够的空间(200M)以上。这样使用DBUA进行数据库的升级就不会出现问题。

如果已经碰到了这个问题:DBUA升级一半时出错,且数据库没有备份。而且再次使用DBUA时,DBUA报错:

DBUA认为这是一个重新运行操作并且正在尝试连接到使用Oracle主目录E:oracle10.2的数据库。如果您认为这不是一个重新运行操作,请删除下面的文件并再次调用DBUA。

E:oracle10.2cfgtoollogsdbualogsWelcome_YTK.txt

根据上面的错误信息提示,在指定目录却找不到相关的文件。

Metalink上面对于这个问题专门的文章进行描述:Doc ID:Note:339887.1。

其中将这个问题分成了三种不同的情况,并针对这三种情况分别给了解决的方法。

根据上面提到的方法:尝试SHUTDOWN IMMEDIATE,然后STARTUP UPGRADE,并删除e:oracle10.2cfgtoollogsdbuaytk目录下所有的文件,但是错误依旧。

无论采用这篇文章中提到的哪个方法,都无法解决问题。

仔细查看了数据库HOME目录中所有和DBUA相关的文件,确认这个问题不是由于文件系统中的配置文件引起的。

那么怀疑的对象就要放到数据库中了。如果问题出在数据库,那么就有很多种方法来检测了,最简单的方法莫过于SQL_TRACE。

无法设置DBUA的会话打开SQL_TRACE,而且由于DBUA使用SYS连接数据库,登陆触发器的方式也对DBUA的会话无效。唯一的方法是在DBUA连接数据库之前在系统级设置ALTER SYSTEM SET SQL_TRACE = TRUE;

SQL> alter system set sql_trace = false;

系统已更改。

然后在DBUA启动并报错,检查后台所有生成的TRACE文件,发现错误出现在对DBA_REGISTRY视图的查询时:

PARSE ERROR #1:len=56 dep=0 uid=0 oct=3 lid=0 tim=3076422478 err=4063

select version from dba_registry where comp_id='CATPROC

关闭SQL_TRACE,在SQLPLUS中执行查询,发现DBA_REGISTRY视图出现错误:

SQL> alter system set sql_trace = false;

系统已更改。

SQL> select version from dba_registry where comp_id='CATPROC';

select version from dba_registry where comp_id='CATPROC'

*第1行出现错误:

ORA-04063: view "SYS.DBA_REGISTRY"有错误

SQL> desc sys.dba_registry

ERROR:

ORA-24372:无效的描述对象

看来造成DBUA错误的原因是由于刚才升级过程执行了一半,导致部分数据字典不完整或错误。

现在唯一的解决方法只有手工执行升级了:

SQL> startup upgrade

ORACLE例程已经启动。

Total System Global Area 524288000 bytes

Fixed Size 1291576 bytes

Variable Size 192940744 bytes

Database Buffers 322961408 bytes

Redo Buffers 7094272 bytes数据库装载完毕。数据库已经打开。SQL> SPO E:PATCH.LOG

SQL> @?RDBMSADMINCATUPGRD.SQL

SQL> SPO OFF

SQL> SHUTDOWN IMMEDIATE数据库已经关闭。已经卸载数据库。ORACLE例程已经关闭。SQL> STARTUP

ORA-32004: obsolete and/or deprecated parameter(s) specified

ORACLE例程已经启动。

Total System Global Area 524288000 bytes

Fixed Size 1291576 bytes

Variable Size 234883784 bytes

Database Buffers 281018368 bytes

Redo Buffers 7094272 bytes数据库装载完毕。数据库已经打开。SQL> @?RDBMSADMINUTLRP

SQL> DESC DBA_REGISTRY名称是否为空?类型----------------------------------------- -------- ----------------------------

COMP_ID NOT NULL VARCHAR2(30)

COMP_NAME VARCHAR2(255)

VERSION VARCHAR2(30)

STATUS VARCHAR2(22)

MODIFIED VARCHAR2(25)

NAMESPACE NOT NULL VARCHAR2(30)

CONTROL NOT NULL VARCHAR2(30)

SCHEMA NOT NULL VARCHAR2(30)

PROCEDURE VARCHAR2(61)

STARTUP VARCHAR2(8)

PARENT_ID VARCHAR2(30)

OTHER_SCHEMAS VARCHAR2(4000)

检查PATCH.LOG,为发现异常错误,最后的汇总信息如下:

Oracle Database 10.2 Upgrade Status Utility 10-24-2007 14:00:16

.

Component Status Version HH:MM:SS

Oracle Database Server VALID 10.2.0.3.0 00:13:06

JServer JAVA Virtual Machine VALID 10.2.0.3.0 00:02:33

Oracle XDK VALID 10.2.0.3.0 00:00:18

Oracle Database Java Packages VALID 10.2.0.3.0 00:00:36

Oracle Text VALID 10.2.0.3.0 00:00:27

Oracle XML Database VALID 10.2.0.3.0 00:01:21

Oracle Data Mining VALID 10.2.0.3.0 00:00:30

OLAP Analytic Workspace VALID 10.2.0.3.0 00:00:44

OLAP Catalog VALID 10.2.0.3.0 00:01:21

Oracle OLAP API VALID 10.2.0.3.0 00:00:49

Oracle interMedia VALID 10.2.0.3.0 00:05:04

Spatial VALID 10.2.0.3.0 00:01:23

Oracle Label Security VALID 10.2.0.3.0 00:00:14

Oracle Expression Filter VALID 10.2.0.3.0 00:00:14

Oracle Enterprise Manager VALID 10.2.0.3.0 00:03:17

Oracle Rule Manager VALID 10.2.0.3.0 00:00:20

.

Total Upgrade Time: 00:32:26

问题解决。看来新推出的功能、工具总是会伴随着很多bug的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值