oracleRACclient-sideTAF&&server-sideTAF(二)

2014-11-24 12:53:24 · 作者: · 浏览: 4
S') 2* INST_ID USERNAME FAILOVER_TYPE FAILOVER_M FAI ---------- ------------------------------ ------------- ---------- --- 2 SYS NONE NONE NO 2 SYS NONE NONE NO 2 SYS NONE NONE NO 2 SYS NONE NONE NO 2 SYS NONE NONE NO 2 SYS NONE NONE NO 1 SYS NONE NONE NO 1 SYS NONE NONE NO 1 SYS NONE NONE NO 1 SYSTEM SELECT BASIC NO 10 rows selected. SQL>


可知目前system用户已经具备failover功能。
注意:在配置client-side TAF的时候尤其注意参数的设置位置,否则无法实现failover。

其实在11G中scan功能也实现了负载均衡的作用,它是从dns解析中的三个地址轮询负载的分配给scan listener进而采去和本地listener进行通信。
另外实现TAF的方式为server-side TAF。说白了,就是通过服务端设置service来实现,先比client-side TAF有很多简便的方式。
eg:
增加服务名rac1和rac2:

oracle@rac-two ~]$ srvctl add service -d Rac -s rac1 -r Rac1 -a Rac2 -P basic -y automatic -e select -m basic -z 5 -w 120
[oracle@rac-two ~]$ srvctl add service -d Rac -s rac2 -r Rac2 -a Rac1 -P basic -y automatic -e select -m basic -z 5 -w 120


查看服务名状态

[oracle@rac-two ~]$ srvctl status service -d RAc
Service rac1 is not running.
Service rac2 is not running.


启动服务资源:

[oracle@rac-two ~]$ srvctl start service -d Rac
[oracle@rac-two ~]$ srvctl status service -d Rac
Service rac1 is running on instance(s) Rac1
Service rac2 is running on instance(s) Rac2


查看配置信息:

[oracle@rac-two ~]$ srvctl config service -d Rac
Service name: rac1
Service is enabled
Server pool: Rac_rac1
Cardinality: 1
Disconnect: false
Service role: PRIMARY
Management policy: AUTOMATIC
DTP transaction: false
AQ HA notifications: false
Failover type: SELECT
Failover method: BASIC
TAF failover retries: 5
TAF failover delay: 120
Connection Load Balancing Goal: LONG
Runtime Load Balancing Goal: NONE
TAF policy specification: BASIC
Edition: 
Preferred instances: Rac1
Available instances: Rac2
Service name: rac2
Service is enabled
Server pool: Rac_rac2
Cardinality: 1
Disconnect: false
Service role: PRIMARY
Management policy: AUTOMATIC
DTP transaction: false
AQ HA notifications: false
Failover type: SELECT
Failover method: BASIC
TAF failover retries: 5
TAF failover delay: 120
Connection Load Balancing Goal: LONG
Runtime Load Balancing Goal: NONE
TAF policy specification: BASIC
Edition: 
Preferred instances: Rac2
Available instances: Rac1
[oracle@rac-two ~]$ 


注意这个时候,实例Rac1已经注册了rac1服务,且主要实例为Rac1备用实例为Rac2,实例Rac2注册了rac2服务,且主要实例为Rac2备用实例为Rac1;
本地监听只会注册本地服务名,scan监听将注册所有的监听服务名。
验证:
首先明确客户端配置:

RAC =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = rac-two-cluster-scan.grid.example.com)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = Rac2)
    )
  )

登录数据库查看会话信息如下:

会话一使用system用户登录数据库
用户没有登录之前状态:

[oracle@rac-one ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Wed Mar 19 20:59:56 2014

Copyright (c) 1982, 2013, 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> col username for a20
SQL> set linesize 200
SQL> select inst_id,username,failover_type,failover_method,failed_over from gv$session where username='SYSTEM';

no rows selected


登录之后状态:

SQL> r
  1* select inst_id,username,failover_type,failover_method,failed_over from gv$session where username='SYSTEM'

   INST_ID USERNAME             FAILOVER_TYPE FAILOVER_M FAI
---------- -------------------- ------------- ---------- ---
         2 SYSTEM               SELECT        BASIC      NO
         2 SYSTEM               SELECT        BASIC      NO