Oracle RAC 11g 通过SCAN连接遇到ORA-12170错误的解决办法
最近使用VirtualBox搭建了RAC测试环境,一共创建了4个虚拟机,如下: vm1: RouterOS,路由系统,虚拟机访问外网的网关,同时支持不同内网中的虚拟机互访 网卡1,桥接网卡,连接宿主机网卡,192.168.31.88/24 网卡2,内部网络,连接LAN01,用于RAC Public网络,172.16.1.254/24 网卡3,连接LAN02,用于RAC Private网络,10.0.0.254/24 vm2:Openfiler,iSCSI共享存储服务 网卡1,172.16.1.99/24 网卡2,10.0.0.99/24 vm3: OEL-6.8_x86-64,安装Oracle RAC 节点1 网卡1,172.16.1.1/24 网卡2,10.0.0.1/24 vm4: OEL-6.8_x86-64,安装Oracle RAC 节点2 网卡1,172.16.1.2/24 网卡2,10.0.0.2/24 节点1 VIP 172.16.1.11 节点2 VIP 172.16.1.22 SCAN IP 172.16.1.100 与RouterOS网卡1桥接的宿主机网卡IP地址为192.168.31.40 RAC测试环境部署完成后,检查各项服务和监听均运行正常,之后进行客户端连接测试: 1. 在RouterOS中添加DST-NAT条目 192.168.31.88:15211 -->172.16.1.11:1521 192.168.31.88:15212 -->172.16.1.22:1521 192.168.31.88:15210--> 172.16.1.100:1521 2. 在宿主机上安装了PL/SQL程序,修改tnsnames.ora文件,通过Connect TimeConnection Failover方式连接: mydb = (DESCRIPTION= (FAILOVER=ON) (ADDRESS_LIST= (LOAD_BALANCE=OFF) (ADDRESS=(PROTOCOL=TCP)(HOST=192.168.31.88)(PORT=15211)) (ADDRESS=(PROTOCOL=TCP)(HOST=192.168.31.88)(PORT=15212)) ) (CONNECT_DATA=(SERVICE_NAME=mydb)) ) 连接成功。 修改tnsnames.ora,通过Runtime Connection Failover方式连接: mydb-scan = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST=192.168.31.88)(PORT=15210)) ) (CONNECT_DATA = (SERVICE_NAME = mydb) (FAILOVER_MODE = (TYPE = session) (METHOD = basic) (RETRIES = 180) (DELAY = 5) ) ) ) 无论是SQL*PLUS还是PL/SQL均连接失败,提示信息为:连接超时,ORA-12170,Google了半天,几乎把所有解决方法都试了一遍,仍然没找到问题所在,看来很可能是当前测试环境造成的,没办法先开个Server2008的虚拟机(Oracle服务器,IP地址172.16.1.30),由于这台服务器属于内部网络LAN01,不通过RouterOS进行地址映射,需要对tnsnames.ora稍做改动: mydb-scan = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST=172.16.1.100)(PORT=1521)) ) (CONNECT_DATA = (SERVICE_NAME = mydb) (FAILOVER_MODE = (TYPE = session) (METHOD = basic) (RETRIES = 180) (DELAY = 5) ) ) ) 使用SQL*PLUS连接成功,看来十有八九和网络环境有关了。 使用命令tcpdump –nn port 1521 看了下连接成功的数据包,发现前几个数据包是172.16.1.30和172.16.1.100收发的,第14个包是客户端(172.16.1.30)向172.16.1.11发送的SYN包,之后的数据包都是这两个地址在传输。 同样命令查看了下通过宿主机连接,并且失败情况下传输的数据,发现前13个数据包是宿主机和172.16.1.100收发的,之后再无捕获数据包,仔细想了下,如果存在第14个数据包,应该是宿主机向172.16.1.11或172.16.1.22发送的SYN包,但宿主机上并没有到172.16.1.0/24这个网络的路由存在,肯定会发送失败了,使用以下命令在宿主机上添加路由即可: C:&;route –p add 172.16.1.0 mask 255.255.255.0 192.168.31.88 添加后再次连接成功。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 使用Swift 3进行JSONSerialization
- c# – Add-Migration显示错误EntityFrameworkCore.Design未
- react中关于create-react-app2里css相关配置
- 解决Binary XML file line #6: : Error inflating class <
- 域对象,工厂和存储库之间的依赖关系
- 正则表达式 – 通过两个文本文件中的特定模式获取差异文件
- objective-c – NSMutableDictionary将多个对象添加到一个键
- ruby-on-rails – rspec,factory_girl和datamapper的Spork和
- 不同设备的单一类别中的iOS不同字体大小
- ruby – 获取构造函数的参数名称