实验平台:vmware+RH4.5+oracle10.2.0.1.0. rac
连接字符串String url="jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.111)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.112)(PORT=1521))(LOAD_BALANCE=on))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=rac)))";
一、安装完rac后,oracle会自动配置remote_listener参数,而local_listener参数默认为空,如果不配置此参数,在客户端使用sqlplus 连接的时候会报错,其中tnsnames.ora中配置的地址为VIP,错误:ORA-12545: 因目标主机或对象不存在,连接失败。
解决方法:
设置local_listener参数为:
alter system set local_listener='(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.111)(PORT = 1521))' sid='rac1';
alter system set local_listener='(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.112)(PORT = 1521))' sid='rac2';
二、如果出现以下错误时
错误1:java.sql.SQLException: Io 异常: Connection refused(DESCRIPTION=(ERR=1153)(VSNNUM=169869568)(ERROR_STACK=(ERROR=(CODE=1153)(EMFI=4)(ARGS='(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.112)(PORT=1521))'))(ERROR=(CODE=305)(EMFI=1)))) 错误2:java.sql.SQLException: Io exception: The Network Adapter could not establish the connection导致以上错误出现的关键因素有四个,
1是VIP地址中是否含有不足三位数的现象
2是odjbc14.jar的版本是否与数据库版本一致
3local_listener是否设置
4连接字符串中是否含有(SERVER=DEDICATED)
以下是测试结果
if(版本一致){ //表示ojdbc14.jar与数据库服务器版本一致 if(local_listener!=''){ //表示对local_listener进行设置 if(server=dedicated){ //表示在连接字符串中存在此配置项 if(VIP地址不补0){ //表示连接字符串的IP地址没有补0,如:192.168.1.111 连接500次,成功500次.节点1共150次,节点2共350次。 } else{ //VIP补0,如192.168.001.111 连接500次,成功500次.节点1共244次,节点2共256次。 } } else{ //连接字符串没有(server=dedicated) if(VIP地址不补0){ //表示连接字符串的IP地址没有补0,如:192.168.1.111 连接500次,成功500次.节点1共322次,节点2共178次。 } else{ //VIP补0,如192.168.001.111 连接500次,成功500次.节点1共256次,节点2共254次。 } } } else{ //对local_listener没有设置,即为空 if(server=dedicated){ //表示在连接字符串中存在此配置项 if(VIP地址不补0){ //表示连接字符串的IP地址没有补0,如:192.168.1.111 连接500次,成功229次,失败271次,产生错误2.节点1共48次,节点2共181次。 } else{ //VIP补0,如192.168.001.111 连接500次,成功500次.节点1共243次,节点2共257次。 } } else{ //连接字符串没有(server=dedicated) if(VIP地址不补0){ //表示连接字符串的IP地址没有补0,如:192.168.1.111 连接500次,成功500次.节点1共260次,节点2共240次。 } else{ //VIP补0,如192.168.001.111 连接500次,成功500次.节点1共261次,节点2共239次。 } } } else{ //版本不一致时 if(local_listener=='')&&(VIP不补0)&&(server=DEDICATED){ 连接500次,成功214次,失败286次,产生错误2.节点1共214次,节点2共0次。 } else if(local_listener=='')&&(VIP不补0)&&(连接字符中不含server=DEDICATED){ 连接500次,成功236次,失败264次,产生错误2.节点1共196次,节点2共40次。 } else if(local_listener设置)&&(VIP不补0)&&(连接字符中不含server=DEDICATED){ 连接500次,成功257次,失败243次,产生错误1.节点1共244次,节点2共13次。 } else if(local_listener设置)&&(VIP不补0)&&(server=DEDICATED){ 连接500次,成功247次,失败253次,产生错误1.节点1共0次,节点2共247次。 } else if(local_listener=='')&&(VIP补0)&&(连接字符中不含server=DEDICATED){ 连接500次,成功500次,节点1共260次,节点2共240次。 } else if(local_listener=='')&&(VIP补0)&&(server=DEDICATED){ 连接500次,成功500次,节点1共247次,节点2共253次。 } else if(local_listener设置)&&(VIP补0)&&(server=DEDICATED){ 连接500次,成功500次,节点1共212次,节点2共288次。 } else if(local_listener设置)&&(VIP补0)&&(连接字符中不含server=DEDICATED){ 连接500次,成功500次,节点1共243次,节点2共257次。 } }