9.2.0.8升级到11.2.0.0中出现dbms_java错误
原数据库版本为9.2.0.8升级后的版本为11.2.0.0OS为Red Hat Enterprise Linux AS release 4 (Nahant Update 7)/@>startup UPGRADE
SQL> set echo on
SQL> SPOOL upgrade1.log
SQL> @catupgrd.sql
SQL> spool off
SQL>exit在执行到select dbms_java.longname('foo') from dual;时出错,升级过程中断。具体错误内容为
578399 /@>-- Verify that a simple java stored procedure works
578400 /@>select dbms_java.longname('foo') from dual;
578401 select dbms_java.longname('foo') from dual
578402 *
578403 ERROR at line 1:
578404 ORA-03113: end-of-file on communication channel
578405 ERROR:
578406 ORA-03114: not connected to ORACLE
578407 ERROR:
578408 ORA-03114: not connected to ORACLE后面10000来行ORA-03114: not connected to ORACLE之后退出
在alert日志中发现
SERVER COMPONENT id=RDBMS: status=VALID, version=11.2.0.1.0, timestamp=2009-10-31 10:31:52
Sat Oct 31 10:33:18 2009
Exception [type: SIGSEGV, Address not mapped to object] [ADDR:0x10] [PC:0x287A545, jom_unhotload_clint()+443] [flags: 0x0, count: 1]
Errors in file /opt/oracle/admin/XXX/diag/rdbms/XXX/XXX/trace/XXX_ora_26804.trc (incident=161):
ORA-07445: exception encountered: core dump [jom_unhotload_clint()+443] [SIGSEGV] [ADDR:0x10] [PC:0x287A545] [Address not mapped to
object] []Incident details in: /opt/oracle/admin/XXX/diag/rdbms/XXX/XXX/incident/incdir_161/XXX_ora_26804_i161.trc
查看trace文件/opt/oracle/admin/XXX/diag/rdbms/XXX/XXX/trace/XXX_ora_26804.trc
Dump continued from file: *** CLIENT ID: () 2009-10-31 10:33:18.387
/opt/oracle/admin/XXX/diag/rdbms/XXX/XXX/trace/XXX_ora_26804.trc
ORA-07445: exception encountered: core dump [jom_unhotload_clint()+443] [SIGSEGV] [ADDR:0x10] [PC:0x287A545] [Address not mapped to
object] []
========= Dump for incident 161 (ORA 7445 [jom_unhotload_clint()+443]) ========
----- Beginning of Customized Incident Dump(s) -----
Exception [type: SIGSEGV, Address not mapped to object] [ADDR:0x10] [PC:0x287A545, jom_unhotload_clint()+443] [flags: 0x0, count: 1]
Registers:
%rax: 0x0000000000000003 %rbx: 0x0000000000000030 %rcx: 0x0000000000000000
%rdx: 0x0000000000000003 %rdi: 0x0000000000000000 %rsi: 0x0000002a9b54ce43
%rsp: 0x0000007fbffef0a0 %rbp: 0x0000007fbffef100 %r8: 0x0000002a9b54ce43
%r9: 0x0000000000000003 %r10: 0x0000000000000003 %r11: 0x0000000000000003
%r12: 0x000000043002382d %r13: 0x0000000430023470 %r14: 0x0000002a9b50dd2f
%r15: 0x0000000000000000 %rip: 0x000000000287a545 %efl: 0x0000000000010293
> (0x287a545) mov 0x10(%rcx),%edi
(0x287a548) mov %r8,0x8(%rcx)
(0x287a54c) test $0x20,%edi
(0x287a552) je 0x287a55b
(0x287a554) mov %bx,0xa0(%rcx)
*** 2009-10-31 10:33:18.395
dbkedDefDump(): Starting a non-incident diagnostic dump (flags=0x3, level=3, mask=0x0)
----- Current SQL Statement for this session (sql_id=c054vwp86kp29) -----
select dbms_java.longname('foo') from dual
----- PL/SQL Stack -----
----- PL/SQL Call Stack -----
object line object
handle number name0x4ac8ff1d8 139 package body SYS.DBMS_JAVA
在之前的所有检查中(包括JVM)都没有出现任何错误信息。
>@utlu112i
--> Oracle Catalog Views [upgrade] VALID
--> Oracle Packages and Types [upgrade] VALID--> JServer JAVA Virtual Machine [upgrade] VALID(JVM正常可用)--> Oracle XDK for Java [upgrade] VALID
--> Oracle Workspace Manager [upgrade] VALID
--> OLAP Analytic Workspace [upgrade] UPGRADED
--> OLAP Catalog [upgrade] VALID
--> Oracle Text [upgrade] VALID
--> Oracle XML Database [upgrade] VALID
--> Oracle Java Packages [upgrade] VALID
--> Oracle interMedia [upgrade] VALID
--> Spatial [upgrade] VALID
--> Data Mining [upgrade] VALID
--> Oracle Ultra Search [upgrade] VALID
--> Oracle OLAP API [upgrade] UPGRADED
在升级前的9i中运行升级出错的语句是没有问题的
SYS>select dbms_java.longname('foo') from dual;
DBMS_JAVA.LONGNAME('FOO')
------------------------------------------------------------------------------------------------------------------------------------------------------
foo
1 row selected.
后来把原来数据库做了一个境像的数据库把JVM组件删除后再试!升级成功而且JServer JAVA Virtual Machine组件也自动安装好了。
删除的脚本为。只适用于9i
-- Start of File full_rmjvm.sql
spool full_rmjvm.log
set echo on
connect / as sysdba
startup mount
alter system set "_system_trig_enabled" = false scope=memory;
alter system enable restricted session;
alter database open;
start ?/rdbms/admin/catnojav.sql
start ?/xdk/admin/rmxml.sql
start ?/javavm/install/rmjvm.sql
truncate table java$jvm$status;
select * from obj$
where obj#=0 and type#=0;
delete from obj$
where obj#=0 and type#=0;
commit;
select owner, count(*) from all_objects
where object_type like '%JAVA%' group by owner;
select obj#, name from obj$
where type#=28 or type#=29 or type#=30 or namespace=32;
select o1.name from obj$ o1,obj$ o2
where o1.type#=5 and o1.owner#=1 and o1.name=o2.name and o2.type#=29;
shutdown immediate
set echo off
spool off
exit
-- End of File full_rmjvm.sql