Oracle RAC 11g 通过SCAN连接遇到ORA-12170错误的解决办法
来源:互联网 发布:软件开发毕业设计题目 编辑:程序博客网 时间:2024/05/10 04:51
最近使用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, 内部网络, 连接LAN01, 172.16.1.99/24
网卡2, 内部网络, 连接LAN02, 10.0.0.99/24
vm3: OEL-6.8_x86-64, 安装Oracle RAC 节点1
网卡1, 内部网络, 连接LAN01, 172.16.1.1/24
网卡2, 内部网络, 连接LAN02, 10.0.0.1/24
vm4: OEL-6.8_x86-64, 安装Oracle RAC 节点2
网卡1, 内部网络, 连接LAN01, 172.16.1.2/24
网卡2, 内部网络, 连接LAN02, 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
添加后再次连接成功。
- Oracle RAC 11g 通过SCAN连接遇到ORA-12170错误的解决办法
- oracle 10G r2 RAC连接ORA-12545错误
- Oracle 11g RAC SCAN ip的原理及配置
- Oracle 11g RAC SCAN ip的原理及配置
- oracle 11g ORA-12514错误,我的解决办法
- Oracle 11g RAC SCAN basics
- Oracle 11g修改RAC SCAN IP
- 解决oracle客户端可以连接11g rac vip,但是不能连接scan ip问题
- oracle 客户端可以连接11g rac vip 但是不能连接scan ip问题
- 在虚拟机上安装 Oracle 11g RAC 过程中遇 SCAN Name 配置错误的处理办法
- Oracle 11gR2 RAC 使用scan IP无法连接数据库(ORA-12545)
- Oracle 11gR2 RAC 使用scan IP无法连接数据库(ORA-12545)
- Oracle 11g R2 RAC高可用连接特性 – SCAN详解
- 转 -- Oracle 11g R2 RAC高可用连接特性 – SCAN详解
- Oracle 11g R2 RAC高可用连接特性 – SCAN详解
- Oracle 11g R2 RAC高可用连接特性 – SCAN详解
- Oracle 11g R2 RAC高可用连接特性 – SCAN详解
- Oracle 11g R2 RAC高可用连接特性 – SCAN详解
- presto部署
- c++(15)处理类型--decltype类型指示符
- Linux Shell:Linux系统信息查看命令大全
- 21 导航书签一些总结
- Spring实现数据库读写分离
- Oracle RAC 11g 通过SCAN连接遇到ORA-12170错误的解决办法
- 2017百度前端开发
- Map集合,Queue集合
- HDU1698 Just a Hook(线段树成段替换)
- 修改系统状态栏颜色
- 对FreeStreamer的单例形式封装
- Android eclipse转studio的流程及问题
- Spark与Hive的交互
- 设计模式学习之代理模式(一)