2017-04-25 23 views
0

ホスト上のSIDのリストを検索しようとしています。 Oracleのホスト、ポート、ユーザー名、パスワードがあります。マシン上のSIDを調べたいと思います。JavaアプリケーションのマシンでSIDのリストを取得する方法

マシンにログオンして "lsnrctl status"を使用してSIDを返すことができますが、これをJavaアプリケーションから実行しようとすると失敗します。これは、Oracleのバージョンにある:10グラムのOracleのデフォルトから

セキュリティONがあります。つまりローカルOS認証 その 発行LSNRCTLは、リスナーにコマンドすることができ、リスナーを開始し、ローカルOSユーザー。リスナーは に他のユーザーに応答することを拒否します。

+0

私はこれを行う方法がわかりません。私のJavaアプリケーションでJDBCセッションを作成し、そこから何が得られるかを見てみましょう。 –

+0

ポスターとJ. Chomelへの私の謝罪。もちろん、ORACLE_SIDを探しています。これらは$ ORATABで見つけることができます。通常は/ etc/oratabまたは/ var/opt/oracle/oratabにあります。申し訳ありません - 私の部分で完全な脳の凍結。 – sandman

答えて

0

これを行う方法が見つかりました。リスナーに、ローカルOS認証またはパスワード経由で認証されたユーザーと話すことを許可するパスワードをリスナーに与えることができます。私のJavaアプリケーションは、パスワードをSTATUS connect_dataの一部としてパスすることによって認証することができます。

ソース:http://www.dba-oracle.com/t_listener_password_security_lsnrctl.htm

0

ORACLE_SIDとセッションID(SID)の間に混乱があります。

ORACLE_SIDは、通常は/ etc/oratabまたは/ var/opt/oracle/oratabにある$ ORATABにあります。

+1

セッションIDを[ORACLE_SID](http://www.orafaq.com/wiki/ORACLE_SID)と混同していませんか? –

+0

彼はオラクルSIDを望んでいるようですか?プロセスIDが必要な場合は、そのスクリプトにも存在します。他のセッションIDは何か分かりませんか? – sandman

+0

サーバー上のOracleのシステムIDは、このサーバー上で実行されているデータベースのリストです。このクエリーから得られる現在のデータベースのプロセスIDとは異なるものです。 –

1

アプリケーションを実行するユーザーは、あなたがやりたいことができない場合は、cron jobファイルにlsnrctl statusの結果をエクスポートするすべての今して

  • 少しはこれを読ん

    • 必要がありますあなたのJavaアプリケーションのファイル

    もう1つの解決策は、Java Unixユーザーがこのコマンドを実行できるようにすることですsudo -u oracle lsnrctl status;これはどのようにsuが動作するか、またはあなたのsysadminから何らかの操作を少し研究する必要があります。

  • 関連する問題