999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于XA協(xié)議的TUXEDO應(yīng)用與共享DATABASE LINK的風(fēng)險分析

2014-12-30 15:15:27高宏娟于剛
科技創(chuàng)新導(dǎo)報 2014年32期

高宏娟+于剛

摘 要:在TUXEDO應(yīng)用中,為了保障事務(wù)完整性,通常使用XA協(xié)議進行多資源操作的一致性管理。但是在這類應(yīng)用中,使用共享Database Link進行多數(shù)據(jù)庫資源操作時,可能會破壞事務(wù)完整性并且會引發(fā)系統(tǒng)運行風(fēng)險。該文對在XA協(xié)議的TUXEDO應(yīng)用中使用共享Database Link引發(fā)的風(fēng)險進行分析,并且給出了預(yù)防措施,為通訊行業(yè)業(yè)務(wù)系統(tǒng)的穩(wěn)定運行提供技術(shù)支撐。

關(guān)鍵詞:TUXEDO ?XA協(xié)議 ?Database Link

中圖分類號:TP311.52 文獻標(biāo)識碼:A 文章編號:1674-098X(2014)11(b)-0064-03

RISK ANALYSIS FOR SHARED DBLINK IN TUXEDO APPLICATIONS

BASED ON XA PROTOCOL

Gao Hongjuan1 Yu Gang2

(1.Xinhua College, Ningxia University, Yinchuan 750021,Ningxia,China;

2.Business Support and Information Systems Department, China Mobile Group Ningxia co,.ltd, Yinchuan 750002,Ningxia,China)

TUXEDO application use the XA protocol for the transaction consistency management and integrity of operation in multi-resource. The sharing Database Link operation will destroy the integrity of the transaction in such applications. Influence and risks of using shared Database Link in TUXEDO application will be analyzed. Precaution will be showed which provide technical support for business continuity trading systems.

Key Words:TUXEDO;XA Protocol;Database;Link

基于XA協(xié)議的ORACLE+TUXEDO應(yīng)用開發(fā)模式已被電信、銀行、電商等[1 2 3]普遍使用。XA協(xié)議是X/Open組織提出的分布式交易處理的規(guī)范,主要定義了事務(wù)管理器和資源管理器之間的接口,開發(fā)人員可開發(fā)基于該協(xié)議的多數(shù)據(jù)庫(資源)應(yīng)用系統(tǒng);ORACLE數(shù)據(jù)庫為關(guān)系型數(shù)據(jù)庫系統(tǒng);TUXEDO為交易中間件產(chǎn)品,主要進行事務(wù)控制。近幾年,隨著業(yè)務(wù)發(fā)展,尤其是在“去小型機”的背景下,為提高較大型的IT系統(tǒng)的運行效率,一般會將ORACLE數(shù)據(jù)庫進行分庫操作,降低單機運行壓力,提高運行效率。在這種情況下,多資源交易的事務(wù)理就變得尤為重要。由于數(shù)據(jù)庫資源較多,事務(wù)控制難度增加,原在一個數(shù)據(jù)庫上完成的業(yè)務(wù),可能要拆分為兩個或更多的數(shù)據(jù)庫完成。在此背景下,為縮短開發(fā)時間、減少開發(fā)量,在應(yīng)用程序中使用Database Link[4](簡稱DBLINK)的情況越來越多。DBLINK的使用,雖然可快速響應(yīng)業(yè)務(wù)變更需求,提高開發(fā)效率,但給系統(tǒng)穩(wěn)定運行帶來風(fēng)險,甚至引起系統(tǒng)中斷,文中根據(jù)實際發(fā)生的故障對這一隱患引發(fā)的風(fēng)險進行分析,為后續(xù)系統(tǒng)的開發(fā)、維護工作提供參考。

1 TUXEDO應(yīng)用與共享DBLINK風(fēng)險分析

TUXEDO具備多資源事務(wù)管理功能,客戶端請求通過應(yīng)用服務(wù)器傳遞給TUXEDO服務(wù)器,TUXEDO通過XA協(xié)議連接多個ORACLE數(shù)據(jù)庫完成業(yè)務(wù)[5],如圖1所示。

以用戶繳費為例,需要在oracle_1完成日志記錄,在oracle_2完成費用計算,只有兩個數(shù)據(jù)庫的事務(wù)均完成,繳費才成功。因此在TUXEDO 配置文件中,一般會配置多組,分別連接不同的數(shù)據(jù)庫,代碼實例如下:

