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补丁安装》文章
相关推荐
lzhdim13 小时前
SQL 入门 14:SQL 触发器与事件:自动化数据处理
linux·前端·数据库·sql·自动化
环流_14 小时前
redis中hash的应用场景
数据库·redis·哈希算法
@我漫长的孤独流浪14 小时前
医院病房管理系统E-R建模与关系转换
数据库
_codemonster14 小时前
系统分析师系列目录
java·网络·数据库
|_⊙14 小时前
Linux 深入理解文件(Ext2文件系统:下)
linux·服务器·数据库
treacle田14 小时前
达梦数据库-备份与还原-逻辑备份与还原
数据库·达梦数据库逻辑导出导入
许彰午14 小时前
# Oracle数据库无备份强制恢复:SCN不一致、oradebug与ORA-600[2662]
数据库·oracle
lolo大魔王14 小时前
Go 语言原生 SQL 操作 MySQL 超详细全解 + 生产级项目模板(纯官方库无ORM)
数据库·sql·golang
六月雨滴14 小时前
Oracle 数据库 ASM 自动存储管理
数据库·oracle·dba
老年DBA15 小时前
ZFS存储池配置终极指南
运维·数据库