Oracle声称11g R2支持IPV6,ojdbc6.jar是正确的。
但是当我测试它时,我得到例外,你解决了吗?
我的测试代码是:
import java.sql.SQLException;
import java.util.Properties;
public class Test {
final static String sDBDriver = "oracle.jdbc.driver.OracleDriver";
/**
* @param args
* @throws SQLException
*/
public static void main(String[] args) throws SQLException {
// TODO Auto-generated method stub
java.sql.Connection conn=null;
String url="jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=
[fe80::b056:5cff:fe78:b672])(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=fnstdb1))";
try
{
Class.forName(sDBDriver);
conn = DriverManager.getConnection(url,"scott","fnst1234");
}
catch (Exception e)
{
System.out.println("ERROR:"+e.getMessage());
}
finally
{
System.out.println("连接是否关闭:"+conn.isClosed());
conn.close();
}
}
}
我使用以下cmd:
java -cp ojdbc6.jar -Djava.net.preferIPv6Addresses=true Test
但结果是:ERROR:NL Exception was generated
有什么问题?
答案 0 :(得分:1)
我已经解决了这个问题。以下显示了我做了什么:
编辑$DB_HOME\NETWORK\ADMIN\listener.ora
文件以允许oracle侦听ip和端口。例如:(ADDRESS = (PROTOCOL = TCP)(HOST = [fe80::221:97ff:fe66:1fa9%4])(PORT= 1521))
重新录制听众。运行:LSNRCTL stop/start
在某些应用程序(javase,连接池,查找)中使用ojdbc6.jar:jdbc:oracle:thin:@[fe80::221:97ff:fe66:1fa9]:1521:orcl
。
结果成功!!
listener.ora中的ip地址必须添加“%4”,否则会失败。
ipv6地址必须在“[”和“]”中,否则会失败。
oracle的文档声明使用ipv6必须设置jvm选项
java.net.preferIPv6Addresses=true
但无论是否设定都无关紧要!