*GROUPS

*G_YZ為組名,使用Oracle_XA協(xié)議連接數(shù)據(jù)庫oracle_1

"G_YZ" LMID="tuxcrm3" GRPNO=300 OPENINFO="Oracle_XA:Oracle_XA+acc=P/user_name_1/@@912461cc11e446452asd5e5319f328d3@@+SesTm=150+LogDir=.+SqlNet=oracle_1+Loose_Coupling=true"

TMSNAME="TMS_ORA81"

TMSCOUNT=5

*G_JF為組名,使用Oracle_XA協(xié)議連接數(shù)據(jù)庫oracle_2

"G_JF" LMID="tuxcrm3" ?GRPNO=500 OPENINFO="Oracle_XA:Oracle_XA+acc=P/ user_name_2/@@bbbe29086e6fa23asd5ad5d19d13ad9@@+SesTm=150+LogDir=.+SqlNet= oracle_2+Loose_Coupling=true"

TMSNAME="TMS_ORA81"

TMSCOUNT=5

TUXEDO的應(yīng)用程序會設(shè)計不同的SERVER,連接不同的GROUP,實現(xiàn)對不同數(shù)據(jù)庫事務(wù)的管理,依靠TUXEDO的事務(wù)管理功能,完成整個事務(wù)完整性控制,例如,在TUXEDO中配置有如下服務(wù):endprint

*SERVERS

*AccSrv為費用計算服務(wù),連接G_JF對應(yīng)的數(shù)據(jù)庫

"AccSrv" ? ? ? ?SRVGRP="G_JF" ? SRVID=8001

*LogSrv為日志記錄服務(wù),連接G_YZ對應(yīng)的數(shù)據(jù)庫

"LogSrv" ? ? ? ?SRVGRP="G_YZ" ? SRVID=9001

TUXEDO通過對兩個事務(wù)的管理,完成一個完整交易過程,當(dāng)兩個服務(wù)均返回成功,業(yè)務(wù)才成功受理。正常的事務(wù)控制需要對兩個事務(wù)進行嚴(yán)格控制,但在XA協(xié)議的TUXEDO應(yīng)用,可使用共享的DBLINK[6],通過使用共享DBLINK,應(yīng)用程序可以從當(dāng)前數(shù)據(jù)庫執(zhí)行另一個數(shù)據(jù)庫的DDL及DML操作。例如,在LogSrv服務(wù)中,該服務(wù)只記錄日志,如使用DBLINK,費用計算功能可通過該服務(wù)對應(yīng)的oralce_1數(shù)據(jù)庫執(zhí)行oracle_2數(shù)據(jù)庫的SQL,無需單獨設(shè)計AccSrv服務(wù),節(jié)省了開發(fā)成本及時間,這一設(shè)計方式,雖然有如上優(yōu)點,但在實際應(yīng)用中發(fā)現(xiàn)存在如下風(fēng)險:

(1)破壞XA協(xié)議多資源操作的一致性管理。XA具備多資源(多庫)的事務(wù)管理功能[7],該功能通過與多資源的通信來保障事務(wù)完整性,而在XA協(xié)議的應(yīng)用中使用了DBLINK,則可以從一個資源上完成另一個或多個資源的操作任務(wù),破壞了XA事務(wù)管理的完整性,多庫操作的數(shù)據(jù)一致性無法保障。仍以用戶繳費為例,當(dāng)用戶繳費行為發(fā)生時,如使用XA協(xié)議管理兩個數(shù)據(jù)庫,LogSrv和AccSrv均需返回成功,交易才完成,否則全部回退。如使用DBLINK, XA的事務(wù)管理器只管理oracle_1,若在繳費過程中,oracle_1執(zhí)行成功,oracle_2出現(xiàn)異常,XA事務(wù)管理器仍認(rèn)為交易受理成功。如圖2所示,原應(yīng)由XA事務(wù)管理的應(yīng)用使用DBLNK在完成,XA的事務(wù)管理器無法獲取oracle_2的事務(wù)完成情況,因此異常情況下難以保障事務(wù)完整性及數(shù)據(jù)一致性,這在高可靠性的交易系統(tǒng)中,應(yīng)當(dāng)是被避免的。

使用DBLINK方式完成交易過程,系統(tǒng)正常運行下事務(wù)管理并無異常,而一旦出現(xiàn)一方數(shù)據(jù)庫異常終止,則出現(xiàn)部分交易成功,部分交易失敗的情況,這在交易系統(tǒng)中是嚴(yán)重缺陷。

