今天和潘潘一起测RAC,结果出现了很神奇的事情
相同配置的几台机器,有的连接RAC正常,有几台确死活连接不上
郁闷了一个下午。
开始怀疑是操作系统版本和环境变量的事情,发现没有任何规律。
后来怀疑是驱动的问题,换了n个驱动,还是不行。
管理工具和测试小程序却都很争气的连接成功。
后来改用OCI连接,结果终于返回了一个错误编码ORA-12545。
原来是Oracle RAC服务端监听的问题。(命名是个大Bug,Oracle还不承认)
解决方法:修改监听参数
--RAC服务器1 ALTER SYSTEM SET LOCAL_LISTENER = '(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.120.81)(PORT = 1521))' SID = 'ractest1'; --RAC服务器2 ALTER SYSTEM SET LOCAL_LISTENER = '(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.120.82)(PORT = 1521))' SID = 'ractest2';
修改监听后,终于好了。
后面查到还有一种修改方式,
在RAC的每个节点上编辑$ORACLE_HOME/network/admin/tnsnames.ora,增加
local_listener_rac= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=tcp)(HOST=<vip>)(PORT=1521)) )
其中
然后,在rac的任意一个节点上修改数据库参数,设置local_listener为local_listener_rac
alter system set local_listener='local_listener_rac' scope=spfile;
重新启动各个节点上的数据库实例,应该就好了,这个没测过,呵呵。