質問

Oracleには、Oracleに接続しているプログラムを実行しているオペレーティングシステムユーザーがデータベースユーザーを識別できるようにするという概念があります。 こちらを参照してください。

これにより、たとえばUNIXマシンのユーザーとして、次のようなコマンドを実行できます。

sqlplus /

ユーザー名またはパスワードなしで接続するOracle 10.2用のJavaプログラムを作成しようとしています。 urlの明らかな選択:

jdbc:oracle:thin:/@localhost:1521:MYDBSID

機能せず、エラーが発生します(現在、エラーはありません。)

これを行うために他の多くの形式も試みましたが、運がありません。

OS識別方法を使用してJavaプログラムをOracleに接続する方法について提案はありますか?

役に立ちましたか?

解決

JDBC Thinドライバーは、オペレーティングシステムから必要な情報を収集できない100%純粋なJava実装です。

JDBC OCIドライバーはこれを行うことができます! jdbc:oracle:oci8:/ @ MYDBSID を使用します。サーバーにOracleドライバをインストールする必要があります。これがサーバーの場合は問題ありません(起動が速く、より多くの機能をサポートします) Thinドライバよりも))

他のヒント

oracleに同梱されているjdbcドライバには、指定したURLからOSユーザー名とパスワードを収集する機能がありません。 ORACLEにはサードパーティのJDBCドライバープロバイダーがあり、そのうちの1つがあなたが求めている機能を提供しているとします。 Googleで検索する必要があります。

回答いただいた方に感謝します。 OCIドライバーを使用しました。

Oracle 11gはシンドライバーを介したOSユーザー認証をサポートしている ことを示唆するドキュメントを見つけました:

http://www.orindasoft.com /public/Oracle_JDBC_JavaDoc/javadoc1110/oracle/jdbc/OracleConnection.html#CONNECTION_PROPERTY_THIN_VSESSION_OSUSER

これをテストするための11gのセットアップがないため、これが機能するかどうかはわかりません。

J2EEアプリサーバーからOracleにアクセスしている場合、JNDIを使用してデータソースを取得することで同様の目的を達成できます。

11gシンドライバーは、Kerberos認証を使用して接続できます。

Kerberosを使用してOracleデータベースに接続

フォローしてみてください jdbc:oracle:thin:username / password @ localhost:1521:MYDBSID

アカウント情報を指定する必要があります

sqlplus /オペレーティングシステムの認証を通過するUNIXマシン上のsysdbaとして

JDBC ThinドライバのOS認証サポートは11gで追加されました(OTNの11.2.0.4からJDBC Thinドライバをダウンロードできます)。

サーバー上で(TCPを介した)リモートOS認証を許可する必要があります。許可しない場合、ローカルでIPCまたはBEQを使用するsqlplusでのみ機能します。 init.oraファイルで、これを追加します。

REMOTE_OS_AUTHENT = TRUE

次に、ユーザーが「osuserdemo」の場合クライアントマシンで、次のようなデータベースユーザーを作成し、DBを再起動します。

 CREATE USER OSUSERDEMO IDENTIFIED EXTERNALLY;
 GRANT CONNECT,CREATE SESSION,RESOURCE TO OSUSERDEMO; 

そして、JDBC Thinドライバは、ユーザー名またはパスワードなしで接続できる必要があります。

この機能(非常に安全ではないと見なされる)が12cでサポートされなくなったことは注目に値します。

jdbc:oracle:oci:@ はojdbc6.jarおよびOracle 11g2で動作します

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top