2

DataSource.groovy の Grails アプリケーションの tnsnames.ora で指定された負荷分散された仮想ホストに接続しようとしていますが、うまくいきません。(明らかに) "Unknown Host Specified" 例外がスローされます。

tnsnames エントリは次のようになります

someServiceName =
 (DESCRIPTION_LIST =
   (FAILOVER=ON)
   (LOAD_BALANCE=ON)
   (DESCRIPTION =
     (ADDRESS_LIST =
       (ADDRESS = (PROTOCOL = TCP)(HOST = someServerName1)(PORT = 1521))
     )
     (CONNECT_DATA =
       (SERVICE_NAME = someServiceName1)
     )
   )
   (DESCRIPTION =
     (ADDRESS_LIST =
       (ADDRESS = (PROTOCOL = TCP)(HOST = someServerName2)(PORT = 1521))
     )
     (CONNECT_DATA =
       (SERVICE_NAME = someServiceName2)
     )
   )
 )

通常の方法で DataSource.groovy に値を設定するだけでサービスの 1 つ (someServiceName1 & someServiceName2) に接続できますが、負荷分散された仮想ホストに接続する方法がわかりません。Grails で tnsnames.ora を使用する方法を検索しましたが、これを機能させる特に「グルーヴィーな」方法を見つけることができないようです。任意のポインタをいただければ幸いです。

PS私はまだdataSourceを自分のコントローラーなどに注入できるソリューションを好むでしょう.

4

3 に答える 3

3

複数のアドレスを持つ単一のサービスを構成する必要があると思います。次に、データソース URL 文字列を次のように設定する必要があります (もちろん改行なしで):

jdbc:oracle:thin@(DESCRIPTION=
   (LOAD_BALANCE=on)
   (ADDRESS=(PROTOCOL=TCP)(HOST=someServerName1) (PORT=1521))
   (ADDRESS=(PROTOCOL=TCP)(HOST=someServerName2) (PORT=1521))
   (CONNECT_DATA=(SERVICE_NAME=theOnlyServiceName)))

こちらこちらを参照してください。

于 2010-10-28T19:17:03.863 に答える
1

この問題に遭遇したばかりですが、これが私のためにそれを修正したものです:

url='jdbc:oracle:thin:@servername:PORT/サービス名'

私をつまずかせたのは、ポートとサービス名の間のスラッシュでした。そこでコロンを使用すると、サービス名ではなく SID として読み取られます。

幸運を!

于 2015-07-01T19:20:55.150 に答える
1

あなたが使用することができます

jdbc:oracle:oci:@someServiceName 

oci私はこれを使用していますが、薄くないことに注意してください。わたしにはできる。

于 2012-08-27T07:41:39.407 に答える