资讯专栏INFORMATION COLUMN

记一次19c安装jvm组件过程

IT那活儿 / 1830人阅读
记一次19c安装jvm组件过程

点击上方“IT那活儿”,关注后了解更多内容,不管IT什么活儿,干就完了!!!




问题现象



开发反馈在一套19.5的库上新上的存储过程报错,如下图:




分析过程


这个ORA-29538提示java未安装,查看视图发现jvm组件未安装。

SQL> col COMP_NAME for a30

SQL>
 select COMP_NAME,status from dba_registry;

COMP_NAME STATUS

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

Oracle Database Catalog Views VALID

Oracle Database Packages and T VALID

ypes


Oracle Real Application Cluste OPTION OFF

rs


Oracle XML Database VALID

Oracle Workspace Manager VALID

Oracle Text VALID

Spatial VALID

大概率可以猜测在建库时把相关组件给筛选掉了。

如下图,选择Custom Database选项:

在文中截图的第八步database components选项中,可以选择是否安装Oracle JVM组件:




解决方案


可以通过跑相关的jvm安装脚本,来解决此问题。具体步骤如下:

1. 查看当前组件状态,失效状态对象。

su - oracle

spo /home/oracle/obj_stat.log

col COMP_NAME for a50

select COMP_NAME,status from dba_registry;


col object_name for a50

col object_type for a20

col owner for a15

select owner,object_name,object_type from dba_objects where status=INVALIED;

spo off

exit

2. 停库。

3. 调整initjvm.sql:

cd $ORACLE_HOME/javavm/install

cp initjvm.sql reinitjvm.sql

vi reinitjvm.sql

--原代码:

-- Now check whether create java system worked correctly, and if not, back

-- out of everything done in this script

variable jvmrmaction varchar2(30)


declare

ok int;

bad int;

begin

:jvmrmaction := NONE;

select count(*) into ok from obj$ where status=1 and type#=29;

select count(*) into bad from obj$ where status!=1 and type#=29 and owner#=0;

if bad > 0 or ok < 100 then

initjvmaux.abort_message(

CREATE JAVA SYSTEM did not complete successfully:,

number of java classes with status 1: || ok ||, with status != 1: || bad);

initjvmaux.abort_message(Backing out of java installation...);

:jvmrmaction := FULL_REMOVAL;

initjvmaux.endaction;

end if;

end;

/

--替换成如下代码:

-- Now check whether create java system worked correctly, and if not, log

-- it for future reference in case there are invalid java objects in SYS.

variable jvmrmaction varchar2(30)



declare

ok int;

bad int;

begin

:jvmrmaction := NONE;

select count(*) into ok from obj$ where status=1 and type#=29;

select count(*) into bad from obj$ where status!=1 and type#=29 and owner#=0;

if bad > 0 or ok < 100 then

initjvmaux.abort_message(

CREATE JAVA SYSTEM may not have completed successfully:,

number of VALID java classes: || ok ||, and INVALID java classes: || bad);

-- initjvmaux.abort_message(Backing out of java installation...);

-- :jvmrmaction := FULL_REMOVAL;

initjvmaux.endaction;

end if;

end;

/

4. 运行创建jvm脚本,启动一个节点执行:

startup

alter system enable restricted session;

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

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


-- start a log file

spool full_jvminst.log;

set echo on  


create or replace java system

/

--上述命令执行报如下错误,可忽略继续执行:

--create or replace java system

--*

--ERROR at line 1:

--ORA-00604: error occurred at recursive SQL level 1

--ORA-00942: table or view does not exist


@?/javavm/install/reinitjvm.sql

@?/xdk/admin/initxml.sql

@?/rdbms/admin/catjava.sql

shutdown immediate

set echo off

spool off

exit

==>检查log,查看输出日志是否有报错。

5. 启库。

6. 验证命令:

su - oracle

spool jvm_info.log

--查看最新组件信息:

