Oracle 如何在Grails数据源中使用tnsnames.ora?
我正在尝试连接到DataSource.groovy中Grails应用程序的tnsnames.ora中指定的负载平衡虚拟主机,但没有成功-它显然抛出了一个未知主机指定的异常 tnsnames条目如下所示Oracle 如何在Grails数据源中使用tnsnames.ora?,oracle,grails,datasource,tnsnames,Oracle,Grails,Datasource,Tnsnames,我正在尝试连接到DataSource.groovy中Grails应用程序的tnsnames.ora中指定的负载平衡虚拟主机,但没有成功-它显然抛出了一个未知主机指定的异常 tnsnames条目如下所示 someServiceName = (DESCRIPTION_LIST = (FAILOVER=ON) (LOAD_BALANCE=ON) (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP
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中设置值来连接到其中一个服务someServiceName1和someServiceName2,但我不知道如何连接到负载平衡的虚拟主机。
我到处寻找在Grails中使用tnsnames.ora的方法,但似乎找不到一种特别好的方法来实现这一点。任何指点都将不胜感激
另外,我更喜欢这样一种解决方案,即我仍然能够将数据源注入控制器等。我认为您需要配置具有多个地址的单个服务。然后,您必须将数据源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)))
查找和查找参考资料 您可以使用
jdbc:oracle:oci:@someServiceName
我用这个,注意它是oci,不是薄的。它适合我。刚刚遇到这个问题,下面是为我解决它的方法: url='jdbc:oracle:thin:@servername:PORT/servicename' 端口和服务名称之间的正斜杠让我大吃一惊。如果在那里使用冒号,它会将其读取为SID而不是服务名
祝你好运 谢谢你的推荐信。所包含的示例对我不起作用,但引用证明包含我需要设置的特定连接字符串。