亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇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ù)量到達上限,新的會話將無法連接,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ù)庫會話到達上限。

        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ù)量到達上限,新的會話將無法連接,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ù)庫會話到達上限。

        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ù)量到達上限,新的會話將無法連接,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ù)庫會話到達上限。

        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

        二区免费在线视频观看| 久久精品国产热| 国产真实乱XXXⅩ视频| 久久精品网站免费观看| 丝袜美足在线视频国产在线看| 狠狠色噜噜狠狠狠狠97首创麻豆| 芒果乱码国色天香| 国产精品 高清 尿 小便 嘘嘘| 狠狠综合亚洲综合亚色| 久久精品国产亚洲Av无码偷窍| 麻豆av一区二区天堂| 99蜜桃在线观看免费视频| 超碰国产精品久久国产精品99| 免费操逼视频| 国产熟妇人妻精品一区二区动漫 | 久久天天躁狠狠躁夜夜爽| 日本老年人精品久久中文字幕| 老熟妇嗷嗷叫91九色| 青青手机在线观看视频| 极品老师腿张开粉嫩小泬| 国产精品熟女视频一区二区| 久久国产热精品波多野结衣av| 性感人妻中文字幕在线| 人妻少妇精品视频专区二区三区 | 亚洲中文字幕无码爆乳app| 久久丫精品国产亚洲av不卡| 99热国产在线| 免费人成网站在线播放| 亚洲av午夜一区二区三| 97在线观看视频| 国产精品爽爽va在线观看网站| 日韩在线精品视频免费| 国产毛女同一区二区三区| 国产女人的高潮国语对白| 永久无码在线观看| 中文在线最新版天堂av| 一区二区亚洲精品在线| 国产精品久久久久久久妇| 2021精品国产综合久久| 久久偷拍国内亚洲青青草| 久久99精品久久久久麻豆|