我正在尝试使用以下URL连接oracle和jdbc
String url = "jdbc:oracle:thin:@<host>:1522:dev;includeSynonyms=true";
但它引发了以下错误。
java.sql.SQLException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
The Connection descriptor used by the client was:
<host>:1522:dev;includeSynonyms=true
如果我从网址中删除属性(includeSynonyms = true),我就可以连接。
我正在使用ojdbc14.jar
请帮帮我
答案 0 :(得分:3)
您不能(AFAIK)将此设置为URL的一部分。根据{{3}}:
指定数据库网址和属性对象
以下签名将URL与属性对象一起使用 指定用户名和密码(可能包括其他内容):
getConnection(String URL, Properties info);
网址的格式为:
jdbc:oracle:<drivertype>:@<database>
除了URL之外,还要使用标准Java Properties的对象 作为输入的类。例如:
java.util.Properties info = new java.util.Properties(); info.put ("user", "scott"); info.put ("password","tiger"); info.put ("defaultRowPrefetch","15"); getConnection ("jdbc:oracle:oci8:@",info);
列出Oracle JDBC驱动程序支持的连接属性的表包括includeSynonyms
,因此您应该可以这样做:
String url = "jdbc:oracle:thin:@//<HOST>:1522/dev"
java.util.Properties info = new java.util.Properties();
info.put ("includeSynonyms", "true");
getConnection (url, info);
未经测试我很害怕,我不确定它是否适用于您的驱动程序版本。你也可以看一下稍后通过设置它 OracleDriver documentaion或OracleConnection。
也不完全确定URL表单适用于1.4驱动程序,但我认为确实如此 - 您可能需要使用原始的@<host>:1522:dev
表单。请注意,在OracleConnectionWrapper格式中,dev
指的是服务名称而不是SID,它们可能不相同;检查lsnrctl status
显示的内容是否有问题。
答案 1 :(得分:0)
您是否使用url
变量中的网址而不将<host>
更改为IP地址?如果是这样,那么只需将其更改为Oracle服务器的地址。
您还应该阅读有关通过JDBC连接tp Oracle的信息:http://docs.oracle.com/cd/B10501_01/java.920/a96654/basic.htm甚至还有关于设置连接属性的信息,包括includeSynonyms
。
答案 2 :(得分:-1)
你需要在@
symblol之后添加一个TNS名称,即如果oracle db tns名称是dev,它将转换为:
String url = "jdbc:oracle:thin:@//<HOST_IP>:1522:dev;includeSynonyms=true";
使用正斜杠而不是完整冒号