2017-04-25 68 views
0

我正在嘗試查找主機上的SID列表。我有Oracle的主機,端口,用戶名和密碼,我想找出機器上的SID。如何在Java應用程序中獲取計算機上的SID列表

我能夠登錄到機器並使用「lsnrctl status」返回SID,但是當我嘗試通過我的Java應用程序運行時,它不成功。這是由於Oracle的版本:

從10G甲骨文默認具有安全性ON:意爲本地OS認證 ,只有那些能夠開始發行 lsnrctl的命令,聽衆收聽本地操作系統用戶。聽衆將拒絕 回答任何其他用戶。

+0

我不確定如何做到這一點。現在在我的Java應用程序中創建一個JDBC會話,然後看看我能從中得到什麼 - 任何建議都會有所幫助! –

+0

我對這張海報和J. Chomel表示歉意。當然你正在尋找ORACLE_SID。您可以在$ ORATAB中找到這些文件,這些文件通常位於/ etc/oratab或/ var/opt/oracle/oratab中。對不起 - 我完成了大腦凍結。 – sandman

回答

0

我找到了一種方法來做到這一點。您可以爲偵聽器提供一個密碼,允許偵聽器與通過本地操作系統身份驗證或密碼進行身份驗證的用戶交談 - 我的Java應用程序可以使用密碼通過將密碼作爲STATUS connect_data的一部分進行身份驗證來進行身份驗證。

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

0

對不起ORACLE_SID和會話ID(SID)之間的混淆。

ORACLE_SID位於$ ORATAB中,它通常位於/ etc/oratab或/ var/opt/oracle/oratab中。

+1

難道你不會將[ORACLE_SID](http://www.orafaq.com/wiki/ORACLE_SID)的會話ID混淆? –

+0

看來他想要oracle SID?如果他想要進程ID,那麼它也在那個腳本中。不知道還有哪些會話ID? – sandman

+0

服務器上的Oracle系統ID是在此服務器上運行的數據庫列表;它與您將從此查詢中獲得的當前數據庫的進程ID有所不同。 –

1

如果運行應用程序的用戶是不能夠做你想做的,那麼你應該有

  • 一點cron joblsnrctl status結果導出到文件飄飛
  • 閱讀本文件從您的Java應用程序

另一種解決方案將允許java Unix用戶執行此命令,例如與sudo -u oracle lsnrctl status;這需要關於su如何工作或從您的系統管理員進行一些操作的一點研究。

相關問題