oracle rac11 vip 通过ojdbc创建连接失败

wangyunzhong 发布于 2014/10/30 13:34
阅读 610
收藏 1

自己搭建的一个oracle rac11,有两个client通过ojdbc6连接rac。

两个client代码都是一样的,依赖包都是一样的,rac的连接信息都是一样的。client所在的linux版本都是一样的。(除了ip,子网等网络配置,都是一样的。)一个client连接正常,一个却抛异常:

java.sql.SQLException: SO Exception was generated
        at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:412)
        at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:531)
        at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:221)
        at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
        at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:503)
        at java.sql.DriverManager.getConnection(DriverManager.java:582)
        at java.sql.DriverManager.getConnection(DriverManager.java:154)
        at com.neusoft.aclome.monitor.oracle.util.OracleUtil.generateOracleConn(OracleUtil.java:223)
        at com.neusoft.aclome.monitor.oracleRAC.OracleRACController.checkConnection(OracleRACController.java:39)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at com.neusoft.aclome.agent.framework.PluginExecuter.exexuteMethod(PluginExecuter.java:217)
        at com.neusoft.aclome.agent.framework.PluginExecuter.exexuteMethod(PluginExecuter.java:151)
        at com.neusoft.aclome.agent.framework.PluginExecuter.doControl(PluginExecuter.java:126)
        at com.neusoft.aclome.agent.framework.biz.boss.impl.ControllerBossImpl.control(ControllerBossImpl.java:69)
        at com.neusoft.aclome.agent.task.handler.DefaultTaskHandler.call(DefaultTaskHandler.java:60)
        at com.neusoft.aclome.agent.task.handler.DefaultTaskHandler.call(DefaultTaskHandler.java:30)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)
Caused by: oracle.net.ns.NetException: SO Exception was generated
        at oracle.net.resolver.AddrResolution.resolveAddrTree(AddrResolution.java:617)
        at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:411)
        at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:672)
        at oracle.net.ns.NSProtocol.connect(NSProtocol.java:237)
        at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1042)
        at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:301)


连接代码:

String tnsname = "(DESCRIPTION ="
				+ "(ADDRESS = (PROTOCOL = TCP)(HOST = 10.4.55.91)(PORT = 1521))"
				+ "(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl))"
				+ ")";	
String url = "jdbc:oracle:thin:@" + tnsname ;
		Class.forName(JDBC_ORACLE_DRIVER);
		DriverManager.setLoginTimeout(DEFAULT_TIME_OUT);

		if (user.equalsIgnoreCase("sys")) {
			Properties conProps = new Properties();
			conProps.put("user", user);
			conProps.put("password", pass);
			conProps.put("defaultRowPrefetch", "15");
			conProps.put("internal_logon", "sysdba");
			return DriverManager.getConnection(url, conProps);
		} else {
			return DriverManager.getConnection(url, user, pass);
		}



登陆用户为:sys

有没有人知道为什么?求各位大神指点。谢谢了。
加载中
0
tinshen
tinshen

把你的jdbc配置文件贴出来。

wangyunzhong
wangyunzhong
采用node的vip测试下,还是不行。不是连接配置的问题:一个client可以访问,一个连接不上。
tinshen
tinshen
回复 @wangyunzhong : VIp是为了节点是否宕机用的。 你配的应该是NODEiP.
wangyunzhong
wangyunzhong
回复 @tinshen : 这个是vip。我的集群使用10.4.55.91作为vip。集群下两个节点:10.4.55.71(node1 vip:10.4.55.76),10.4.55.78(node2 vip:10.4.55.86)。 我是看官网说的,才使用集群的vip。不知道生产情况下该使用什么ip,怎么配置连接。 谢谢了。
tinshen
tinshen
回复 @wangyunzhong : 10.4.55.91是vip主地址么? 集群要放的是vipnode节点的地址。vip地址是为了验证该集群是否有问题而配置的。简单说它是打酱油的。
wangyunzhong
wangyunzhong
已经添加了连接代码。 谢谢了。
0
tinshen
tinshen

jdbc:oracle:thin:@(description=(address_list=(address=(host=node1ip)(protocol=tcp)(port=1521))(address=(host=node2ip)(protocol=tcp) (port=1521))(load_balance=on)(failover=yes))(connect_data=(service_name= racdb.cn)(failover_mode=(type=select)(method=basic)(retries=20)(delay=20))))
这个是我的ORACLE RAC jdbc配置。

wangyunzhong
wangyunzhong
仿照你的连接测试了,还是不行。应该不是连接配置的问题。
0
tinshen
tinshen
node1ip,node1ip都是nodevip地址。
返回顶部
顶部