2016-05-16 6 views
0

JavaコードをOracle 11.2 DBに接続しています。のTNSリスナーを無効にしました。コードはDBと同じマシン上で実行される予定ですので、接続が可能であることを理解してください。リスナーを無効にしてJDBCとOracle DBを接続します。

SQLPlusは正しいユーザーとパスワードが与えられたときにローカルに接続できます。

私が試したすべてのコードを追加することはしませんが、これは大体このようです(How to connect JDBC to tns oracle)。この時点で、私は接続文字列を推測しているだけで、運はありません。

私はそれが適切であるとは確信していませんが、ここにはtnsnames.ora構造があります。

XE = 
    (DESCRIPTION = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = hostname)(PORT = 1)) 
    (CONNECT_DATA = 
     (SERVER = DEDICATED) 
     (SERVICE_NAME = XE) 
    ) 
) 

EXTPROC_CONNECTION_DATA = ... 
ORACLR_CONNECTION_DATA = ... 

[EDIT]は接続をすることができる既存の.NETコードがあることを言及するのを忘れました。 .NET開発者ではありませんが、ここでは関連するコードだと思います。

Dim oConn As New OracleConnection 

oConn.ConnectionString = String.Format("User id={0};Password={1};", "***", "***") 
oConn.Open() 
oConn.Close() 

答えて

0

tns接続は、リスナーを必要とするネットワーク接続です。クライアントとdbが同じマシン上にあるかどうかは関係ありませんが、まだtns(ネットワーク)プロトコルを使用しています。

1

リスナーが停止している場合でも、共有メモリ(IPC)経由でデータベースに接続できます。しかし、このオプションは、シン(純粋なJava)JDBCドライバではサポートされていません。

だからオプションは次のとおりです。localhostのみの127.0.0.1に

  • スタートリスナー。したがって、外部からアクセスすることはできません
  • JDBC OCIドライバを使用しますが、これはセットアップが容易ではありません。

    XE= 
    (DESCRIPTION = 
        (ADDRESS_LIST = 
        (ADDRESS = (PROTOCOL = IPC)(Key = IPCKEY)) 
        (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) 
    ) 
        (CONNECT_DATA = (SID = XE)) 
    ) 
    
+0

リスナーは、OCIルートをしようとするつもり、オプションではありません。私が見つけることができる最良のドキュメントは、https://docs.oracle.com/cd/B28359_01/java.111/b31224/instclnt.htm#CHDIHGEFです。助けてくれる他のリソースを提案できますか? –

+0

私はリスナーがなぜオプションではないのか分かりませんが、最近は共有メモリが広く使われていません。古代からのものです*。 – ibre5041

+0

私はセキュリティ上の理由から、DBとそのチームが変更に抵抗しているわけではありません。私が得意なのは、sqlplusがうまく接続できていることと、Javaで書かれている(おそらく間違っている)と思います。 –

関連する問題