• 博客访问: 9685613
  • 博文数量: 2744
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-29 09:23
个人简介

暂无介绍

ITPUB论坛APP

ITPUB论坛APP



APP发帖 享双倍积分

文章分类

全部博文(2744)

文章存档

2013年(30)

2012年(326)

2011年(365)

2010年(349)

2009年(370)

2008年(358)

2007年(352)

2006年(366)

2005年(178)

2004年(50)

微信关注

IT168企业级官微



微信号:IT168qiye



系统架构师大会



微信号:SACC2013

订阅
热词专题

分类: Linux

在使用DBUA10.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的。

阅读(2244) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册