Oracle OJVM组件总结

1、Oracle OJVM的作用

复制代码
Oracle JavaVM(OJVM)是 Oracle 数据库中的一个内置 Java 虚拟机组件,主要功能包括:
1)运行Java代码:允许在数据库内部执行Java存储过程、函数和触发器,实现与SQL的紧密集成。
2)支持Java应用:为使用Java开发的数据库应用(如 JDBC、Java 存储过程)提供运行时环境。
3)安全隔离:通过数据库的安全机制(例如权限控制)管理Java代码的访问权限。
4)性能优化:直接访问数据库数据,减少网络开销,适合数据密集型操作(如 ETL、复杂计算)。

2、Oracle OJVM安装情况

复制代码
OJVM是被默认安装的。可以用下面的SQL可以判定OJVM是否被安装。
SELECT version, status FROM dba_registry WHERE comp_id='JAVAVM';
VERSION                        STATUS

------------------------------ --------------------------------------------

19.0.0.0.0                     VALID
备注:如果status的值是VALID则代表安装,否则则意味没有被安装。

3、Oracle OJVM是否被使用

复制代码
OJVM即使默认被安装,但是很多情况下,基本都是不会被使用。可以使用下面的SQL来确认OJVM是否被使用:

select count(*) from x$kglob where kglobtyp=29 or kglobtyp=56;

如果count的值为0,则表示组件虽然被默认安装,但是从未使用。
查询示例:
SQL> select count(*) from x$kglob where KGLOBTYP = 29 OR KGLOBTYP = 56;

  COUNT(*)
----------
     0

4、如何禁用Oracle OJVM组件

复制代码
数据库打上PSU补丁(或者RU补丁后),升级数据字典后,执行如下两个命令禁用OJVM:
1、@?/rdbms/admin/dbmsjdev.sql
2、exec dbms_java_dev.disable;

备注:dbmsjdev.sql脚本会创建DBMS_JAVA_DEV包,DBMS_JAVA_DEV可以禁用和启用Java classes类对象授权给public公共用户,从而达到禁用和启用的作用。

5、如何卸载Oracle OJVM组件

复制代码
删除OJVM组件
可以参考文章:
https://mikedietrichde.com/2017/08/07/javavm-xml-clean-oracle-database-11-2-12-2/
https://www.modb.pro/db/101439
备注:
请操作前在测试环境中做充分测试,请勿在生产环境中进行尝试。
不建议在已经运行一段时间的生产环境中做此操作。

6、如何重建Oracle OJVM组件

复制代码
简要步骤:
alter system set java_jit_enabled = FALSE;
alter system set "_system_trig_enabled"=FALSE;
-- Keep a Note of original JOB_QUEUE_PROCESSES value before this
alter system set JOB_QUEUE_PROCESSES=0;
create or replace java system
/
alter system set java_jit_enabled = true;
alter system set "_system_trig_enabled"=TRUE;
alter system set JOB_QUEUE_PROCESSES=10;
@?/rdbms/admin/utlrp.sql

具体参考官方文档:Safe repair/reinstall of the JVM Component in 11.2 and up (Doc ID 2314363.1)
建议做好充分测试,再尝试。

7、OJVM的补丁集

复制代码
OJVM PSU主要是针对oracle java VM。
从2014年10月开始Oracle JavaVM组件作为一个单独的部分来进行安装。之前是包含在oracle rdbms psu中。
只要oracle db中安装jvm组件,就需要安装对应版本的oracle JavaVM PSU。如果只是打了rdbms的PSU,安全漏洞检查就会检查出jvm的安全漏洞。特别是OJVM的"反序列化"漏洞,基本一直没有消停过。

补丁安装方式,可以参考我的《Oracle 11g单库环境PSU补丁安装》和《Oracle 19c单库环境RU补丁安装》文章
相关推荐
AllData公司负责人44 分钟前
数据库同步平台|AIIData数据中台实现OceanBase、达梦数据库、OpenGauss、人大金仓、Hive、TDengine 一键接入Doris
大数据·数据库·hive·mysql·oceanbase·tdengine
2603_954708311 小时前
全维度容错设计,打造微电网安全运行屏障
服务器·网络·数据库·人工智能·分布式·安全
IvorySQL1 小时前
从双解析器到循环工程:IvorySQL 五年技术演进路线的深度观察
大数据·数据库·人工智能·postgresql·开源
wefg12 小时前
【MySQL】事务
数据库·mysql
黑白极客2 小时前
mysql的高可用性
数据库·mysql
一十九的酒2 小时前
Oracle 12c 标准版无缝升级企业版实战记录
数据库·oracle·标准版切换到企业版
ZhengEnCi2 小时前
S02-SpringBoot实体类新增字段对已有数据的影响及自动DDL同步机制详解
数据库·spring boot
妙码生花3 小时前
从 PHP 到 AI + Golang,程序员自救转型手记(三十二):增加 admin_rule 模型及数据表迁移
数据库·go·ai编程
千维百策6664 小时前
SRE 中如何消除琐务:提升工程效率与服务可靠性的实践方法
数据库
卓怡学长4 小时前
w266基于spring boot + vue 圣地延安美食乐享系统
java·数据库·vue.js·spring boot·spring·intellij-idea