|
恢复数据库软件?没有备份,没招。现成的oracle9201重装,没有介质,也无法图形界面(不在本地)
对了,从本地库把9208软件tar个过来。也只能这样了。
于是在本地tar软件:
tar cvf jre.tar jre
tar cvf oraInventory.tar oraInventory
tar cvf oui.tar oui
tar cvf product.tar product
ftp上传然后(共花3个小时,通过定时任务后台传的,所以可以先回家了),将原来的目录MV,然后再解压tar。
Ok,继续干活。
修改/var/opt/oracle/下面的文件对应。
bash-2.05$ ls
oraInst.loc oratab
拷贝替换为原来的spfile,密码文件,listener.ora,tnsnames.ora等等
文件主要在这两个目录下:$ORACLE_HOME/dbs和$ORACLE_HOME/network/admin
Ok,数据库启动,确实可以启动。
目前的状态是oracle9208 64位的数据库软件,而实例是oracle9201 32位的。
既然这样,那就继续更新数据字典了。
先检查,以便和升级后对比:
SQL> select comp_id,status,version from dba_registry;
检查是否有无效的对象。
Sql>select object_name,status from dba_objects where object_Name in ('SYS','SYSTEM') and status = 'INVALID';
Sql>select count(*) from dba_objects where object_Name in ('SYS','SYSTEM') and status = 'INVALID';
检查java pool,share pool 大于150M,OK。
开始升级。
SQL> conn /as sysdba
已连接到空闲例程。
SQL> startup migrate
ORACLE 例程已经启动。
Total System Global Area 2384432096 bytes
Fixed Size 732128 bytes
Variable Size 1006632960 bytes
Database Buffers 1375731712 bytes
Redo Buffers 1335296 bytes
数据库装载完毕。
数据库已经打开。
SQL> spool patch.log
SQL> @?/rdbms/admin/catpatch.sql
DOC> BEGIN CATPATCH.SQL */
DECLARE
*
ERROR 位于第 1 行:
ORA-06553: PLS-801: 内部错误 [56319]
晕,直接就抛出ORA-06553: PLS-801: 内部错误 [56319]了,上网查查,还有metalink:
Subject: ORA-06544 ORA-06553 PLS-801: internal error [56319] when Executing PLSQL
Doc ID: Note:577800.1 Type: PROBLEM
Last Revision Date: 19-NOV-2008 Status: MODERATED
In this Document
Symptoms
Cause
Solution
--------------------------------------------------------------------------------
This document is being delivered to you via Oracle Support's Rapid Visibility (RaV) process, and therefore has not been subject to an independent technical review.
Applies to:
PL/SQL - Version: 9.2.0.4.0
This problem can occur on any platform.
Symptoms
After copying the 64 bit executables from an old 64 bit installation into a fresh 32 bit installation,the new database starts up fine but executing any PLSQL object fails with the following error
SQL> drop procedure test;
drop procedure test
*
ERROR at line 1:
ORA-06544: PL/SQL: internal error, arguments: [56319], [], [], [], [], [], [],
[]
ORA-06553: PLS-801: internal error [56319]
Alert log contains ORA-00600.
Cause
The new installation was a 32bit database, but the files which were copied into 32bit install where from a 64bit database install.
You cannot backup the files from 64bit database and copy it into a 32bit database and try to execute the procedure. The program will always error out due to incompatibility.
Solution
Install a 64bit oracle database for using 64bit executables and 32bit oracle database for using 32bit executables.
直到这时才意识到,难道原来的数据库是32位的?
查看以前检查的日志,恍然大悟。
$ sqlplus /nolog
SQL*Plus: Release 9.2.0.1.0 - Production on 星期一 12月 8 10:44:29 2008
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL> conn /as sysdba
已连接。
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
PL/SQL Release 9.2.0.1.0 - Production
CORE 9.2.0.1.0 Production
TNS for Solaris: Version 9.2.0.1.0 - Production
NLSRTL Version 9.2.0.1.0 - Production
SQL> exit
从Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production中断开
原来的数据库果然是32位的。
如果数据库是64位的,显示的结果应该会有 64bit Production这样的标识的。
当然检查ORACLE数据库是否32位或64位的方法很多,这里不赘述。
知道问题所在了,原来一开始就犯了严重的低级的错误,而这个错误往往会被忽视,导致出现上面一系列的问题。
既然问题出现了,那就的解决。
有几个选择:
1.想办法重新安装9201的32位数据库,将数据库恢复使用。但准备介质,上传介质都需要一定时间。而且没有达到升级的要求。
2.想办法将32为9201转换升级到64位9208,当然存在一定风险(确实不敢打包票,曾经有网友在windows平台32到64位出现一些对象编译不过去的情况)
最坏的情况是升级转换失败,数据库也OVER,重建数据库,得花2-3天时间搞。
最好的情况是升级转换成功,数据库OK。没有其它事情。
最终大家确定升级转换方案。毕竟oracle有官方文档可参考:
Subject: Changing between 32-bit and 64-bit Word Sizes
Doc ID: Note:62290.1 Type: BULLETIN
Last Revision Date: 28-OCT-2008 Status: PUBLISHED
。如果再出问题,就重建了。
当然由于没有多余空间,备份数据库文件操作也被略过了。
启动关闭数据库,然后
SQL> STARTUP MIGRATE
SQL> SPOOL catoutw.log
SQL> SET ECHO ON
SQL> @$ORACLE_HOME/rdbms/admin/utlirp.sql
成功。
然后继续SQL> @$ORACLE_HOME/rdbms/admin/catpatch.sql
然后就hung在这里了。
立即检查alert_xxx.log,一堆Ora-600错,吓出一身冷汗。
Tue Dec 9 09:56:49 2008
Thread 1 advanced to log sequence 4227
Current log# 3 seq# 4227 mem# 0: /rdata/oracle/oradata/analysis/redo03.log
Tue Dec 9 10:04:14 2008
Thread 1 advanced to log sequence 4228
Current log# 1 seq# 4228 mem# 0: /rdata/oracle/oradata/analysis/redo01.log
Tue Dec 9 10:08:43 2008
Errors in file /rdata/oracle/admin/analysis/udump/analysis_ora_25092.trc:
ORA-00600: 内部错误代码,参数: [qmxiUnpPacked2], [121], [], [], [], [], [], []
Tue Dec 9 10:08:46 2008
Errors in file /rdata/oracle/admin/analysis/udump/analysis_ora_25092.trc:
ORA-00600: 内部错误代码,参数: [qmxiUnpPacked2], [121], [], [], [], [], [], []
Tue Dec 9 10:08:50 2008
Errors in file /rdata/oracle/admin/analysis/udump/analysis_ora_25092.trc:
ORA-00600: 内部错误代码,参数: [qmxiUnpPacked2], [121], [], [], [], [], [], []
Tue Dec 9 10:08:55 2008
Errors in file /rdata/oracle/admin/analysis/udump/analysis_ora_25092.trc:
ORA-00600: 内部错误代码,参数: [qmxiUnpPacked2], [121], [], [], [], [], [], []
Tue Dec 9 10:09:04 2008
Errors in file /rdata/oracle/admin/analysis/udump/analysis_ora_25092.trc:
ORA-00600: 内部错误代码,参数: [qmxiUnpPacked2], [121], [], [], [], [], [], []
Tue Dec 9 10:09:13 2008
Errors in file /rdata/oracle/admin/analysis/udump/analysis_ora_25092.trc:
ORA-00600: 内部错误代码,参数: [qmxiUnpPacked2], [121], [], [], [], [], [], []
Tue Dec 9 10:09:20 2008
Errors in file /rdata/oracle/admin/analysis/udump/analysis_ora_25092.trc:
ORA-00600: 内部错误代码,参数: [qmxiUnpPacked2], [121], [], [], [], [], [], []
Tue Dec 9 10:09:25 2008
Errors in file /rdata/oracle/admin/analysis/udump/analysis_ora_25092.trc:
ORA-00600: 内部错误代码,参数: [qmxiUnpPacked2], [121], [], [], [], [], [], []
Tue Dec 9 10:09:32 2008
Errors in file /rdata/oracle/admin/analysis/udump/analysis_ora_25092.trc:
ORA-00600: 内部错误代码,参数: [qmxiUnpPacked2], [121], [], [], [], [], [], []
Tue Dec 9 10:09:42 2008
Errors in file /rdata/oracle/admin/analysis/udump/analysis_ora_25092.trc:
ORA-00600: 内部错误代码,参数: [qmxiUnpPacked2], [121], [], [], [], [], [], []
Tue Dec 9 10:09:55 2008
Errors in file /rdata/oracle/admin/analysis/udump/analysis_ora_25092.trc:
ORA-00600: 内部错误代码,参数: [qmxiUnpPacked2], [121], [], [], [], [], [], []
Tue Dec 9 10:10:01 2008
Errors in file /rdata/oracle/admin/analysis/udump/analysis_ora_25092.trc:
ORA-00600: 内部错误代码,参数: [qmxiUnpPacked2], [121], [], [], [], [], [], []
Tue Dec 9 10:10:08 2008
Errors in file /rdata/oracle/admin/analysis/udump/analysis_ora_25092.trc:
ORA-00600: 内部错误代码,参数: [qmxiUnpPacked2], [121], [], [], [], [], [], []
Tue Dec 9 10:10:14 2008
Errors in file /rdata/oracle/admin/analysis/udump/analysis_ora_25092.trc:
ORA-00600: 内部错误代码,参数: [qmxiUnpPacked2], [121], [], [], [], [], [], []
Tue Dec 9 10:10:23 2008
Errors in file /rdata/oracle/admin/analysis/udump/analysis_ora_25092.trc:
ORA-00600: 内部错误代码,参数: [qmxiUnpPacked2], [121], [], [], [], [], [], []
Tue Dec 9 10:10:30 2008
Errors in file /rdata/oracle/admin/analysis/udump/analysis_ora_25092.trc:
ORA-00600: 内部错误代码,参数: [qmxiUnpPacked2], [121], [], [], [], [], [], []
Tue Dec 9 10:10:41 2008
Errors in file /rdata/oracle/admin/analysis/udump/analysis_ora_25092.trc:
ORA-00600: 内部错误代码,参数: [qmxiUnpPacked2], [121], [], [], [], [], [], []
$ more /rdata/oracle/admin/analysis/udump/analysis_ora_25092.tr
/rdata/oracle/admin/analysis/udump/analysis_ora_25092.tr: 无此文件或目录
$ more /rdata/oracle/admin/analysis/udump/analysis_ora_25092.trc
/rdata/oracle/admin/analysis/udump/analysis_ora_25092.trc
Oracle9i Enterprise Edition Release 9.2.0.8.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.8.0 - Production
ORACLE_HOME = /rdata/oracle/product/9.2.0
System name: SunOS
Node name: bims-analysis
Release: 5.9
Version: Generic_118558-29
Machine: sun4u
Instance name: analysis
Redo thread mounted by this instance: 1
Oracle process number: 10
Unix process pid: 25092, image: oracle@bims-analysis (TNS V1-V3)
*** 2008-12-09 10:08:43.021
*** SESSION ID7.3) 2008-12-09 10:08:43.010
***
*** Object defn.s out of sync w/ data
******
*** Object defn.s out of sync w/ data
******
*** Object defn.s out of sync w/ data
******
*** Object defn.s out of sync w/ data
******
*** Object defn.s out of sync w/ data
******
*** Object defn.s out of sync w/ data
******
*** Object defn.s out of sync w/ data
******
*** Object defn.s out of sync w/ data
******
*** Object defn.s out of sync w/ data
******
*** Object defn.s out of sync w/ data
******
*** Object defn.s out of sync w/ data
查看metalink.
Subject: How to resolve ORA-600 [qmxiUnpPacked2] during upgrade
Doc ID: Note:235423.1 Type: HOWTO
Last Revision Date: 08-JUL-2008 Status: PUBLISHED
说可能三种情况,不列出了。
我检查了shared_pool_size and java_pool_size都是大于150Mb,怀疑是因为前面执行的脚本,把shared pool占满了,于是关闭数据库,然后再STARTUP MIGRATE。
然后再执行升级脚本,OK通过。
检查版本升级:
SQL> select comp_id,status,version from dba_registry;
最后在重启,执行编译失效对象:
Sql>select count(*) from dba_objects where status = 'INVALID';
SQL> @?/rdbms/admin/utlrp.sql
再次关闭数据库。
接下来就是打小补丁。
确认没有Oralce进程。然后继续:
将opatch添加到环境变量:
PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch/:/usr/bin:/usr/ucb:/etc:/usr/openwin/bin:/usr/ccs/bin:/usr/local/bin
export PATH
执行:
$ ls
5391326 p5391326_92080_SOLARIS64_2006-11-17.zip
$ cd 5*
$ ls
README.txt etc files
$ opatch apply
Oracle Interim Patch Installer version 1.0.0.0.55
Copyright (c) 2006 Oracle Corporation. All Rights Reserved..
We recommend you refer to the OPatch documentation under
OPatch/docs for usage reference. We also recommend using
the latest OPatch version. For the latest OPatch version
and other support related issues, please refer to document
293369.1 which is viewable from metalink.oracle.com
Oracle Home = /rdata/oracle/product/9.2.0
Location of Oracle Universal Installer components = /rdata/oracle/product/9.2.0/oui
Location of OraInstaller.jar = "/rdata/oracle/product/9.2.0/oui/jlib"
Oracle Universal Installer shared library = /rdata/oracle/product/9.2.0/oui/lib/solaris/liboraInstaller.so
Location of Oracle Inventory Pointer = /var/opt/oracle/oraInst.loc
Location of Oracle Inventory = /rdata/oracle/product/9.2.0/inventory
Path to Java = /rdata/oracle/product/9.2.0/jre/1.4.2/bin/java
Log file = /rdata/oracle/product/9.2.0/.patch_storage/<patch ID>/*.log
Creating log file "/rdata/oracle/product/9.2.0/.patch_storage/5391326/Apply_5391326_12-09-2008_11-46-31.log"
The Oracle Home /rdata/oracle/product/9.2.0 is not registered with the Central Inventory. OPatch was not able to get details of the home from the inventory.
ERROR: OPatch failed because of Inventory problem.
$ more /rdata/oracle/product/9.2.0/.patch_storage/5391326/Apply_5391326_12-09-2008_11-46-31.lo
/rdata/oracle/product/9.2.0/.patch_storage/5391326/Apply_5391326_12-09-2008_11-46-31.lo: 无此文件或目录
$ more /rdata/oracle/product/9.2.0/.patch_storage/5391326/Apply_5391326_12-09-2008_11-46-31.log
Creating log file "/rdata/oracle/product/9.2.0/.patch_storage/5391326/Apply_5391326_12-09-2008_11-46-31.log"
Starting OPatch Apply session at 12-09-2008_11-46-31.
Command arguments are: apply
OPatch version is: 1.0.0.0.55
The contents of the file: /var/opt/oracle/oraInst.loc
inventory_loc=/rdata/oracle/oraInventory
inst_group=dba
Performing RAC pre-req. check...
Accessing inventory ... (retry 10 times, delay 30 seconds each time)
System Command: /rdata/oracle/product/9.2.0/jre/1.4.2/bin/java -Doracle.installer.invPtrLoc=/var/opt/oracle/or
aInst.loc -Dopatch.retry=10 -Dopatch.delay=30 -classpath "/rdata/oracle/product/9.2.0/oui/jlib/OraInstaller.jar:
/rdata/oracle/product/9.2.0/oui/jlib/srvm.jar:/rdata/oracle/product/9.2.0/OPatch/jlib/opatch.jar:/rdata/oracle/pr
oduct/9.2.0/oui/jlib/xmlparserv2.jar:/rdata/oracle/product/9.2.0/oui/jlib/share.jar:/rdata/oracle/product/9.2.0/j
lib/srvm.jar" opatch/O2O "/rdata/oracle/product/9.2.0" "/rdata/oracle/product/9.2.0/oui" opatch.pl 1.0.0.0.55
Result:
output to OPatch:
HOME_INDEX=-1
The Oracle Home /rdata/oracle/product/9.2.0 is not registered with the Central Inventory. OPatch was not able to
get details of the home from the inventory.
ERROR: OPatch failed because of Inventory problem.
晕,又报错。
The Oracle Home /rdata/oracle/product/9.2.0 is not registered with the Central Inventory
奇怪,明明/var/opt/oracle/oraInst.loc都正确了,环境变量也OK,怎么还报错呢?
再检查:
$ opatch lsinventory -all
Oracle Interim Patch Installer version 1.0.0.0.55
Copyright (c) 2006 Oracle Corporation. All Rights Reserved..
We recommend you refer to the OPatch documentation under
OPatch/docs for usage reference. We also recommend using
the latest OPatch version. For the latest OPatch version
and other support related issues, please refer to document
293369.1 which is viewable from metalink.oracle.com
Oracle Home = /rdata/oracle/product/9.2.0
Location of Oracle Universal Installer components = /rdata/oracle/product/9.2.0/oui
Location of OraInstaller.jar = "/rdata/oracle/product/9.2.0/oui/jlib"
Oracle Universal Installer shared library = /rdata/oracle/product/9.2.0/oui/lib/solaris/liboraInstaller.so
Location of Oracle Inventory Pointer = /var/opt/oracle/oraInst.loc
Location of Oracle Inventory = /rdata/oracle/product/9.2.0/inventory
Path to Java = /rdata/oracle/product/9.2.0/jre/1.4.2/bin/java
Log file = /rdata/oracle/product/9.2.0/.patch_storage/<patch ID>/*.log
Creating log file "/rdata/oracle/product/9.2.0/.patch_storage/LsInventory__12-09-2008_12-20-58.log"
LsInventory: OPatch Exception while accessing O2O
OPatch Exception:
OUI found no such ORACLE_HOME set in the environment
Can not get details for given Oracle Home
An exception occurs
null
ERROR: OPatch Exception:
OUI found no such ORACLE_HOME set in the environment
Can not get details for given Oracle Home
An exception occurs
null
ORACLE HOME LOCATION
----------- --------
Home1 /data/oracle/product/9.2.0
OPatch succeeded.
原来是原先从别的库tar过来的,OUI是以前的库的路径。
修改inventory.xml文件中loc后通过:
$ pwd
/rdata/oracle/oraInventory/ContentsXML
$ vi inventory.xml
<HOME NAME="Home1" LOC="/rdata/oracle/product/9.2.0" TYPE="O" IDX="1"/>
$ opatch lsinventory -all
Oracle Interim Patch Installer version 1.0.0.0.55
Copyright (c) 2006 Oracle Corporation. All Rights Reserved..
We recommend you refer to the OPatch documentation under
OPatch/docs for usage reference. We also recommend using
the latest OPatch version. For the latest OPatch version
and other support related issues, please refer to document
293369.1 which is viewable from metalink.oracle.com
Oracle Home = /rdata/oracle/product/9.2.0
Location of Oracle Universal Installer components = /rdata/oracle/product/9.2.0/oui
Location of OraInstaller.jar = "/rdata/oracle/product/9.2.0/oui/jlib"
Oracle Universal Installer shared library = /rdata/oracle/product/9.2.0/oui/lib/solaris/liboraInstaller.so
Location of Oracle Inventory Pointer = /var/opt/oracle/oraInst.loc
Location of Oracle Inventory = /rdata/oracle/product/9.2.0/inventory
Path to Java = /rdata/oracle/product/9.2.0/jre/1.4.2/bin/java
Log file = /rdata/oracle/product/9.2.0/.patch_storage/<patch ID>/*.log
Creating log file "/rdata/oracle/product/9.2.0/.patch_storage/LsInventory__12-09-2008_12-38-25.log"
ORACLE HOME LOCATION
----------- --------
Home1 /rdata/oracle/product/9.2.0
再次opatch apply成功。
启动数据库,启动监听。检查alert日志正常。
接下来就是测试人员去测试数据库应用了。
至此,数据库升级转换成功。从最初升级开始,到完成。时间整整花了1.5天。
[ 本帖最后由 jieyancai 于 2008-12-9 14:49 编辑 ] |
|