1. Oracle RAC服务端/etc/hosts部分内容如下
#public ip
172.16.7.112? jyracdb1
172.16.7.114? jyracdb2
#virtual ip
172.16.7.113? jyracdb1-vip
172.16.7.115? jyracdb2-vip
#scan ip(11g RAC 新特性)
172.16.7.120 jyracdb-scan
2. 查看服务端的local_listener和remote_listener参数
2.1 节点1 Oracle用户登录sqlplus / as sysdba
SQL> show parameter listener
NAME? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TYPE? ? ? ? VALUE
------------------------------------ ----------- ------------------------------
listener_networks? ? ? ? ? ? ? ? ? ? string
local_listener? ? ? ? ? ? ? ? ? ? ? string? ? ? (ADDRESS=(PROTOCOL=TCP)(HOST=
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 172.16.7.113)(PORT=1521))
remote_listener? ? ? ? ? ? ? ? ? ? ? string? ? ? jyracdb-scan:1521
SQL>
2.2 节点2 Oracle用户登录sqlplus / as sysdba
SQL> show parameter listener
NAME? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TYPE? ? ? ? VALUE
------------------------------------ ----------- ------------------------------
listener_networks? ? ? ? ? ? ? ? ? ? string
local_listener? ? ? ? ? ? ? ? ? ? ? string? ? ? (ADDRESS=(PROTOCOL=TCP)(HOST=
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 172.16.7.115)(PORT=1521))
remote_listener? ? ? ? ? ? ? ? ? ? ? string? ? ? jyracdb-scan:1521
SQL>
3. 客户端tnsnames.ora配置参考
3.1 10g的版本,监听配置方法如下
需要指定每一个节点的vip
linuxidc =
? (DESCRIPTION =
? ? (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.7.113)(PORT = 1521))
? ? (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.7.115)(PORT = 1521))
? ? (LOAD_BALANCE = yes)
? ? (CONNECT_DATA =
? ? ? (SERVER = DEDICATED)
? ? ? (SERVICE_NAME = linuxidc)
? ? ? (FAILOVER_MODE =
? ? ? ? ? (TYPE = session)
? ? ? ? ? (METHOD = basic)
? ? ? ? ? (RETRIES = 180)
? ? ? ? ? (DELAY = 5)?
? ? ? )
? ? )
? )
3.2 11g的版本,监听配置方法如下
11g引进scanIP的新特性,即只需要指定scanIP,不再需要指定vip,对于RAC增加节点不需要再重新配置所有客户端的tnsnames.ora。
当然不用scanIP,还用之前的vip也是可以的。
linuxidc_scan =
?(DESCRIPTION =
? (ADDRESS_LIST =
? ? (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.7.120)(PORT = 1521))
? )
? (CONNECT_DATA =
? ? (SERVICE_NAME = linuxidc)
? ? (FAILOVER_MODE =
? ? ? ? ? (TYPE = session)
? ? ? ? ? (METHOD = basic)
? ? ? ? ? (RETRIES = 180)
? ? ? ? ? (DELAY = 5)?
? ? )
? )
?)
3.3 业务分割,连接到实例1的业务
当实例1正常时,固定连接到实例1:
linuxidc1 =
? (DESCRIPTION =
? ? (ADDRESS_LIST =
? ? ? (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.7.113)(PORT = 1521))
? ? )
? ? (CONNECT_DATA =
? ? ? (SERVICE_NAME = linuxidc)
? ? )
? )
3.4 业务分割,连接到实例2的业务
当实例2正常时,固定连接到实例2:
linuxidc2 =
? (DESCRIPTION =
? ? (ADDRESS_LIST =
? ? ? (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.7.115)(PORT = 1521))
? ? )
? ? (CONNECT_DATA =
? ? ? (SERVICE_NAME = linuxidc)
? ? )
? )
4. 测试failover功能
如下面的测试用例:
确定开始随机连接到的是实例2,然后杀掉实例2,
此时查询select instance_name, status from v$instance;,会报错ORA-25408,
再次查询,发现已经自动failover到实例1。
C:\Documents and Settings\Administrator>sqlplus jingyu/jingyu@linuxidc
SQL*Plus: Release 11.2.0.1.0 Production on Tue Jul 28 11:04:13 2015
Copyright (c) 1982, 2010, Oracle.? All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management,
OLAP,
Data Mining and Real Application Testing options
SQL> select instance_name, status from v$instance;
INSTANCE_NAME? ? STATUS
---------------- ------------
linuxidc2? ? ? ? ? OPEN
SQL> select instance_name, status from v$instance;
select instance_name, status from v$instance
*
ERROR at line 1:
ORA-25408: can not safely replay call
SQL> select instance_name, status from v$instance;
INSTANCE_NAME? ? STATUS
---------------- ------------
linuxidc1? ? ? ? ? OPEN