【问题标题】:How to check oracle listner status by java program on linux Server如何通过linux服务器上的java程序检查oracle监听器状态
【发布时间】:2018-04-05 12:59:43
【问题描述】:

如何在 Linux 服务器上通过 java 程序检查 oracle 侦听器的状态。

我如何手动操作服务器。 登陆服务器后,我要执行oracle数据库的.oraenvproflie 要求Oracle SID{Oracle database name} 然后它将开始工作

lsnrctl 状态命令。

[oracle@xx$ . oraenv ORACLE_SID = [daltaasm] ?三角洲 Oracle 基础已设置为 /u01/app/oracle oracle@XX$ 清除 甲骨文@xx$ 。 oraenv ORACLE_SID = [deltaasm] ?三角洲 Oracle 基数保持不变,值为 /u01/app/oracle 甲骨文@xx$ ^C oracle@xx$ lsnrctl 状态

适用于 Linux 的 LSNRCTL:版本 11.2.0.4.0 - 于 05-APR-2018 05:18:21 生产

版权所有 (c) 1991、2013、甲骨文。保留所有权利。

连接到 (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))

监听器的状态

别名监听器 适用于 Linux 的版本 TNSLSNR:版本 11.2.0.4.0 - 生产 开始日期 02-APR-2018 11:45:50 正常运行时间 2 天 17 小时。 32 分钟。 31 秒 跟踪级别关闭 安全开启:本地操作系统验证 SNMP 关闭 侦听器日志文件 /u01/app/oracle/diag/tnslsnr/deltaoramegan/listener/alert/log.xml 侦听端点摘要... (描述=(地址=(协议=tcp)(主机=DeltaOraMegan.local)(端口=1521))) 服务总结... 服务“+ASM”有 1 个实例。 实例“+ASM”,状态 READY,有 1 个用于此服务的处理程序... 服务“deltaasm”有 1 个实例。 实例“deltaasm”,状态 READY,有 1 个用于此服务的处理程序... 服务“deltaasmXDB”有 1 个实例。 实例“deltaasm”,状态 READY,有 1 个用于此服务的处理程序... 命令成功完成 oracle@xx$ ^C

那么如何实现java程序来检查lsnrctl status命令状态

如果我不手动执行。 Linux 服务器上的 oraenv 配置文件 它会显示 lsnrctl status command not found

ex oracle@xx$ snrctl 状态 找不到 lsnrctl status 命令

请提出java程序中的问题解决方案

【问题讨论】:

    标签: java linux oracle


    【解决方案1】:

    oraenv 只是一个包装外壳脚本,它将为您设置$ORACLE_HOME$ORACLE_SID$ORACLE_BASE$PATH 变量。你可以用文本编辑器打开它,你会看到所有的 shell 代码。 简而言之,它将查看/etc/oratab,Oracle 记录了 Oracle home 的信息(在给定的服务器上可以有多个),以及哪个数据库使用哪些 Oracle home。

    lsnrctl 二进制文件可以在$ORACLE_HOME/bin 中找到,所以诀窍是找出$ORACLE_HOME 是什么。如果你安装在一个固定的位置,你可以简单地设置$ORACLE_HOME$PATH,例如:

    假设我在/opt/oracle/product/12.2.0.1/dbhome_1 中安装了Oracle 软件,我的环境变量将如下所示:

    export ORACLE_HOME=/opt/oracle/product/12.2.0.1/dbhome_1
    export PATH=$PATH:$ORACLE_HOME/bin
    

    从那时起,您现在只需致电lsnrctl(因为它现在在$PATH 中)。

    因此,诀窍是找出您安装 Oracle 软件的位置,您可以通过查看 /etc/oratab 来找到它,或者,如果您总是将它安装在同一个地方(通常是这种情况),只需预先设置变量。

    【讨论】:

    • 谢谢你,gvenzl,
    • 如何在 java 程序中导出 $ORACLE_HOME 和 $PATH 以便与 oracle 相关的命令可以工作。假设我现在执行 ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1 并从终端导出 PATH=$PATH:$ORACLE_HOME/bin 如果我运行 Linux 命令 lsnrclt status 它会给出结果。那么我如何使用 Java 程序来做到这一点,以便在路径上,我可以获得 lsnrctl status 命令结果的结果 你能建议 gvenzl 请建议这个问题。
    • 嗨@KailasKakade,您的Java 程序将在启动时从shell 继承环境变量。因此,您必须确保在启动 Java 程序之前设置它们。或者,您可以要求用户传递它,或者您可以阅读/etc/oratab 文件。
    • 我找到了另一个解决方案,我只能通过执行 Linux 命令来检查侦听器状态。 ps -ef|grep [l]snr
    • 通过java程序检查lsnrctl status命令非常困难,尤其是当你在java程序中加载环境变量时。我尝试过使用流程构建器以及 java 的流程类,这两种解决方案都不起作用
    猜你喜欢
    • 1970-01-01
    • 2015-10-14
    • 1970-01-01
    • 1970-01-01
    • 2019-01-13
    • 2010-12-14
    • 2012-04-27
    • 2018-02-05
    • 1970-01-01
    相关资源
    最近更新 更多