Oracle RAC客户端tnsnames.ora相关配置及测试

时间:2023-03-08 16:29:46

1.Oracle RAC服务端/etc/hosts部分内容如下

2.查看服务端的local_listener和remote_listener参数

3.客户端tnsnames.ora配置参考

4.测试failover功能

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>


<h1 id="3">3. 客户端tnsnames.ora配置参考</h1>
<h2 id="3.1">3.1 10g的版本,监听配置方法如下</h2>
需要指定每一个节点的vip

jyzhao =

(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 = jyzhao)

(FAILOVER_MODE =

(TYPE = session)

(METHOD = basic)

(RETRIES = 180)

(DELAY = 5)

)

)

)

<h2 id="3.2">3.2 11g的版本,监听配置方法如下</h2>
11g引进scanIP的新特性,即只需要指定scanIP,不再需要指定vip,对于RAC增加节点不需要再重新配置所有客户端的tnsnames.ora。
当然不用scanIP,还用之前的vip也是可以的。

jyzhao_scan =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.7.120)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = jyzhao)

(FAILOVER_MODE =

(TYPE = session)

(METHOD = basic)

(RETRIES = 180)

(DELAY = 5)

)

)

)

<h2 id="3.3">3.3 业务分割,连接到实例1的业务</h2>
当实例1正常时,固定连接到实例1:

jyzhao1 =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.7.113)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = jyzhao)

)

)

<h2 id="3.4">3.4 业务分割,连接到实例2的业务</h2>
当实例2正常时,固定连接到实例2:

jyzhao2 =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.7.115)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = jyzhao)

)

)


<h1 id="4">4. 测试failover功能</h1>
如下面的测试用例:
确定开始随机连接到的是实例2,然后杀掉实例2,
此时查询`select instance_name, status from v$instance;`,会报错ORA-25408,
再次查询,发现已经自动failover到实例1。

C:\Documents and Settings\Administrator>sqlplus jingyu/jingyu@jyzhao

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


jyzhao2 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


jyzhao1 OPEN