1、AIX RAC 数据库环境IP
10.20.68.101 eam01
10.20.68.102 eam02
10.20.68.103 eam01-vip 虚拟节点
10.20.68.104 eam02-vip 虚拟节点
2、MAXIMO75 安装在10.20.68.101机器上
3、MAXIMO75 安装之后,应用服务连接数据库需要修改两个地方
3.1
C:\IBM\SMP\maximo\applications\maximo\properties\maximo.properties
---客户端 指向 虚拟IP mxe.db.url=jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.20.68.103)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=10.20.68.104)(PORT=1521))(LOAD_BALANCE=YES)(FAILOVER=YES))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=PROD)(FAILOVER_MODE=(TYPE=SELECT)(METHOD=BASIC)(retries=180)(delay=5)))) mxe.db.driver=oracle.jdbc.OracleDriver mxe.rmi.port=0 mxe.db.schemaowner=maxprod mxe.db.password=maximo mxe.db.user=maxprod mxe.registry.port=13400 mxe.name=MXServer |
3.2
C:\WINDOWS\system32\drivers\etc\hosts文件中 (数据库开发人员客户端连接RAC数据库,需要完善这一步,要不然会出现ORA-12545: 因目标主机或对象不存在,连接失败
)
127.0.0.1 localhost
10.20.68.101 eam01
10.20.68.102 eam02
10.20.68.103 eam01-vip
10.20.68.104 eam02-vip
---- RAC连接的问题ORA-12545 BEGIN - - - -- --
ORA-12545: 因目标主机或对象不存在问题解决 ,可以通过3.2 解决,也可以考虑在服务器端解决
http://yangtingkun.itpub.net/post/468/273645
接到RAC数据库的时候经常会出现ORA-12545错误,在METALINK上查询了一下,是Oracle的一个小bug。
在远端客户端连接RAC数据库时,通过统一的服务名连接时经常会出现ORA-12545错误。
SQL> CONN NDMAIN@TESTRAC输入口令: ******已连接。
SQL> CONN NDMAIN@TESTRAC输入口令: ******
ERROR:
ORA-12545: 因目标主机或对象不存在, 连接失败
警告:您不再连接到 ORACLE。
SQL> CONN NDMAIN@TESTRAC输入口令: ******已连接。
SQL> CONN NDMAIN@TESTRAC输入口令: ******已连接。
SQL> CONN NDMAIN@TESTRAC输入口令: ******
ERROR:
ORA-12545: 因目标主机或对象不存在, 连接失败
警告:您不再连接到 ORACLE。
本地数据库TNSNAMES的配置:
TESTRAC =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.198.224)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.198.225)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = testrac)
(FAILOVER_MODE =
(TYPE = SELECT)
(METHOD = BASIC)
(RETRIES = 180)
(DELAY = 5)
)
)
)
Oracle在文档Note:364855.1:RAC Connection Redirected To Wrong Host/IP ORA-12545中进行了相信的描述。
并给出了解决方法:修改数据库中的初始化参数LOCAL_LISTENER:
SQL> CONN SYS@TESTRAC1 AS SYSDBA输入口令: ****已连接。
SQL> ALTER SYSTEM
2 SET LOCAL_LISTENER = '(ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.198.224)(PORT = 1521))' -- 更改的是虚拟节点
3 SID = 'testrac1';
系统已更改。
SQL> CONN SYS@TESTRAC2 AS SYSDBA输入口令: ****已连接。
SQL> ALTER SYSTEM
2 SET LOCAL_LISTENER = '(ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.198.225)(PORT = 1521))' - - 更改的是虚拟节点
3 SID = 'testrac2';
系统已更改。
设置之后,再次尝试连接数据库:
SQL> CONN NDMAIN@TESTRAC输入口令: ******已连接。
SQL> CONN NDMAIN@TESTRAC输入口令: ******已连接。
SQL> CONN NDMAIN@TESTRAC输入口令: ******已连接。
SQL> CONN NDMAIN@TESTRAC输入口令: ******已连接。
SQL> CONN NDMAIN@TESTRAC输入口令: ******已连接。
SQL> CONN NDMAIN@TESTRAC输入口令: ******已连接。
SQL> CONN NDMAIN@TESTRAC输入口令: ******已连接。
SQL> CONN NDMAIN@TESTRAC输入口令: ******已连接。
SQL> CONN NDMAIN@TESTRAC输入口令: ******已连接。
SQL> CONN NDMAIN@TESTRAC输入口令: ******已连接。
SQL> CONN NDMAIN@TESTRAC输入口令: ******已连接。
SQL> CONN NDMAIN@TESTRAC输入口令: ******已连接。
修改之后,没有再次出现同样的错误。
不过Oracle没有认为这个是bug,只是认为是PROBLEM。
参考文档 http://www.ixdba.net/article/d1/1239.html AIX下oracle10g rac:ora-12545错误解决方案
---- RAC连接的问题ORA-12545 END- - - -- --
- - - - - - - - - -关于 oracle RAC的VIP和scan begin ---------------
oracle RAC的VIP和scan
我们都知道Oracle RAC中每个节点都有一个虚拟IP,简称VIP,与公网IP在同一个网段。
没有VIP时,Oracle客户端是靠“TCP/IP协议栈超时”来判断服务器故障。而TCP/IP协议栈是作为OS Kernel的一部分来实现,不同的OS有不同的阀值,用户获悉数据库异常的时间完全取决于OS Kernel的实现,虽然有些OS允许修改这个阀值,但是会对其它程序产生未知影响。因此,oracle RAC引入了VIP,从而避开对TCP协议栈超时的依赖。
VIP和IP最主要的不同之处在于:VIP是浮动的,而IP是固定的。在所有节点都正常运行时,每个节点的VIP会被分配到public NIC上;在linux下ifconfig查看,public网卡上是2个IP地址;如果一个节点宕机,这个节点的VIP会被转移到还在运行的节点上。也就是幸存的节点的public NIC这个网卡上,会有3个IP地址。
当一个节点宕机,这个节点真实IP就连接不上了,但是这个节点的虚拟IP是可以连接的,他会自动把客户端的连接请求转接给存活的节点。
在tnsname.ora文件里,指定Address列表,客户端会随机选择一个节点来连接数据库,而不是顺序选择的。
VIP特点:
1 VIP是在clusterware安装最后阶段,通过脚本VIPCA创建的;
2 VIP作为一个Nodeapps类型的CRS Resource注册到OCR中,并由CRS维护状态;
3 VIP会绑定到节点的public 网卡上;那么public网卡就有两个地址了;
4 当某个节点发生故障时,CRS会把故障节点的VIP转移到其他节点上;
5 每个节点的Listener会同时在public网卡的public IP和VIP两个地址上监听;
6 客户端的tnsname.ora一般会配置指向节点的VIP;
从上面第6条可以引出一个问题。如果增加一个节点,那么客户端的tnsname.ora需要加入新增节点的VIP。那么想象一下:多个客户端,增加多个节点,那么维护起来特别麻烦。因此到了Oracle11gR2,引入了一个scan的概念。
scan,single client access name。简单客户端连接名,这是一个唯一的名称,在整个公司网络内部唯一,并且在DNS中可以解析为三个ip地址,客户端连接的时候只需要知道这个名称,并连接即可, 每个SCAN VIP对应一个scan listener,cluster内部的service在每个scan listener上都有注册,scan listener接受客户端的请求,并foward到不同的Local listener中去,还是由local 的listener提供服务给客户端。
注意:scan不一定要resolve到三个ip,一个也够了。只不过为了防止scan单点故障而推荐3个。
- - - - - - - - - -关于 oracle RAC的VIP和scan end---------------
---local_listener参数的作用! begin -- - -
pmon只会动态注册port等于1521的监听,否则pmon不能动态注册listener,要想让pmon动态注册listener,需要设置local_listener参数。
http://warehouse.itpub.net/post/777/472788
---local_listener参数的作用! end-- - -
- - - - -local_listener 与 remote_listener 参数说明end- - - - -
--- AIX下oracle10g rac:ora-12545错误解决方案 begin ---
http://www.ixdba.net/article/d1/1239$2.html
一、问题描述
操作系统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
--- AIX下oracle10g rac:ora-12545错误解决方案 end---