程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> 【Oracle】RACfailover切換之TAF(二)

【Oracle】RACfailover切換之TAF(二)

編輯:Oracle教程

上次介紹了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:備用實例名
-p:TAF策略,有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_load和data_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配置

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved