【Oracle】RAC failover切换之TAF(二)

上次介绍了client-side TAF配置,但是client-side TAF配置也存在它的局限性,就是需要在每台客户端tnsnames.ora上都要进行配置,如果配置上有修改就要修改每一台客户端上的配置,十分麻烦。而server-side TAF设置在服务器端设置,随时修改即可生效,而不用修改客户端设置。

server-side TAF设置中多出了一个概念那就是instance_role

PREFERRED:首选实例,连接这个服务的时候会优先连接PREFERRED的实例,当然PREFERRED可以不止有一个。

AVAILABLE:备选实例,当连接PREFERRED中所有的实例都失败时会连接AVILABLE中的实例。

 

在客户端设置Service的基本命令是:

srvctl add service 

后边有这几个参数设置

-s:服务名
-r:首选实例名
-a:备用实例名
-pTAF策略,有none,basic,preconnect三个值可选

 

同时Server-Side TAF设置不止能用来failover切换也能用于业务分割,把数据库的实例分成几个服务,不同的业务切割之后连接到不同的服务上,减少节点间的通信,消除cache fusion带来的负面影响。

下面我们以业务分割的使用来示范Server-Side TAF的配置。

 

 

首先我们来查看当前数据库所拥有的实例:

SYS@RACDB1> select instance_name from gv$instance order by 1;

 

INSTANCE_NAME

----------------

RACDB1

RACDB2

RACDB3

RACDB4

下面我们通过设置两个服务data_loaddata_query,通过两个服务来分开处理数据加载和数据查询的任务。

[oracle@rac1 ~]$ srvctl add service -d RACDB-s data_load -r "RACDB1,RACDB2"

[oracle@rac1 ~]$ srvctl add service -d RACDB -s data_query -r "RACDB3,RACDB3"

此时服务配置完毕,启动两个服务

[oracle@rac1 ~]$ srvctl start service -d RACDB -s data_load

[oracle@rac1 ~]$ srvctl start service -d RACDB -s data_query

查看服务运行情况:

[oracle@rac1 ~]$ crs_stat-t

Name              Type               Target    State    Host        

----------------   ---------------    -------- --------  -------

...     

ora....load.cs  application      ONLINE   ONLINE     rac1          

ora....DB1.srv  application      ONLINE   ONLINE     rac1          

ora....DB2.srv   application    ONLINE   ONLINE       rac2        

ora....uery.cs   application      ONLINE   ONLINE     rac3          

ora....DB3.srv  application      ONLINE   ONLINE     rac3          

ora....DB4.srv  application      ONLINE   ONLINE     rac4         

...   

可以看到此时服务已经完全运行起来了,此时将不同的业务分别连接到不同的服务上即可。

 

下面附上一些其他会用到的命令:

设置服务开机启动

[oracle@rac1 ~]srvctl enable service -d RACDB -s data_load

删除该服务

[oracle@rac1 ~] srvctl stop service -d RACDB -s data_load  停止服务

[oracle@rac1 ~] srvctl disable service -d RACDB -s data_load  禁止开机启动

[oracle@rac1 ~] srvctl remove service -d RACDB -s data_load  删除服务

这时候在OCR中的内容已经删除了,但数据字典还保留着service的内容,继续清除数据字典

SYS@RACDB1> begin

  2  dbms_service.delete_service(service_name=>'data_load');

  3  end;

  4  /

PL/SQL procedure successfully completed.

然后show parameter看一下

SYS@RACDB1> show parameter service

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

service_names                        string      RACDB 

 

 

最后附上client-side TAF配置的链接:

Client-Side TAF配置

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值