【问题标题】:How to obtain a list of SID's on a machine in Java Application如何在 Java 应用程序中获取机器上的 SID 列表
【发布时间】:2017-04-27 01:55:25
【问题描述】:

我正在尝试查找主机上的 SID 列表。我有 Oracle 的主机、端口、用户名和密码,我想找出机器上的 SID。

我能够登录到机器并使用“lsnrctl status”来返回 SID,但是当我尝试通过我的 java 应用程序运行它时它是不成功的。这是由于 Oracle 版本:

从 10g oracle 默认有 Security ON: Local OS Authentication 这意味着只有启动侦听器的本地操作系统用户才能 向侦听器发出 lsnrctl 命令。听众会拒绝 回答任何其他用户。

【问题讨论】:

  • 我不确定如何执行此操作。现在在我的 java 应用程序中创建一个 JDBC 会话,看看我能从中得到什么——任何建议都会有所帮助!
  • 我向海报和 J. Chomel 道歉。当然,您正在寻找 ORACLE_SID。您可以在 $ORATAB 中找到这些,通常可以在 /etc/oratab 或 /var/opt/oracle/oratab 中找到。抱歉 - 我的大脑完全冻结了。

标签: java oracle sid


【解决方案1】:

如果运行应用程序的用户不能做你想做的事,那么你应该有

  • 一点点cron job 不时将lsnrctl status 的结果导出到文件中
  • 从您的 java 应用程序中读取此文件

另一种解决方案是允许 java Unix 用户执行此命令,例如与sudo -u oracle lsnrctl status;这需要对 su 的工作原理进行一些研究,或者从您的系统管理员那里进行一些操作。

【讨论】:

    【解决方案2】:

    对于 ORACLE_SID 和会话 ID (SID) 之间的混淆,我们深表歉意。

    ORACLE_SID 在 $ORATAB 中,通常可以在 /etc/oratab 或 /var/opt/oracle/oratab 中找到。

    【讨论】:

    • 你不是把会话 ID 和 ORACLE_SID 混淆了吗?
    • 他似乎想要oracle SID?如果他想要进程 ID,那么它也在那个脚本中。不确定还有什么其他会话 ID?
    • Oracle's System IDs on a server 是该服务器上运行的数据库列表;它与您将从该查询中获得的当前数据库的进程 ID 不同。
    【解决方案3】:

    我找到了一种方法来做到这一点。您可以为侦听器提供一个密码,该密码允许侦听器与通过本地操作系统身份验证或密码进行身份验证的用户交谈 - 我的 java 应用程序可以通过将密码作为 STATUS connect_data 的一部分传递来使用密码进行身份验证。

    来源:http://www.dba-oracle.com/t_listener_password_security_lsnrctl.htm

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-16
      • 2010-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-30
      • 2012-05-13
      • 1970-01-01
      相关资源
      最近更新 更多