11.2.0.2升级到11.2.0.4 memory_target 设置过小,只有800M。 导致jserver jave virtual machine 组件无法安装,

建议升级之前至少memory_target调大到2000M。保证 JAVA_POOL_SIZE = 150M; 升级完成之后,可以memory_target调小到800m .

GOAL

Since the new Oracle JVM PSU patching scheme for 11.2.0.3, 11.2.04, and 12c databases, more and more customers are finding that their Database JVM Component is showing up as INVALID.  The goal of this document is to help resolve the most common cases.

1) ORA-29548 classes.bin mismatched in binaries and database
2) ORA-29516: Aurora assertion failure: Assertion failure at eox.c:359 java.lang.UnsatisfiedLinkError sun.net.PortConfig.getLower0
3) ORA-00600:[26599][1][195]

SOLUTION

The Oracle DB JVM is comprised of 2 parts
   1. Binaries (opatch) and
   2. Database objects (11g postinstall.sql/12c datapatch).

When applying a patch that affects the Oracle Database JVM, one must make sure that both pieces get patched and are in SYNC or the JVM will be unusable. A broken JVM will then cause problems not only for custom Java Stored Procedure applications but also for other database components such as XDB and SDO that depend on it.

Most of the time, the post installation step (postinstall.sql or datapatch) was not run or did not get run properly. The next most likely scenario is that there was some hiccup that caused the binaries to not get relinked with the changes. And finally, on rare occasions and only on some 12c OJVM PSUs, the JDK version needs to be manually upgraded.

Steps to Resolve :

Test the JVM installation by running -

select dbms_java.longname('TEST') from dual; -- for 11g
select dbms_java.get_jdk_version() from dual; -- for 12.1

If this returns an ORA-29548, then:

Follow the readme guidelines from the OJVM PSU patch installed and follow post installation instructions to run either postinstall.sql or datapatch. Afterwards, run utlrp.sql.
If the jvm is still invalid or the error was ORA-29516, then relink the binaries using 'make -f ins_rdbms.mk ioracle' from the OH/rdbms/lib directory.

If you are using 12c and the the JVM is still invalid, then run

OH/javavm/install/update_javavm_db.sql

and retest the installation using:

select dbms_java.get_jdk_version() from dual;

If you get here and the JVM is still invalid, then use the brute force method to remove the JVM and reinstall it.

JVM Removal and Reinstall steps

For the most part, these steps should be executed one by one rather than in a single script.

1. Connect as SYSDBA and startup the database in restricted mode.

NOTE: The following procedure can be performed while users are accessing the database. However, care should be taken to insure that no one is executing any Java or XML code inside the database. If in doubt, then shutdown      and startup the database in restricted mode using the following startup steps.

***NOTE: A restart of the database is required at the end regardless of whether you are in restricted mode or not***

connect / as sysdba

startup mount

alter system set "_system_trig_enabled" = false scope=memory;

alter system enable restricted session;

alter database open;

2. Start a log of the session so that any problems encountered can be investigated later.

spool force_removal.txt

set echo on

3. Execute version specific scripts one at a time.

NOTE: Any or all of these scripts may hang and/or produce errors. If the script hangs then kill the script using CTRL-C and continue on with the next one. All errors in these scripts can be ignored.

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

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

SQL> @?/xdk/admin/rmxml.sql

4. Next is the part which actually removes the JVM objects from the database.

NOTE: The parameter for the rmjvm.run procedure determines whether or not user objects are removed.

A value of TRUE removes ALL objects.
A value of FALSE leaves user java objects intact.

If you are concerned about losing user java objects then try running the procedure with a value of FALSE. However, it should be noted that many times this still leaves the database in a state where JVM can not be successfully reinstalled.

execute rmjvm.run(false); -- Use true if false does not fix the problem but be aware

truncate table java$jvm$status;

delete from obj$ where obj#=0 and type#=0;

commit;

set echo off

spool off

5. Now you must shutdown and restart the database in mount mode
***VERY IMPORTANT***
You must shutdown and restart the database at this point in order to remove and remaining traces of JVM from memory. This is especially important if you will be reloading JVM. If you do not restart the database then a subsequent reload will fail.

6. Now reload the JVM using the following INSTALL steps below from a new SQL*Plus session:

NOTE: 11.2 reloads only: The install steps below are for 12.1. Please add the following *after* catjava.sql for 11.2 reloads:
@?/rdbms/admin/catexf.sql

-- connect / as sysdba

spool full_jvminst.log;
set echo on
alter system set "_system_trig_enabled" = false scope=memory;
alter database open;
@?/javavm/install/initjvm.sql
@?/xdk/admin/initxml.sql
@?/xdk/admin/xmlja.sql
@?/rdbms/admin/catjava.sql
shutdown immediate
set echo off
spool off
exit

IMPORTANT NOTES

If the initjvm.sql script errors with an ORA-955 error executing the "create or replace java system" command, then see the following note on Metalink for details on how to resolve this.

Note 276457.1 How to Resolve ORA-955 Errors When Running initjvm.sql

7. Review the log file FULL_JVMINST.LOG

Review the log file and check to see if any unexpected errors were raised.

NOTE: If any unexpected errors were raised, or if you would like Oracle Support Services (OSS) to review the log file (recommended), please stop at this point and upload the log file, full_jvminst.log, to your Service Request (SR) for review.

8. Resolve Invalid Objects

