亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

oracle11g dg broker配置服務的高可用例子分析

發布時間:2021-11-09 10:43:39 來源:億速云 閱讀:204 作者:iii 欄目:關系型數據庫

這篇文章主要介紹“oracle11g dg broker配置服務的高可用例子分析”,在日常操作中,相信很多人在oracle11g dg broker配置服務的高可用例子分析問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”oracle11g dg broker配置服務的高可用例子分析”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

前提:

主庫:10.9.21.178 db_name :db2

dg庫:10.9.21.179 db_name :db1

一:oracle DG 服務的自動故障切換操作整體步驟:

1.配置先創建服務dbha

2.創建觸發器 自動在主庫啟動hbha服務

3.在primary庫上設置service的TAF功能

4.修改程序 中的 url,實現服務的自動切換

二:解釋幾個概念

1.TAF(Transparent Application Failover)即透明應用程序故障轉移技術。當初始化連接出現問題無法連接時,該功能可以保證應用程序重新連接到可用服務。在重新連接過程中,之前的活動事務將會被回滾,但在“具體條件”下TAF可以保證SELECT語句不被終止。

TAF的特性:

1:TAF是ORACLE客戶端提供的一項特性,使用TAF,對客戶端的環境有一定的要求,比如JAVA的JDBC驅動、Oracle客戶端的版本等(8i開始支持TAF);

2:大致上TAF可以分為2種,連接時的TAF和會話建立后TAF;

3:TAF本身與是否RAC環境無關,但一般都用在RAC環境,最小程度的減少最應用的影響,單實例環境下也可以使用TAF,這樣使用PL/SQL developer連接數據庫,即使數據庫實例重啟,也不需要重新連接;

4:TAF配置可以在客戶端也可以在服務器端,也就是在連接數據庫的時候,比如程序url添加,

或者tnsname.ora中配置FAILOVER_MODE=(TYPE = SELECT)(METHOD = BASIC)(RETIRES = 180)(DELAY = 15))),這就是客戶端的配置,那么服務端配置的話就是在服務端修改每個服務的屬性!

begin

dbms_service.modify_service

('dbha',

FAILOVER_METHOD=>'BASIC',

FAILOVER_TYPE=>'SELECT',

FAILOVER_RETRIES=>15,

FAILOVER_DELAY=>5);

end;

/

5:配置listener.ora文件的GLOBAL_DBNAME參數后將會禁用TAF;

6:oracle TAF特性和scan ip failover的區別是,scan ip連接的話如果scan ip所在的節點故障,

那么該連接就斷開了,如果程序中沒有自動重連機制,或者程序連接池中的timeout值還沒有

到時間,那么你就必須重啟服務以便于重連數據庫,但是TAF的話不會讓程序報錯,只是會回滾

沒有提交的事務,自動重連另一個節點,并且FAILOVER_TYPE=>'SELECT'這種方式下select是不會

停的,繼續在另一個節點查出結果!

三:具體流程如下:

3.1在主庫添加并啟動服務,注意這個服務是要給程序中配置URL使用的!

先添加,然后啟動該服務,如果不啟動,那么show parameter service_name 看不到,啟動后service_name參數中就出現了新的服務,并且pmon進程自動完成監聽注冊上這個服務,并且重啟數據庫后添加的服務就消失了,失效了!

添加服務的程序包如下:

DBMS_SERVICE.CREATE_SERVICE(

service_name IN VARCHAR2,

network_name IN VARCHAR2,

goal IN NUMBER DEFAULT NULL,

dtp IN BOOLEAN DEFAULT NULL,

aq_ha_notifications IN BOOLEAN DEFAULT NULL,

failover_method IN VARCHAR2 DEFAULT NULL,

failover_type IN VARCHAR2 DEFAULT NULL,

failover_retries IN NUMBER DEFAULT NULL,

failover_delay IN NUMBER DEFAULT NULL,

clb_goal IN NUMBER DEFAULT NULL,

edition IN VARCHAR2 DEFAULT NULL);

--The network name of the service as used in SQLNet connect descriptors for client connections. This is limited to the NET

具體執行:其中第一個dbha是添加服務的名字,第二個是網絡服務名