(2)增加ORACLE數(shù)據(jù)庫會話數(shù)量。在現(xiàn)實維護中,發(fā)現(xiàn)使用共享DBLINK的系統(tǒng),ORACLE數(shù)據(jù)庫異常停機風(fēng)險高于其它系統(tǒng)。一個共享的DBLINK,會被多個會話使用,在XA事務(wù)中,即使事務(wù)提交了,這些會話也會被緩存在數(shù)據(jù)庫中,以便其它事務(wù)繼續(xù)使用,這從節(jié)省連接資源上,是一個很好的思路。但是在較大型的IT系統(tǒng)中,經(jīng)過長時間運行,大量客戶端會產(chǎn)生大量共享連接,這些連接以會話形式保存下來,導(dǎo)致數(shù)據(jù)庫會話數(shù)量不斷增長,如果會話數(shù)量到達(dá)上限,新的會話將無法連接,ORACLE數(shù)據(jù)庫報ORA-00018: maximum number of sessions exceeded[8] 錯誤。若此時ORACLE需要申請新會話完成自身維護,這一需求將得不到滿足,處于保障機制,ORACLE數(shù)據(jù)庫會自動停止運行,從而導(dǎo)致大規(guī)模系統(tǒng)故障,如圖3所示。

筆者維護的IT交易系統(tǒng),因在使用XA協(xié)議的TUXEDO應(yīng)用中使用共享DBLINK,為系統(tǒng)安全埋下隱患,導(dǎo)致上半年連續(xù)兩次因共享DBLINK緩存過多會話,數(shù)據(jù)庫異常停止,引發(fā)全省交易系統(tǒng)故障,后緊急將相關(guān)業(yè)務(wù)下線并采用XA協(xié)議完成業(yè)務(wù)需求,隱患消除。

2 預(yù)防措施

為保障事務(wù)完整性及系統(tǒng)安全,應(yīng)在開發(fā)中注意如下事項:

(1)在基于XA的TUXEDO的應(yīng)用中,禁止使用共享DBLINK。DBLINK的使用,一方面增加系統(tǒng)耦合度,另一方面,也增加了系統(tǒng)安全運行風(fēng)險。DBLINK禁用后,使用接口程序或第三方工具完成數(shù)據(jù)交互、傳輸[9]。

(2)適當(dāng)增大最大會話數(shù)量。通過show parameter sessions查看最大會話數(shù)量,通過增大sessions參數(shù),增加最大會話數(shù)量。一般最大會話數(shù)量為日常運行會話數(shù)量的2倍,需要注意的是,如果使用了共享DBLINK,增加回話數(shù)量只是緩解或延遲故障發(fā)生,無法根治,只作為保障措施使用。

(3)對數(shù)據(jù)庫會話數(shù)量進行監(jiān)控。通過select count(1) from v$session獲取當(dāng)前數(shù)據(jù)庫會話數(shù)量,通過對當(dāng)前運行會話數(shù)量與最大值進行對比,一旦會話數(shù)量超過額定使用率,進行告警,及時進行人工干預(yù),清理多余連接,避免數(shù)據(jù)庫會話到達(dá)上限。

3 結(jié)語

DBLINK的跨多數(shù)據(jù)庫操作給應(yīng)用開發(fā)帶來一系列方便,但也增加了系統(tǒng)的耦合度,且在XA事務(wù)中使用,將破壞事務(wù)完整性功能,同時導(dǎo)致ORACLE數(shù)據(jù)庫會話不斷增多,進而引發(fā)數(shù)據(jù)庫故障,因此建議:在使用XA協(xié)議進行數(shù)據(jù)庫操作的應(yīng)用中,應(yīng)逐步禁用DBLINK,并對數(shù)據(jù)庫會話數(shù)量進行監(jiān)控。

DBLINK的使用是長期積累的結(jié)果,如系統(tǒng)設(shè)計之初未進行嚴(yán)格管理,在大型的IT系統(tǒng)要取消DBLINK的使用,改造難度較大,應(yīng)對DBLINK的使用進行嚴(yán)格管理及登記,根據(jù)重要度、優(yōu)先級,逐步進行改造。

參考文獻

[1] 童旺宇,熊盛武,吳進波.TUXEDO在銀行中間業(yè)務(wù)系統(tǒng)中的設(shè)計與實現(xiàn)[J].計算機技術(shù)與發(fā)展,2007(7):240-243.

[2] 熊磊.TUXEDO中間件及在江蘇有線BOSS系統(tǒng)中的應(yīng)用[J].有線電視技術(shù),2013(8):82-84.

[3] 楊文兵,陳煉.Tuxedo中間件在電信計費系統(tǒng)中的應(yīng)用設(shè)計方案[J].電腦知識與技術(shù),2010(8): 6362-6364.

[4] Oracle Corporation.Oracle? Database Administrator's Guide [DB/OL]:http://docs.oracle.com/cd/B19306_01/server.102/b14231/ds_concepts.htm#sthref3874,2001.

[5] 黃昕.基于TUXEDO中間件的多層體系結(jié)構(gòu)研究[J].計算機工程與應(yīng)用,2003(39):94-95.

[6] Oracle Corporation. Oracle? Database Reference [DB/OL]: http://docs.oracle.com/cd/B19306_01/server.102/b14237/initparams140.htm,2002.

[7] 彭邦倫.交易中間件TUXFDO數(shù)據(jù)庫應(yīng)用程序開發(fā)[J].電腦編程技巧與維護,2013(17):46-51.

[8] Oracle Corporation.Oracle? Database Error Message[DB/OL].http://docs.oracle.com/cd/B19306_01/server.102/b14219/e0.htm#sthref21,2006.

[9] 張瑞平.EMS系統(tǒng)Mosaic與Oracle間接口的設(shè)計與實現(xiàn)[J].計算機應(yīng)用與軟件,2012,29(6):228-229,232.endprint

*SERVERS

*AccSrv為費用計算服務(wù),連接G_JF對應(yīng)的數(shù)據(jù)庫

"AccSrv" ? ? ? ?SRVGRP="G_JF" ? SRVID=8001

*LogSrv為日志記錄服務(wù),連接G_YZ對應(yīng)的數(shù)據(jù)庫

"LogSrv" ? ? ? ?SRVGRP="G_YZ" ? SRVID=9001

TUXEDO通過對兩個事務(wù)的管理,完成一個完整交易過程,當(dāng)兩個服務(wù)均返回成功,業(yè)務(wù)才成功受理。正常的事務(wù)控制需要對兩個事務(wù)進行嚴(yán)格控制,但在XA協(xié)議的TUXEDO應(yīng)用,可使用共享的DBLINK[6],通過使用共享DBLINK,應(yīng)用程序可以從當(dāng)前數(shù)據(jù)庫執(zhí)行另一個數(shù)據(jù)庫的DDL及DML操作。例如,在LogSrv服務(wù)中,該服務(wù)只記錄日志,如使用DBLINK,費用計算功能可通過該服務(wù)對應(yīng)的oralce_1數(shù)據(jù)庫執(zhí)行oracle_2數(shù)據(jù)庫的SQL,無需單獨設(shè)計AccSrv服務(wù),節(jié)省了開發(fā)成本及時間,這一設(shè)計方式,雖然有如上優(yōu)點,但在實際應(yīng)用中發(fā)現(xiàn)存在如下風(fēng)險:

(1)破壞XA協(xié)議多資源操作的一致性管理。XA具備多資源(多庫)的事務(wù)管理功能[7],該功能通過與多資源的通信來保障事務(wù)完整性,而在XA協(xié)議的應(yīng)用中使用了DBLINK,則可以從一個資源上完成另一個或多個資源的操作任務(wù),破壞了XA事務(wù)管理的完整性,多庫操作的數(shù)據(jù)一致性無法保障。仍以用戶繳費為例,當(dāng)用戶繳費行為發(fā)生時,如使用XA協(xié)議管理兩個數(shù)據(jù)庫,LogSrv和AccSrv均需返回成功,交易才完成,否則全部回退。如使用DBLINK, XA的事務(wù)管理器只管理oracle_1,若在繳費過程中,oracle_1執(zhí)行成功,oracle_2出現(xiàn)異常,XA事務(wù)管理器仍認(rèn)為交易受理成功。如圖2所示,原應(yīng)由XA事務(wù)管理的應(yīng)用使用DBLNK在完成,XA的事務(wù)管理器無法獲取oracle_2的事務(wù)完成情況,因此異常情況下難以保障事務(wù)完整性及數(shù)據(jù)一致性,這在高可靠性的交易系統(tǒng)中,應(yīng)當(dāng)是被避免的。