SELECT SUBSTR(comp_name, 1, 30) comp_name, SUBSTR(version, 1, 20) version, status FROM dba_registry  ORDER BY comp_name;


COMP_NAME                      VERSION              STATUS

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

JServer JAVA Virtual Machine   19.0.0.0.0           VALID

Oracle Database Catalog Views  19.0.0.0.0           VALID

Oracle Database Java Packages  19.0.0.0.0           VALID

Oracle Database Packages and T 19.0.0.0.0           VALID

Oracle Real Application Cluste 19.0.0.0.0           OPTION OFF

Oracle Text                    19.0.0.0.0           VALID

Oracle Workspace Manager       19.0.0.0.0           VALID

Oracle XDK                     19.0.0.0.0           VALID

Oracle XML Database            19.0.0.0.0           VALID

Spatial                        19.0.0.0.0           VALID

--其它的一些细节可以参考:

MOS




本文作者:金震宇

本文来源:IT那活儿(上海新炬王翦团队)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129534.html

相关文章

  • 一次jvm 内存溢出

    摘要:什么是内存溢出内存溢出是指,程序创建对象需要内存,但是却没有内存可用了,内存就溢出了。使用命令查看个数输入后,按诊断是文件在服务端没读取到,还是内存溢出。无耐,阿里云学生机配置不好,只能稍微修改一点,再将文件切割为小文件上传了参数请参考 1、什么是内存泄漏内存泄漏是指,有未被释放的java对象,一直停留在内存中。GCRoot 无法追踪到此对象,导致此对象无法被回收。 2、什么是内存溢出...

    tainzhi 评论0 收藏0
  • 一次JVM调优

    摘要:现象登入生产环境,使用命令因为这时候并没有打的,所以只能观察现象。其他的可以根据这个类推,是内纯的占用量。 前言 我们的游戏上线之初,经常有玩家反馈卡,或者有网络延迟等现象,造成用户流失等现象,这时候我就想到是不是可能是之前的jvm配置有问题,或者存在内存泄露等问题。 现象 登入生产环境,使用命令,因为这时候并没有打gc的log,所以只能观察现象。 jstat -gcutil 270...

    sugarmo 评论0 收藏0
  • 一次OkHttpClient导致线程过多的排查

    摘要:首先先解读下这个报警内容,原因活跃线程数过多,是监听的端口号用来获取虚拟机各项信息,代表着此时的线程数,是设置的报警阈值。 前言 前天,一位21世纪的好好青年正在工位上默念社会主义大法好的时候,钉钉上又报警了(公司项目接入了open-faclon监控,指标不正常会报警给钉钉的机器人),无奈默默流泪挥手告别社会主义大法开始定位线上问题。 报警内容 首先我们先来看下报警信息,为防止泄露公...

    tianyu 评论0 收藏0
  • 一次vue-webpack项目优化实践【更新】

    摘要:优化空间不大主要关注另外两个上面。目前为止,项目打包后的大部头就是,这个目前的优化空间较小。当然,从整体优化的大维度上来说优化的点还有很多,这个文章继续更新下去。 项目现状 项目是一个数据监测平台,引入了ehcart和three.js 负责项目的数据可视化;打包后,体积高达2.1M,这个体积相比于我的项目规模来说就显得稍有笨重了 使用webpack-bundle-analyzer分析了...

    ernest.wang 评论0 收藏0
  • 一次狂怼多线程的面经

    摘要:最近面试一家有直播业务的公司,明显感觉到对多线程的理解有一些要求。第一轮面试大概就面了分钟左右,一轮下来口干舌燥。下面对面试题做了下简单分类,分享给大家。 最近面试一家有直播业务的公司,明显感觉到对多线程的理解有一些要求。第一轮面试大概就面了 70 分钟左右,一轮下来口干舌燥。 下面对面试题做了下简单分类,分享给大家。 多线程 有什么方法可以监控线程的状态 synchronized ...

    Scott 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<