石玉松
摘要:通過對廠礦兩級多套數據庫的長期跟蹤監測,分析用戶訪問行為,找出并認真研究影響數據庫穩定運行的關鍵因素,創建出“數據庫雙維度靶向管控方法”,適用于數據庫管理中的事前預防、事中處置和事后追溯的介入性全周期管理。通過應用概要文件控制技術配合分級實施策略,實現橫向維度上基于數據庫用戶級的訪問控制;通過應用數據庫級觸發器技術配合行為自動鑒別功能,實現縱向維度上基于單機IP級的訪問控制;將兩個維度的管控方案進行聯合,形成了較為完整、有效的數據庫管控體系,實現對數據庫各類訪問行為的精確定位、精準把控、精細管理。既可保證數據庫運行的安全、平穩、高效,還可構建出健康、良好的數據訪問秩序。對于本地化及云中心的數據管理提供成熟經驗和技術解決方案。
主題詞:數據庫;雙維度靶向管控;訪問秩序
中圖分類號:TP311? ? ? 文獻標識碼:A
文章編號:1009-3044(2021)11-0033-03
1 背景及意義
隨著采油廠數據中心的建設規模、用戶量級和數據量級不斷增大,且近年來新技術的應用、新業務的上線以及移動端的興起,使數據庫的訪問量和數據交互頻率產生了巨大的增長,對服務器的運行穩定性也提出了更高的要求,那么如何在新形勢下確保數據庫的安全、平穩、高效,成為一項重要的研究課題。
生產數據庫系統不僅與廠內各大應用系統直接相連,多套數據庫間也保持緊密的數據交互,而且與廠外各單位的數據庫也保持著緊密的數據往來關系,那么如何形成良好的訪問秩序,是實現數據庫平穩運行的前提。本文著重闡述數據庫雙維度靶向管控方法的建設思路、技術要點、認識及應用效果。
2 數據中心運行狀況分析
2.1建設規模大,需要建立更良好的運行秩序
廠級數據中心共建設有廠、礦兩級各類功能數據庫多套,其中廠級按照專業門類主要劃分為油藏工程數據庫、采油工程數據庫和經營管理數據庫,礦級按照主要生產行政單位也建設數據庫多套。多套數據庫間已經形成了較為完整的協同工作模式,相互依托,相輔相成,然而從長期發展來看,仍然需要良好運行秩序的支持,才能使整體數據庫系統保持穩定的運行狀態。
2.2運行規模大,需要形成更規范的調用秩序
由于管理環節多、管理鏈條長,信息技術在各生產環節中應用的比例逐年增高,數據庫間的數據交互也越發頻繁。尤其是近年來與測試、作業、錄井等廠外用戶的數據庫建立了數據共享通道,允許跨單位直連的數據訪問,使數據調用關系越發復雜,需要建立起規范的數據調用秩序,以確保數據庫系統安全運行。
2.3應用規模大,需要構建更完善的訪問秩序
依托于數據中心,目前在用的應用軟件近百余項,包括方案調整、措施優選、形勢分析、油田生產、運行控制、指揮決策等業務,以及辦公自動化、計劃、經營、基建投資、物資管理等業務。形成了多元化、多業務、多層級的應用系統生態環境。
近年來新上線運行的應用系統無論從規模上、交互實時性要求上以及數據變化頻率上都表現出了新的運行特點。隨著“油氣水井站數字化工程的實施推進”“移動端應用的加速發展”“非結構化數據的深化應用”以及“傳統業務數據的穩定增長”,預計未來5年內數據庫訪問量還將產生高速的增長,這就需要更為嚴格的應用訪問秩序。
3 用戶訪問行為的分析與研究
用戶的訪問行為可分為正常訪問和非正常訪問兩大類。目前,各大數據庫系統的資源狀況可以滿足全廠用戶的正常訪問需求,但隨著新應用帶入的新訪問請求,服務器負載仍在逐年遞增,峰值已接近高位警戒線。此時,如果出現非正常訪問行為就會直接影響數據庫運行安全,嚴重時將導致數據庫宕機,服務中斷。可以看出,非正常訪問行為與數據庫運行安全之間存在著突出的矛盾點。本文著重討論如何實現對正常訪問行為透明而對非正常訪問行為可精確識別管控的具體方法。
用戶的非正常訪問行為有很多種,看似雜亂無章,但通過長期監測分析發現,還是有章可循的,大致可分為以下幾種常見類型:
跨服務器數據調用時由于采用服務器專用鏈路,增加了監管難度,無有效手段管控。
用戶的不良操作習慣,造成連接資源長期無效占用,導致運行資源的浪費。
軟件算法的隱性缺陷,會存在一定程度的未知風險,造成服務器進程死鎖或資源耗竭。
資源請求不嚴謹,超量搶占CPU、IO及內存等公共資源,造成服務器的高負載。
當前服務器運行資源已經處于高位,某些情況下峰值已經超過總運行資源的70%,無法承受非正常訪問行為帶來的沖擊。而在上述情況發生以后,管理上并無特效的技術手段支持,通常是采取邏輯切斷、用戶鎖定,嚴重時需要重啟服務器。所以迫切需要研究一套有針對性的解決方案,具備行為自動識別、判定與處置能力,確保數據庫系統各項功能平穩運行。
4 度靶向管控方法的實現
4.1基于數據庫用戶級的管控方案
用戶管理作為數據庫管理單元中的重要組成部分,承擔著重要的任務。通常來說,一個數據庫用戶會對應一套應用系統,形成明確的對應關系,并且負責人明晰,是數據庫管理中重要的抓手。
利用概要文件各種參數及值的設定,實現對硬件系統和數據庫資源及內核資源的使用限定。不同數據庫用戶擔負著不同的任務,執行不同的SQL語句,所需要的資源也不盡相同,可以利用概要文件對資源進行精確分配與控制。
重要參數項如下:
CPU_PER_SESSION:限制每個會話可以占用的CPU時間總量。如果會話超過這一設定,則會強制用戶做出選擇(提交事務或退回事務)。
CPU_PER_CALL:限制每個數據庫調用可以占用的CPU時間。精確到每個SQL語句的解析、執行過程。
CONNECT_TIME:限定會話的最大連接時間。
IDLE_TIME:限定會話的最大空閑時間。
SESSIONS_PER_USER:限制一個用戶可以并發執行的會話數量。
LOGICAL_READS_PER_SESSION:限制一個會話可以執行的邏輯讀取塊數。
LOGICAL_READS_PER_CALL:限制每個數據庫調用可以執行的邏輯讀取塊數。
注:邏輯讀的限定相對于執行時間更為準確,因為其不受系統負載的變化影響,但邏輯讀的閾值確定相對復雜,不直觀,設定難度較大。
PRIVATE_SGA:限制分配給UGA(User Globel Area 用戶全局區)的SGA內存數量。
COMPOSITE_LIMIT:限定一個用戶會話可以消耗資源的總限額。
值得說明的一點是,概要文件雖然通過設定并與用戶關聯對接,但默認情況下它并不生效,需要DBA手動開啟才能生效,這是使用概要文件的重要環節。
4.2基于單機IP級的管控方案
基于IP級別的數據庫管控是客戶端訪問管理中十分重要的環節,一直以來始終缺乏有效的管理手段,尤其是對于投用年限較早的C/S架構的應用程序,程序文件分散在用戶各自的計算機終端,有的用戶會“備份”多個應用程序版本,存放在硬盤、U盤中,導致應用程序版本混亂,如果應用本身沒有做好版本控制,這將給數據庫訪問安全帶來隱患,而且在服務端對其控制的效果也始終不理想。
基于IP管控的核心關鍵在于IP地址的獲取與鎖定。由于數據庫自帶的系統性能視圖V$SESSION中并沒有記錄準確的IP地址信息,只記錄了計算機名、系統用戶名等模糊信息,不能實現精確定位,所以此類參數無法使用。
通過研究發現,可利用DBMS_APPLICATION_INFO包中的SET_CLIENT_INFO方法獲取到準確來訪IP。采用庫級觸發器與DBMS_APPLICATION_INFO結合的方式將IP地址回寫到系統V$SESSION視圖中,從而實現對每個來訪進程的IP獲取,這也為整體方案的實施奠定了基礎。
在所有Oracle進程中分為后臺服務進程、服務器共享訪問進程、用戶客戶端訪問進程三大類,我們此次研究的對象只針對后兩類訪問進程進行討論。
構建完整的程序架構體系(敏感信息使用*代替):
*_LOGON_IP_CONTROL:主控制單元。數據庫級觸發器,主要負責用戶IP的獲取與回寫操作以及用戶非正常訪問行為的識別與隔離功能。
*_SESSION_COUNT_LIST:用戶并發數統計功能。系統級視圖,主要對IP進行分組統計,為主控制單元提供并發數的判定依據。
*_SESSION_INFO:用戶進程詳細信息。系統級視圖,主要提供詳細的用戶登錄訪問信息,為主控制單元及日志功能提供信息來源。
*_LOGIN_BWL:黑白名單控制模塊。實體表,主要用來對用戶實施分級管理,是主控制單元執行控制行為的關鍵依據。
*_LOGIN_LOG:監控日志模塊。實體表,主要用來記錄主控制單元的各項操作痕跡以及用戶行為的留痕。具備分級日志功能,可根據實際需要切換日志記錄的粗細粒度。
管控策略設定的合理性將直接決定著該方法的實際效果。如果策略設定過于嚴格,則有可能對正常用戶訪問造成影響,降低數據庫訪問的穩定性。如果策略設定的過于松散,則有可能無法準確識別非正常訪問行為,更無法對其進行管控,服務器運行風險得不到有效控制。只有充分考慮不同日期、不同時間段以及不同負載壓力下,用戶訪問量的變化情況,進行綜合考慮,并允許對不同IP進行靈活的閾值設定,才能達到預期的管控效果。
4.3雙維度聯合管控的必要性
通過以上兩套管控方案均可以對數據庫的訪問行為進行有效管控,但每個方案都有管理側重點,也有管理盲區。通過分析發現,兩套方案存在很強的互補性,所以將兩套方案融合才能形成合力,實現橫向維度上基于數據庫用戶級別的管控、縱向維度上基于單機IP級別的管控,雙維度的聯合實現了更為精細、精確、精準的數據庫管理。
5 優勢與效果
5.1有利于對資源實施頂層監管
對于用戶而言,數據庫資源對其是透明的,容易在無意間造成資源浪費,服務器需要為無效連接支付更多資源保障,無疑對數據庫運行會帶來影響,同時也會搶占其他用戶的正常訪問,所以“雙維度靶向管控”手段是實施頂層監管的利器。
5.2有助于安全風險采取規避措施
對于程序而言,或多或少都會存在一定的BUG。而且某些隱性的BUG只有在特定條件下才會被觸發,場景還原比較困難,問題的定位就會更加模糊。此時為了確保數據庫有能力對隱性BUG風險進行安全規避,利用好“雙維度靶向管控”手段是關鍵,縮小風險用戶的資源支配量,將風險禁錮在較小的范圍內,實現隱性風險的受控、可控。
5.3 有益于穩定運行提供技術保障
“雙維度靶向管控”適用于事前預防、事中處置及事后追溯的介入性全周期管理。按照多套數據庫服務器每天訪問總數萬次的粗略估算,半年來至少監測守護了近兩萬次的訪問量,累計阻隔非正常訪問五千余次。
在當前數據需求多變、訪問壓力逐年遞增的趨勢下,我廠數據庫系統始終保持著健康有序的良性發展,數據庫在線時率保持在99%以上,為全廠提供著穩定、高效的數據訪問服務,并形成了良好的秩序環境。
6 總結
本文詳細闡述了“數據庫雙維度靶向管控”方法的研究與實施思路和具體做法,都是經過長期探索試驗、工作實踐總結而出,并在長期的數據庫管理過程中不斷修正完善的,現已形成了較為完整的管控體系,成為提升數據庫管理質量的有效手段。該方法不僅適用于本地環境,對云數據中心管理也值得推廣應用。由于云資源管理更加規范嚴格,所以實施此項措施有利于在云環境下完成數據庫的精細化管理。
參考文獻:
[1] 姜姍,任靖娟,高志宇.基于聚類優化的大型網絡數據庫挖掘系統設計[J].現代電子技術,2020,43(6):175-177,182.
[2] 黃志,李濤,宋瑤,等.基于Json的小型異構數據庫同步策略研究[J].氣象研究與應用,2020,41(1):48-53.
[3] 楊國清.關系數據庫中樹形結構的矩陣算法研究[J].計算機時代,2020(3):50-52,56.
[4] 史吉超.淺談施工企業成本數據庫建設[J].智能城市,2020,6(5):75-76.
[5] 楊春麗.計算機網絡數據庫安全管理技術的優化分析[J].河北農機,2020(3):44.
【通聯編輯:唐一東】