使用DBLINK方式完成交易過程,系統(tǒng)正常運行下事務(wù)管理并無異常,而一旦出現(xiàn)一方數(shù)據(jù)庫異常終止,則出現(xiàn)部分交易成功,部分交易失敗的情況,這在交易系統(tǒng)中是嚴(yán)重缺陷。

(2)增加ORACLE數(shù)據(jù)庫會話數(shù)量。在現(xiàn)實維護中,發(fā)現(xiàn)使用共享DBLINK的系統(tǒng),ORACLE數(shù)據(jù)庫異常停機風(fēng)險高于其它系統(tǒng)。一個共享的DBLINK,會被多個會話使用,在XA事務(wù)中,即使事務(wù)提交了,這些會話也會被緩存在數(shù)據(jù)庫中,以便其它事務(wù)繼續(xù)使用,這從節(jié)省連接資源上,是一個很好的思路。但是在較大型的IT系統(tǒng)中,經(jīng)過長時間運行,大量客戶端會產(chǎn)生大量共享連接,這些連接以會話形式保存下來,導(dǎo)致數(shù)據(jù)庫會話數(shù)量不斷增長,如果會話數(shù)量到達(dá)上限,新的會話將無法連接,ORACLE數(shù)據(jù)庫報ORA-00018: maximum number of sessions exceeded[8] 錯誤。若此時ORACLE需要申請新會話完成自身維護,這一需求將得不到滿足,處于保障機制,ORACLE數(shù)據(jù)庫會自動停止運行,從而導(dǎo)致大規(guī)模系統(tǒng)故障,如圖3所示。

筆者維護的IT交易系統(tǒng),因在使用XA協(xié)議的TUXEDO應(yīng)用中使用共享DBLINK,為系統(tǒng)安全埋下隱患,導(dǎo)致上半年連續(xù)兩次因共享DBLINK緩存過多會話,數(shù)據(jù)庫異常停止,引發(fā)全省交易系統(tǒng)故障,后緊急將相關(guān)業(yè)務(wù)下線并采用XA協(xié)議完成業(yè)務(wù)需求,隱患消除。

2 預(yù)防措施

為保障事務(wù)完整性及系統(tǒng)安全,應(yīng)在開發(fā)中注意如下事項:

(1)在基于XA的TUXEDO的應(yīng)用中,禁止使用共享DBLINK。DBLINK的使用,一方面增加系統(tǒng)耦合度,另一方面,也增加了系統(tǒng)安全運行風(fēng)險。DBLINK禁用后,使用接口程序或第三方工具完成數(shù)據(jù)交互、傳輸[9]。

(2)適當(dāng)增大最大會話數(shù)量。通過show parameter sessions查看最大會話數(shù)量,通過增大sessions參數(shù),增加最大會話數(shù)量。一般最大會話數(shù)量為日常運行會話數(shù)量的2倍,需要注意的是,如果使用了共享DBLINK,增加回話數(shù)量只是緩解或延遲故障發(fā)生,無法根治,只作為保障措施使用。

(3)對數(shù)據(jù)庫會話數(shù)量進行監(jiān)控。通過select count(1) from v$session獲取當(dāng)前數(shù)據(jù)庫會話數(shù)量,通過對當(dāng)前運行會話數(shù)量與最大值進行對比,一旦會話數(shù)量超過額定使用率,進行告警,及時進行人工干預(yù),清理多余連接,避免數(shù)據(jù)庫會話到達(dá)上限。

3 結(jié)語

DBLINK的跨多數(shù)據(jù)庫操作給應(yīng)用開發(fā)帶來一系列方便,但也增加了系統(tǒng)的耦合度,且在XA事務(wù)中使用,將破壞事務(wù)完整性功能,同時導(dǎo)致ORACLE數(shù)據(jù)庫會話不斷增多,進而引發(fā)數(shù)據(jù)庫故障,因此建議:在使用XA協(xié)議進行數(shù)據(jù)庫操作的應(yīng)用中,應(yīng)逐步禁用DBLINK,并對數(shù)據(jù)庫會話數(shù)量進行監(jiān)控。

DBLINK的使用是長期積累的結(jié)果,如系統(tǒng)設(shè)計之初未進行嚴(yán)格管理,在大型的IT系統(tǒng)要取消DBLINK的使用,改造難度較大,應(yīng)對DBLINK的使用進行嚴(yán)格管理及登記,根據(jù)重要度、優(yōu)先級,逐步進行改造。

參考文獻

