欢迎您来到GIS动力

加入收藏 免费注册 用户登陆 帮助中心
首页 新闻动态 技术专栏 银杏树下 学习考研 软件下载 求职招聘 许愿瓶 节日祝福 用户中心 精彩推荐 资源搜索 地图
专栏导航: AO开发 | SO开发 | ArcGIS桌面 | 超图桌面 | 开发语言 | 数据库 | WebGIS | 银杏文学 | 研究生考题 | FreeMap 谈天说地
   您现在位于: 首页技术专栏数据库 → 正文
AIX下oracle10g rac 报ora-12545错误的解决方案
07-11-08 10:29:19 作者:半块点心 出处:本站原创
这几天安装oracle rac,数据库安装完毕,启动正常,监听启动正常.问题来了. 
一、问题描述  

操作系统AIX  5L Version 5300-05 64bit,oracle 10g R2 10.2.0.3 for AIX 5L Based Systems (64-Bit) 
当客户端连过来时客户端有时能连通,有时却断开提示错误 
SQL> conn system/oracle@sddzyj 
已连接。 
SQL> conn system/oracle@sddzyj 
ERROR: 
ORA-12545: 因目标主机或对象不存在,连接失败 

警告: 您不再连接到 ORACLE。 
SQL> conn system/oracle@sddzyj 
已连接。 
SQL> conn system/oracle@sddzyj 
已连接。 
SQL> conn system/oracle@sddzyj 
ERROR: 
ORA-12545: 因目标主机或对象不存在,连接失败 

警告: 您不再连接到 ORACLE。 
SQL> 

客户端tns配置 
SDDZYJ =  
  (DESCRIPTION =  
    (ADDRESS_LIST =  
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.37.201.42)(PORT = 1521))  
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.37.201.43)(PORT = 1521))  
      (LOAD_BALANCE = yes)  
    )  
    (CONNECT_DATA =  
      (SERVICE_NAME = SDDZYJ)  
    )  
  )  
服务器端  
10.37.201.42 ibmsvr1_vip  
10.37.201.43 ibmsvr2_vip 是虚拟ip(vip)  
10.37.201.40 ibmsvr1  
10.37.201.41 ibmsvr2 是公网ip  
二、解决方案  

有人提议把客户端hosts文件中加入对两个服务名的名字解析,经测试的确能解决问题,但总觉得不是很好,维护上百台电脑的hosts文件是很困难的.  
下面的方法是我测试成功的.  
1, 服务器2节点群集 机器名为 ibmsvr1,ibmsvr2.  
2,在服务器端用system用户登录  
SQL> show parameter list 
NAME                                 TYPE        VALUE 
------------------------------------ ----------- ------------------------------ 
local_listener                       string      
remote_listener                      string      LISTENERS_SDDZYJ 


可以看到这两个参数,remote_listener为 LISTENERS_TEST 
3,在ibmsvr1,ibmsvr2上分别编辑服务器端tnsnames.ora (注意,是服务器端的) 
将下面部分 
LISTENERS_TEST = 
(ADDRESS_LIST = 
(ADDRESS = (PROTOCOL = TCP)(HOST = ibmsvr1_vip)(PORT = 1521)) 
(ADDRESS = (PROTOCOL = TCP)(HOST = ibmsvr2_vip)(PORT = 1521)) 

改为: 
LISTENERS_SDDZYJ = 
(ADDRESS_LIST = 
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.37.201.42)(PORT = 1521)) 
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.37.201.43)(PORT = 1521)) 

也就是将host主机名改为ip地址 
在ibmsvr1上增加以下部分  
local_listener_rac = 
  (ADDRESS_LIST = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.37.201.40)(PORT = 1521)) 
  ) 

在ibmsvr2上增加以下部分  
local_listener_rac = 
  (ADDRESS_LIST = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.37.201.41)(PORT = 1521)) 
  ) 


保存退出 

查看两个节点的 listener.ora文件,最好将里面的主机名都改为ip地址 
4,用system用户登录 

执行 
alter system set local_listener='local_listener_rac' scope=both; 

5 重启所有实例 所有监听. 
再从客户端连接 正常, 
每次连接用 show parameter instance_name查看实例名, 负载均衡已经生效. 
有人把remote_listener 参数置空 虽然连接正常但已经破坏了负载均衡.
(本文已被浏览 次)
发布人:admin
推荐给好友:发送给好友
上篇新闻:
下篇新闻:
相关评论
发表我的评论
  • 尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法;
  • 本站有权保留或删除您发表的任何评论内容;
  •   相关文章  
    利用vmware体验Oracle10g的ASM数据库
    oracle10gRAC的网络设置
    ORACLE10g初始化参数

    关于我们 友情链接 ┋ 与我在线 ┋ 管理 ┋ TOP
    网站当前版本:GisPower CMS V3.0
    『GIS 动力』- http://www.gispower.org/
    联系我们:webmaster#gispower.org
    Copyright (c) 2003-2007 GisPOwer.Org. All Rights Reserved.

                   滇ICP备05006901号