ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle 10g RAC中TAF方針的建立

oracle 10g RAC中TAF方針的建立

原创 Linux操作系统 作者:bin_huhj 时间:2019-04-14 09:33:05 0 删除 编辑

TAF为负载均衡和故障切换提供了所有必需的配置参数。

TAF除了用在RAC中﹐還可以為physical standby數據庫提供自動故障切換。

這里主要介紹oracle10g RAC中TAF方針的服務的建立﹐以及測試TAF。


一﹑建立具有正確TAF方針的服務的方法有三種﹕

1.通過dbca建立服務

Screen 'Welcome':

select 'Oracle Real Application Clusters database'

Screen 'Step 1 of 3: Operations':

select 'Services Management'

Screen 'Step 2 of 3: List of cluster databases':

In the list of databases select the database for which you want to create
the TAF service (RACDB in this case).

Screen'Step 3 of 3: Database Services'

click 'Add'
Enter the service name that you wish to create, please use a service name
that is different from the database name. In this example 'TAFTEST'.

On the right hand side under 'Details for '
click 'Preferred' for all required instances (RACDB1 & RACDB2.

At the bottom under 'TAF Policy' select 'Basic'
and then click 'Finish'.

2.通過SRVCTL建立服務

如果該服務(不正確)已經存在﹐需要先stop然后delete它。

srvctl stop service -d RACDB -s TAFTEST
srvctl remove service -d RACDB -s TAFTEST

現在可以使用正確的TAF方針重建它

srvctl add service -d RACDB -s TAFTEST -r "RACDB1,RACDB2" -P BASIC

3.使用DBMS_SERVICE包建立服務

如果一個服務已經存在﹐在重建它前需要把它刪除。

execute DBMS_SERVICE.DELETE_SERVICE('TAFTEST');

begin
DBMS_SERVICE.CREATE_SERVICE(
service_name=>'TAFTEST',
network_name=>'TAFTEST',
failover_method=>DBMS_SERVICE.FAILOVER_METHOD_BASIC,
failover_type=>DBMS_SERVICE.FAILOVER_TYPE_SELECT,
failover_retries=>30,
failover_delay=>5
);
end;
/

不管以上面三種方式中的何種方式建立﹐最終我們都可以從tnsnames.ora中看到類似下面設置(可以將下面設置直接拷貝到oracle客戶端)﹕

VMRACTEST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = vmrac1-vip.localdomain)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = vmrac2-vip.localdomain)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = vmractest.yyhj.com.cn)
(FAILOVER_MODE =
(TYPE = SELECT)
(METHOD = BASIC)
(RETRIES = 180)
(DELAY = 5)
)
)
)
可以通過'crs_stat'檢查TAF服務在所有節點上是否online﹕

[oracle@vmrac1 admin]$ crs_stat ora.vmrac.vmractest.vmrac1.srv
NAME=ora.vmrac.vmractest.vmrac1.srv
TYPE=application
TARGET=ONLINE
STATE=ONLINE on vmrac1

[oracle@vmrac1 admin]$ crs_stat ora.vmrac.vmractest.vmrac2.srv
NAME=ora.vmrac.vmractest.vmrac2.srv
TYPE=application
TARGET=ONLINE
STATE=ONLINE on vmrac2

另外﹐可以通過DBA_SERVICES視圖查看當前建立的服務。

二﹑TAF測試

SQL> conn system/system@vmractest
Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
Connected as system

SQL>
SQL> set linesize 100
SQL> col INST# format 99999
SQL> col INST_NAME format a10
SQL> col HOST format a20
SQL> col USERNAME format a10
SQL> col TYPE format a10
SQL> col METHOD format a10
SQL> col "FAILED OVER" format a11
SQL> select
2 INSTANCE_NUMBER INST#,INSTANCE_NAME INST_NAME,HOST_NAME HOST,
3 USERNAME, FAILOVER_TYPE TYPE, FAILOVER_METHOD METHOD,
4 FAILED_OVER "FAILED OVER"
5 from
6 V$SESSION a, V$INSTANCE b
7 where
8 USERNAME = (select SYS_CONTEXT ('USERENV', 'SESSION_USER') from DUAL)
9 and
10 SID = (select SYS_CONTEXT ('USERENV', 'SID') from DUAL)
11 ;

INST# INST_NAME HOST USERNAME TYPE METHOD FAILED OVER
----- ---------- -------------------- ---------- ---------- ---------- -----------
2 vmrac2 vmrac2 SYSTEM SELECT BASIC NO

登入到vmrac2主機上﹐shutdown實例vmrac2﹕

[oracle@vmrac2 admin]$ srvctl stop instance -d vmrac -i vmrac2

再回上面的sql*plus中﹐直接執行上面的查詢﹐發現并沒有返回ORA-03113錯誤﹐而是把會話切換到了vmrac1實例﹕

SQL> select
2 INSTANCE_NUMBER INST#,INSTANCE_NAME INST_NAME,HOST_NAME HOST,
3 USERNAME, FAILOVER_TYPE TYPE, FAILOVER_METHOD METHOD,
4 FAILED_OVER "FAILED OVER"
5 from
6 V$SESSION a, V$INSTANCE b
7 where
8 USERNAME = (select SYS_CONTEXT ('USERENV', 'SESSION_USER') from DUAL)
9 and
10 SID = (select SYS_CONTEXT ('USERENV', 'SID') from DUAL)
11 ;

INST# INST_NAME HOST USERNAME TYPE METHOD FAILED OVER
----- ---------- -------------------- ---------- ---------- ---------- -----------
1 vmrac1 vmrac1 SYSTEM SELECT BASIC NO

一般可以将当前连接的instance down下来,client端将不会断开,并自动切换到backup节点上。相反也会自动切换回来。

当然也有人提出用post_transaction的方式来测试TAF,其实这样有时是得不到预期结果的,原因在于Oracle连接到一个instance上后,此后它会优先尝试对该instance的连接,当你disconnect后,client端一有新的请求就会自动尝试对最近连接的instance进行连接,如果不成功才会尝试对backup instance进行连接。

關于TAF的一些概念以及一些限制﹐可以參考(Enabling Advanced Features of Oracle Net Services)﹕

http://download-west.oracle.com/docs/cd/B19306_01/network.102/b14212/advcfg.htm#sthref1275

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/33600/viewspace-266412/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2003-01-03

  • 博文量
    28
  • 访问量
    26257