[1] 童旺宇,熊盛武,吳進波.TUXEDO在銀行中間業(yè)務(wù)系統(tǒng)中的設(shè)計與實現(xiàn)[J].計算機技術(shù)與發(fā)展,2007(7):240-243.

[2] 熊磊.TUXEDO中間件及在江蘇有線BOSS系統(tǒng)中的應(yīng)用[J].有線電視技術(shù),2013(8):82-84.

[3] 楊文兵,陳煉.Tuxedo中間件在電信計費系統(tǒng)中的應(yīng)用設(shè)計方案[J].電腦知識與技術(shù),2010(8): 6362-6364.

[4] Oracle Corporation.Oracle? Database Administrator's Guide [DB/OL]:http://docs.oracle.com/cd/B19306_01/server.102/b14231/ds_concepts.htm#sthref3874,2001.

[5] 黃昕.基于TUXEDO中間件的多層體系結(jié)構(gòu)研究[J].計算機工程與應(yīng)用,2003(39):94-95.

[6] Oracle Corporation. Oracle? Database Reference [DB/OL]: http://docs.oracle.com/cd/B19306_01/server.102/b14237/initparams140.htm,2002.

[7] 彭邦倫.交易中間件TUXFDO數(shù)據(jù)庫應(yīng)用程序開發(fā)[J].電腦編程技巧與維護,2013(17):46-51.

[8] Oracle Corporation.Oracle? Database Error Message[DB/OL].http://docs.oracle.com/cd/B19306_01/server.102/b14219/e0.htm#sthref21,2006.

[9] 張瑞平.EMS系統(tǒng)Mosaic與Oracle間接口的設(shè)計與實現(xiàn)[J].計算機應(yīng)用與軟件,2012,29(6):228-229,232.endprint

*SERVERS

*AccSrv為費用計算服務(wù),連接G_JF對應(yīng)的數(shù)據(jù)庫

"AccSrv" ? ? ? ?SRVGRP="G_JF" ? SRVID=8001

*LogSrv為日志記錄服務(wù),連接G_YZ對應(yīng)的數(shù)據(jù)庫

"LogSrv" ? ? ? ?SRVGRP="G_YZ" ? SRVID=9001

TUXEDO通過對兩個事務(wù)的管理,完成一個完整交易過程,當(dāng)兩個服務(wù)均返回成功,業(yè)務(wù)才成功受理。正常的事務(wù)控制需要對兩個事務(wù)進行嚴(yán)格控制,但在XA協(xié)議的TUXEDO應(yīng)用,可使用共享的DBLINK[6],通過使用共享DBLINK,應(yīng)用程序可以從當(dāng)前數(shù)據(jù)庫執(zhí)行另一個數(shù)據(jù)庫的DDL及DML操作。例如,在LogSrv服務(wù)中,該服務(wù)只記錄日志,如使用DBLINK,費用計算功能可通過該服務(wù)對應(yīng)的oralce_1數(shù)據(jù)庫執(zhí)行oracle_2數(shù)據(jù)庫的SQL,無需單獨設(shè)計AccSrv服務(wù),節(jié)省了開發(fā)成本及時間,這一設(shè)計方式,雖然有如上優(yōu)點,但在實際應(yīng)用中發(fā)現(xiàn)存在如下風(fēng)險:

(1)破壞XA協(xié)議多資源操作的一致性管理。XA具備多資源(多庫)的事務(wù)管理功能[7],該功能通過與多資源的通信來保障事務(wù)完整性,而在XA協(xié)議的應(yīng)用中使用了DBLINK,則可以從一個資源上完成另一個或多個資源的操作任務(wù),破壞了XA事務(wù)管理的完整性,多庫操作的數(shù)據(jù)一致性無法保障。仍以用戶繳費為例,當(dāng)用戶繳費行為發(fā)生時,如使用XA協(xié)議管理兩個數(shù)據(jù)庫,LogSrv和AccSrv均需返回成功,交易才完成,否則全部回退。如使用DBLINK, XA的事務(wù)管理器只管理oracle_1,若在繳費過程中,oracle_1執(zhí)行成功,oracle_2出現(xiàn)異常,XA事務(wù)管理器仍認(rèn)為交易受理成功。如圖2所示,原應(yīng)由XA事務(wù)管理的應(yīng)用使用DBLNK在完成,XA的事務(wù)管理器無法獲取oracle_2的事務(wù)完成情況,因此異常情況下難以保障事務(wù)完整性及數(shù)據(jù)一致性,這在高可靠性的交易系統(tǒng)中,應(yīng)當(dāng)是被避免的。

