如何在 Java 应用程序中获取机器上的 SID 列表

How to obtain a list of SID's on a machine in Java Application

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

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

From 10g oracle default has Security ON: Local OS Authentication meaning that only the local OS user that started the listener can issue lsnrctl commands to the listener. The listener will refuse to answer any other user.

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

ORACLE_SID 在 $ORATAB 中,通常在 /etc/oratab 或 /var/opt/oracle/oratab.

中找到

如果运行该应用程序的用户无法执行您想要的操作,那么您应该

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

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

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

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