AIX6.1上打10G PATCH时报libjox10.a无法覆盖的错误解决

一. 问题描述
在AIX6.1(6100-01-06-0939)上升级ORACLE数据库(版本从10.2.0.4升级到10.2.0.5)时,报一个出错窗口,说:libjox10.a无法复制.
我选择了ignore,继续安装(在这里种下了隐患)

10.2.0.5的patch安装完了,将数据库启动到upgrade状态,运行catupgrd.sql进行数据库的升级时,遇到了ora-01722错误,错误描述如下:

错误的信息如下:
打补丁的时候,,在运行等等,此时如果ignore,则会导致后面运行catupgrd.sql报ora-01722的错误,这个文件可能包含了一些对象的定义.

[@more@]

SQL> @?/rdbms/admin/catupgrd.sql


DOC>#######################################################################
DOC>#######################################################################
DOC> The following statement will cause an "ORA-01722: invalid number"
DOC> error if the database has not been opened for UPGRADE.
DOC>
DOC> Perform a "SHUTDOWN ABORT" and
DOC> restart using UPGRADE.
DOC>#######################################################################
DOC>#######################################################################
DOC>#
SELECT TO_NUMBER('MUST_BE_OPEN_UPGRADE') FROM v$instance
*
ERROR at line 1:
ORA-01722: invalid number


catupgrd.sql 无法进行下去,数据库升级失败.

二. 问题分析
在metalink上搜索相关文章,找到DOC_ID=435536.1的文章,内容大致如下:
......
Symptoms
You are getting following error while performing upgrade/downgrade of the database.
This error appears when executing script in the following release only

catbkout.sql( Available on 9.2.0.7 and Above )
catbkout.sql(Available on 10.1.0.5 and Above )
catbkout.sql( 10.2.0.2 and Above )
catupgrd.sql (For 10g R2 Above)

SQL> @?/rdbms/admin/catupgrd.sql

DOC> The following statement will cause an "ORA-01722: invalid number"
DOC> error if the database has not been opened for UPGRADE.
DOC>
DOC> Perform a "SHUTDOWN ABORT" and
DOC> restart using UPGRADE.
DOC>#
SELECT TO_NUMBER('MUST_BE_OPEN_UPGRADE') FROM v$instance
*
ERROR at line 1:
ORA-01722: invalid number

Cause
Instance has not started with UPGRADE ( MIGRATE for 9.2) mode , which caused catupgrd.sql failed execute.
There can be multiple cause for the ORA-01722 error. Following are few listed
1. Database not started as UPGRADE or MIGRATE Mode.
2. SQL*PLUS session user running this script is not SYS.
3. Database server version is not correct for this script.
4. If the SYSAUX tablespace does not exist or is not ONLINE for READ WRITE, PERMANENT, EXTENT MANAGEMENT LOCAL, andSEGMENT SPACE MANAGEMENT AUTO.[Applicable Only For 10G]

Solution
1. Ensure you have followed the following criteria
• Database as UPGRADE or MIGRATE Mode.
• Logged on as SYS user when running this script.
• Database server version matches for this script i.e catupgrd.sql for 10.2 need to be executed for 10.2 database
• If the SYSAUX tablespace exist and is ONLINE for READ WRITE, PERMANENT, EXTENT MANAGEMENT LOCAL and SEGMENT SPACE MANAGEMENT AUTO.[Applicable Only For 10G]
2. If you are meeting above criteria , then open the script from appropriate location %ORACLE_HOME%/rdbms/admin
3. Goto the SQL command which fails with error i.e in this case
SELECT TO_NUMBER('MUST_BE_OPEN_UPGRADE') FROM v$instance
and check you have performed the criteria mentioned above SQL command
While running the catbkout .sqlor catupgr.sql , you will also see the following appear on console . These are comments before SQL , which are for information purpose.

The following statement will cause an "ORA-01722: invalid number"
error
if the user running this script is not SYS. Disconnect
and reconnect with AS
SYSDBA.

三. 问题解决
我检查了自己的环境,没有文章中提到的问题.分析一下,可能还是在打patch的时候,遇到libjox10.a文件无法覆盖的问题,这个时候不应该选择ignore.
而是应该删除旧的文件,让patch复制新的文件过来.这个文件是二进制文件,其中包含了很多对象的定义(例如 MUST_BE_OPEN_UPGRADE的定义).
再次运行10.2.0.5 patch安装程序(runInstaller),在libjox10.a文件报错时,不退出当前出错界面,运行下面的命令,删除旧的文件.
$ cd /oracle/product/10.2.0/db/lib
$ ls -lt libjox10.a
-rw-r--r-- 1 oracle oinstall 13257611 May 10 2008 libjox10.a
$ mv libjox10.a libjox10.a.bak
然后在出错界面里,选择retry,补丁程序可以正常运行下去了.

patch安装完成后,进行数据库的升级,不再报ora-01722的错误了.

SQL>Startup upgrade
SQL>@?/rdbms/admin/catupgrd.sql

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/32980/viewspace-1058732/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/32980/viewspace-1058732/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值