使用DBLINK方式完成交易過程,系統(tǒng)正常運行下事務(wù)管理并無異常,而一旦出現(xiàn)一方數(shù)據(jù)庫異常終止,則出現(xiàn)部分交易成功,部分交易失敗的情況,這在交易系統(tǒng)中是嚴(yán)重缺陷。

(2)增加ORACLE數(shù)據(jù)庫會話數(shù)量。在現(xiàn)實維護中,發(fā)現(xiàn)使用共享DBLINK的系統(tǒng),ORACLE數(shù)據(jù)庫異常停機風(fēng)險高于其它系統(tǒng)。一個共享的DBLINK,會被多個會話使用,在XA事務(wù)中,即使事務(wù)提交了,這些會話也會被緩存在數(shù)據(jù)庫中,以便其它事務(wù)繼續(xù)使用,這從節(jié)省連接資源上,是一個很好的思路。但是在較大型的IT系統(tǒng)中,經(jīng)過長時間運行,大量客戶端會產(chǎn)生大量共享連接,這些連接以會話形式保存下來,導(dǎo)致數(shù)據(jù)庫會話數(shù)量不斷增長,如果會話數(shù)量到達(dá)上限,新的會話將無法連接,ORACLE數(shù)據(jù)庫報ORA-00018: maximum number of sessions exceeded[8] 錯誤。若此時ORACLE需要申請新會話完成自身維護,這一需求將得不到滿足,處于保障機制,ORACLE數(shù)據(jù)庫會自動停止運行,從而導(dǎo)致大規(guī)模系統(tǒng)故障,如圖3所示。

筆者維護的IT交易系統(tǒng),因在使用XA協(xié)議的TUXEDO應(yīng)用中使用共享DBLINK,為系統(tǒng)安全埋下隱患,導(dǎo)致上半年連續(xù)兩次因共享DBLINK緩存過多會話,數(shù)據(jù)庫異常停止,引發(fā)全省交易系統(tǒng)故障,后緊急將相關(guān)業(yè)務(wù)下線并采用XA協(xié)議完成業(yè)務(wù)需求,隱患消除。

2 預(yù)防措施

為保障事務(wù)完整性及系統(tǒng)安全,應(yīng)在開發(fā)中注意如下事項:

(1)在基于XA的TUXEDO的應(yīng)用中,禁止使用共享DBLINK。DBLINK的使用,一方面增加系統(tǒng)耦合度,另一方面,也增加了系統(tǒng)安全運行風(fēng)險。DBLINK禁用后,使用接口程序或第三方工具完成數(shù)據(jù)交互、傳輸[9]。

(2)適當(dāng)增大最大會話數(shù)量。通過show parameter sessions查看最大會話數(shù)量,通過增大sessions參數(shù),增加最大會話數(shù)量。一般最大會話數(shù)量為日常運行會話數(shù)量的2倍,需要注意的是,如果使用了共享DBLINK,增加回話數(shù)量只是緩解或延遲故障發(fā)生,無法根治,只作為保障措施使用。

(3)對數(shù)據(jù)庫會話數(shù)量進行監(jiān)控。通過select count(1) from v$session獲取當(dāng)前數(shù)據(jù)庫會話數(shù)量,通過對當(dāng)前運行會話數(shù)量與最大值進行對比,一旦會話數(shù)量超過額定使用率,進行告警,及時進行人工干預(yù),清理多余連接,避免數(shù)據(jù)庫會話到達(dá)上限。

3 結(jié)語

DBLINK的跨多數(shù)據(jù)庫操作給應(yīng)用開發(fā)帶來一系列方便,但也增加了系統(tǒng)的耦合度,且在XA事務(wù)中使用,將破壞事務(wù)完整性功能,同時導(dǎo)致ORACLE數(shù)據(jù)庫會話不斷增多,進而引發(fā)數(shù)據(jù)庫故障,因此建議:在使用XA協(xié)議進行數(shù)據(jù)庫操作的應(yīng)用中,應(yīng)逐步禁用DBLINK,并對數(shù)據(jù)庫會話數(shù)量進行監(jiān)控。

DBLINK的使用是長期積累的結(jié)果,如系統(tǒng)設(shè)計之初未進行嚴(yán)格管理,在大型的IT系統(tǒng)要取消DBLINK的使用,改造難度較大,應(yīng)對DBLINK的使用進行嚴(yán)格管理及登記,根據(jù)重要度、優(yōu)先級,逐步進行改造。