1.添加服務

begin

dbms_service.create_service('dbha','dbha');

end;

/

2.啟動服務

begin

DBMS_SERVICE.START_SERVICE('dbha');

end;

/

這時候你去看監聽的狀態,你會發現剛添加的服務已經被pmon進程動態注冊了

oracle11g dg broker配置服務的高可用例子分析

3.停止服務:

begin

DBMS_SERVICE.STOP_SERVICE('dbha');

end;

/

4.刪除服務:

begin

DBMS_SERVICE.DELETE_SERVICE('dbha');

end;

/

3.2.在主庫添加觸發器,該觸發器的作用是判斷這個實例為主庫角色(read write)則啟動前邊添加的

服務(dbha)

create trigger tri_startservice after startup on database

declare

dg_role varchar(30);

begin

select database_role into dg_role from v$database;

if dg_role='PRIMARY' then

DBMS_SERVICE.START_SERVICE('dbha');

end if;

end;

/

3.3在主庫給前面添加的服務開啟TAF特性:

begin

dbms_service.modify_service

('dbha',

FAILOVER_METHOD=>'BASIC',

FAILOVER_TYPE=>'SELECT',

FAILOVER_RETRIES=>15,

FAILOVER_DELAY=>5);

end;

/

oracle11g dg broker配置服務的高可用例子分析

3.4.修改程序的URL

datasource.url=jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.9.21.178)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=10.9.21.179)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=dbha)(FAILOVER_MODE=(TYPE=SELECT)(METHOD = BASIC)(RETRIES = 180)(DELAY = 5)) ) )

如果是oracle rac 的話:

datasource.url=jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.216)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.217)(PORT = 1521))(LOAD_BALANCE = yes)(FAILOVER = yes)(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = cbl)(FAILOVER_MODE=(TYPE = SELECT)(METHOD = BASIC)(RETIRES = 180)(DELAY = 15))))

至此oracle 11g adg服務高可用配置完畢

總結:這時候可以測試下,當你主庫shutdown abort的時候,你的從庫自動轉換成主庫,然后觸發器啟動dbha服務,然后pmon自動注冊監聽,然后由于你配置了TAF特性,所以你的服務并不會報錯(ORA-0133:ORACLE initialization or shutdown in progress錯誤),而是自動的連接到新的主庫!

驗證過程:

1.客戶端配置tnsnames.ora

dbha=

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 10.9.21.178)(PORT = 1521))

(ADDRESS = (PROTOCOL = TCP)(HOST = 10.9.21.179)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = dbha)

)

)

2.使用dbha服務連接數據庫,

[oracle@beijing-fuli-hadoop-02 admin]$ sqlplus liuwenhe/liuwenhe@dbha

SQL*Plus: Release 11.2.0.4.0 Production on Sat Jul 13 17:11:55 2019

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, OLAP, Data Mining and Real Application Testing options

確認連接的是主庫db2

SQL> select instance_name from v$instance;

INSTANCE_NAME

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

db2

3.異常關閉db2

SQL> shu abort

ORACLE instance shut down.

4.在之前連接好的會話繼續查詢實例名字,不報錯但是卡著,因為主庫db2已經關閉了,而dg庫

db1還在自動轉換中,所以都無法提供服務(大概10秒),然后連接上了db1:

SQL> select instance_name from v$instance;

INSTANCE_NAME

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

db2

SQL> select instance_name from v$instance; -----卡了10秒大概之后顯示了db1

INSTANCE_NAME

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

db1

到此,關于“oracle11g dg broker配置服務的高可用例子分析”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

揭东县| 崇仁县| 贺兰县| 惠州市| 兴业县| 柘城县| 阜康市| 德格县| 河津市| 醴陵市| 绿春县| 南丰县| 陆河县| 璧山县| 盈江县| 雅江县| 加查县| 宜宾县| 麟游县| 岐山县| 城固县| 新津县| 思茅市| 大悟县| 五寨县| 大荔县| 沭阳县| 北宁市| 会东县| 安阳县| 沙河市| 榆林市| 丽水市| 苏尼特右旗| 兴义市| 县级市| 镇平县| 张家川| 芦山县| 伊川县| 册亨县|