配置Server-Side TAF
Server-side TAF相比起client-side TAF、TAF的好处就是当客户端数量较多时,不必每次微小的参数修改都要逐个客户端进行修改。Server-side TAF通过结合service,在数据库里保存FAIL_MODE的配置,把所有的TAF配置保存在数据字典中,从而省去了客户端TNS文件配置。
Server-side TAF和TAF相比多了一个instance Role的概念。所谓“实例角色”,就是当有多个实例节点参与一个serveice时,可以配置哪个instance为用户提供服务。用户共有两种角色可选。
PREFERRED:首选实例,会优先选择拥有逐个角色的实例提供服务。
AVAILABLE:后备实例,用户连接会优先连接PERFERRED的instance,当出现PERFERRED不可用时,会被转移到AVAILABEL的instance上。
1.执行在其中一个节点执行DBCA,当出现欢迎界面时,由于我们是RAC,所以我们要选择“ORACLE Real Application Clusters database”,然后NEXT。
2.进入第二个界面,选择“services management”,NEXT。
3.第三个界面的出现会列出已有的数据库名列表,选择现有的“DEVDB”,然后NEXT。
4.在service配置界面中,单击“add”创建新的service,并输入service的名字,然后配置TAF选项。其中instance 列表框是用来定义实例角色,这里选择devdb1作为“perferred”首选实例,devdb2作为“AVAILABLE”后备实例(我选择两个节点 都是“perferred”首选实例,因为所有连接都连接到devdb1,这可能实现不了负责均衡,猜测猜测。。。)。TAF policy:选择“basic”(在感知到节点故障时,才转移到其他节点),然后“finish”,完成。
查看是否成功注册到CRS resource当中
rac1-> crs_stat -t
Name Type Target State Host
------------------------------------------------------------
ora....ATAF.cs application ONLINE ONLINE rac2
ora....db1.srv application ONLINE ONLINE rac1
ora....db2.srv application ONLINE ONLINE rac2
ora.devdb.db application ONLINE ONLINE rac2
ora....b1.inst application ONLINE ONLINE rac1
ora....b2.inst application ONLINE ONLINE rac2
ora....SM1.asm application ONLINE ONLINE rac1
ora.rac1.gsd application ONLINE ONLINE rac1
ora.rac1.ons application ONLINE ONLINE rac1
ora.rac1.vip application ONLINE ONLINE rac1
ora....SM2.asm application ONLINE ONLINE rac2
ora.rac2.gsd application ONLINE ONLINE rac2
ora.rac2.ons application ONLINE ONLINE rac2
ora.rac2.vip application ONLINE ONLINE rac2
rac1->
配置这个服务自动启动
rac1-> srvctl enable service -d devdb -s HATAF
PRKP-1018 : Service HATAF already enabled. # 我的已经自动启动了
查看初始化参数
这个服务已经自动添加到初始化参数当中。
SQL> show parameter service
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
service_names string devdb_rac, HATAF
确认生效
rac1-> srvctl config service -d devdb -s HATAF -a
HATAF PREF: devdb2 devdb1 AVAIL: TAF: basic
删除
rac1-> srvctl stop service -d devdb -s HATAF
rac1-> srvctl disable service -d devdb -s HATAF
rac1-> srvctl remove service -d devdb -s HATAF
HATAF PREF: devdb2 devdb1 AVAIL:
Service HATAF is disabled.
Remove service HATAF from the database devdb? (y/[n]) y
在OCR中的内容已经删除了,但数据字典还保留着service的内容,继续清楚数据字典
SQL> begin
2 dbms_service.delete_service(service_name=>'HATAF');
3 end;
4 /
PL/SQL procedure successfully completed.
执行 搞定~
SQL> show parameter service
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
service_names string devdb_rac