參考文獻

[1] 童旺宇,熊盛武,吳進波.TUXEDO在銀行中間業(yè)務(wù)系統(tǒng)中的設(shè)計與實現(xiàn)[J].計算機技術(shù)與發(fā)展,2007(7):240-243.

[2] 熊磊.TUXEDO中間件及在江蘇有線BOSS系統(tǒng)中的應(yīng)用[J].有線電視技術(shù),2013(8):82-84.

[3] 楊文兵,陳煉.Tuxedo中間件在電信計費系統(tǒng)中的應(yīng)用設(shè)計方案[J].電腦知識與技術(shù),2010(8): 6362-6364.

[4] Oracle Corporation.Oracle? Database Administrator's Guide [DB/OL]:http://docs.oracle.com/cd/B19306_01/server.102/b14231/ds_concepts.htm#sthref3874,2001.

[5] 黃昕.基于TUXEDO中間件的多層體系結(jié)構(gòu)研究[J].計算機工程與應(yīng)用,2003(39):94-95.

[6] Oracle Corporation. Oracle? Database Reference [DB/OL]: http://docs.oracle.com/cd/B19306_01/server.102/b14237/initparams140.htm,2002.

[7] 彭邦倫.交易中間件TUXFDO數(shù)據(jù)庫應(yīng)用程序開發(fā)[J].電腦編程技巧與維護,2013(17):46-51.

[8] Oracle Corporation.Oracle? Database Error Message[DB/OL].http://docs.oracle.com/cd/B19306_01/server.102/b14219/e0.htm#sthref21,2006.

[9] 張瑞平.EMS系統(tǒng)Mosaic與Oracle間接口的設(shè)計與實現(xiàn)[J].計算機應(yīng)用與軟件,2012,29(6):228-229,232.endprint

主站蜘蛛池模板: 婷婷六月综合网| 亚洲不卡影院| 久热99这里只有精品视频6| 麻豆国产在线观看一区二区| 激情亚洲天堂| 国产在线视频欧美亚综合| 在线毛片网站| 国产一级特黄aa级特黄裸毛片| 69免费在线视频| 黄色网站在线观看无码| 国内自拍久第一页| 国产91线观看| 91在线播放免费不卡无毒| 美女内射视频WWW网站午夜 | 免费日韩在线视频| 欧美性精品不卡在线观看| 日本不卡在线播放| 成年人午夜免费视频| 欧美日韩高清在线| 国产欧美网站| 国产男人天堂| 亚洲视频色图| 亚洲美女视频一区| 91精品小视频| 亚洲精品第一在线观看视频| 亚洲视频免| jizz在线免费播放| 影音先锋亚洲无码| 欧美翘臀一区二区三区| 一本一道波多野结衣一区二区| 114级毛片免费观看| 亚洲精品爱草草视频在线| 国产美女人喷水在线观看| 亚洲第一成人在线| 中文字幕久久精品波多野结| 久久美女精品| 久久久久亚洲精品成人网| 亚洲av无码人妻| a级毛片免费播放| a级免费视频| 亚洲日本中文字幕乱码中文| 亚洲第一成年网| 欧美成人aⅴ| 免费激情网址| 久久国产精品麻豆系列| 国产激情国语对白普通话| 国产无码精品在线播放| 一级毛片基地| 91美女视频在线观看| 亚洲视频免费播放| 亚洲国模精品一区| 啦啦啦网站在线观看a毛片| 男女性色大片免费网站| 欧美一级黄色影院| 91国内外精品自在线播放| 免费精品一区二区h| 国产18页| 亚洲一区二区三区麻豆| 成人综合网址| 四虎影视无码永久免费观看| www.91中文字幕| 一级爱做片免费观看久久| 婷婷激情五月网| 国产亚洲欧美在线中文bt天堂 | 精品一区二区三区视频免费观看| 成人在线欧美| 国产AV无码专区亚洲A∨毛片| 国产全黄a一级毛片| 国产精品自在在线午夜区app| 免费A级毛片无码免费视频| 亚洲爱婷婷色69堂| 白浆视频在线观看| 热热久久狠狠偷偷色男同| 日本五区在线不卡精品| 国产aaaaa一级毛片| 熟妇丰满人妻| 99视频免费观看| 国产毛片不卡| 久久a毛片| 亚洲日韩图片专区第1页| 日本高清有码人妻| 在线无码av一区二区三区|