Be sure the JVM INSTALL steps completed successfully and restart the database instance

Once the database has been started, resolve any invalid objects by running the utlrp.sql script:

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

9. Validate the Install

The JVM should now be fully installed.

Execute the following validation queries to retrieve the final count of SYS Java Objects inside the database:

-- Validation Query 1
select count(*), object_type
from all_objects
where object_type like '%JAVA%'
and owner = 'SYS'
group by object_type;

-- Validation Query 2
select owner, count(*)
from all_objects
where object_type like '%JAVA%'
and owner = 'SYS'group by owner;

-- Validation Query 3
select owner, object_type, count(*)
from all_objects
where object_type like '%JAVA%'
and status <> 'VALID'
and owner = 'SYS'
group by owner, object_type;

Steps to Resolve the Database JAVAVM Component if it Becomes INVALID After Applying an OJVM Patch的更多相关文章

  1. Oracle Recommended Patches -- "Oracle JavaVM Component Database PSU" (OJVM PSU) Patches (文档 ID 1929745.1)

    From: https://support.oracle.com What is "Oracle JavaVM Component Database PSU" ? Oracle J ...

  2. Oracle® Database Patch 19121551 - Database Patch Set Update 11.2.0.4.4 (Includes CPUOct2014) - 傲游云浏览

    Skip Headers Oracle® Database Patch 19121551 - Database Patch Set Update 11.2.0.4.4 (Includes CPUOct ...

  3. P6 EPPM Manual Installation Guide (Oracle Database)

    P6 EPPM Manual Installation Guide (Oracle Database) P6 EPPM Manual Installation Guide (Oracle Databa ...

  4. P6 Professional Installation and Configuration Guide (Microsoft SQL Server Database) 16 R1

    P6 Professional Installation and Configuration Guide (Microsoft SQL Server Database) 16 R1       May ...

  5. Plugging an Unplugged Pluggable Database issue 3

    Multitenant Unplug/Plug Best Practices (文档 ID 1935365.1) 1.source 从0419 升级到1019 ,但是datapatch 没有回退041 ...

  6. Oracle Created Database Users: Password, Usage and Files References (文档 ID 160861.1)

    This document is no longer actively maintained, for info on specific (new) users in recent product e ...

  7. Use ALTER DATABASE to Move Databases

    Use ALTER DATABASE to Move Databases Follow Our Daily Tips •facebook.com/TechNetTips• twitter.com/Te ...

  8. Quick and Easy Installation of Oracle Database 12c on Oracle Linux in Oracle VM VirtualBox

    发贴人 Sergio-Oracle 于2018-4-18 23:10:15在Oracle Linux Introduction How Does This Work? Requirements Bef ...

  9. angular resolve路由

    import { Resolve, ActivatedRouteSnapshot, RouterStateSnapshot, Router } from "@angular/router&q ...

随机推荐

  1. LeetCode(66)题解: Plus One

    https://leetcode.com/problems/plus-one/ 题目: Given a non-negative number represented as an array of d ...

  2. 设计模式学习笔记——Chain of Responsibility职责链模式

    重点在链.一条链,如果本节点处理不了,则传递给下一个节点处理. 关键是如何传给下一个节点? 主要是由本节点决定传给哪一个节点. public class Client { public static ...

  3. 创建Vue项目的步骤

    第一步: 对于要创建项目的工作目录,要先进性管理,命令:npm init -y 第二步: 初始化webpack 包,命令:vue init webpack 自定义名称 第三步: 在components ...

  4. 使用TASM编译COFF格式和连接

    看到网络上流传的一份Drocon的mercury的代码程序源码使用TASM32编译使用MASM32来连接...关键的地方就在这里为什么要使用TASM编译...正常情况下TASM连接出来的程序代码体积远 ...

  5. Deep Learning 31: 不同版本的keras,对同样的代码,得到不同结果的原因总结

    一.疑问 这几天一直纠结于一个问题: 同样的代码,为什么在keras的0.3.3版本中,拟合得比较好,也没有过拟合,验证集准确率一直高于训练准确率. 但是在换到keras的1.2.0版本中的时候,就过 ...

  6. 微信小程序引入外部js 方法

    步骤: 1.首先将外部js放在你指定的文件夹里(这都是废话...) 2.接下来 将该js文件中你要使用的方法给暴露出来 3.在您要使用的js中引入该js 4.使用暴露出来的方法 例子:使用md5加密 ...

  7. SDUT OJ 2054 双向链表的实现 (结构体node指针+遍历 *【模板】)

    双向链表 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 学会了单向链表,我们又多了一种解决问题的能力,单链表利用一个指针就能在内 ...

  8. 计算一个大数n的阶乘的位数宽度(十进制)(log i累加法 )

    输入: 每行输入1个正整数n, (0<n<1000 000) 输出: 对于每个n,输出n!的(十进制)位数. 分析: 这道题采用蛮力法.根据定义,直接求解! 所谓n!的十进制位数,就是 l ...

  9. 【Java】DateUtil(2)

    import java.sql.Timestamp; import java.text.ParseException; import java.text.SimpleDateFormat; impor ...

  10. wukong引擎源码分析之搜索——docid有序的数组里二分归并求交集,如果用跳表的话,在插入索引时会更快

    searcher.Search(types.SearchRequest{Text: "百度中国"}) // 查找满足搜索条件的文档,此函数线程安全 func (engine *En ...