金 鑫,閆龍川,劉 軍,耿 亮
(1. 國家電網(wǎng)公司信息通信分公司,北京 100761;2. 全球能源互聯(lián)網(wǎng)集團(tuán)有限公司,北京 100031)
面向企業(yè)級數(shù)據(jù)庫的故障分析及運(yùn)維研究:以O(shè)racle數(shù)據(jù)庫為例
金 鑫1,閆龍川1,劉 軍1,耿 亮2
(1. 國家電網(wǎng)公司信息通信分公司,北京 100761;2. 全球能源互聯(lián)網(wǎng)集團(tuán)有限公司,北京 100031)
數(shù)據(jù)庫是信息系統(tǒng)的核心組件,數(shù)據(jù)庫故障是信息系統(tǒng)故障的主要因素,數(shù)據(jù)庫運(yùn)維是信息系統(tǒng)運(yùn)行維護(hù)工作的重點(diǎn)?;贠racle數(shù)據(jù)庫的架構(gòu)分析和故障機(jī)理深層次研究,創(chuàng)新性提出故障原因分類體系,提出實(shí)用運(yùn)維操作方法,給出數(shù)據(jù)庫故障典型案例,為信息系統(tǒng)運(yùn)維工作人員做好數(shù)據(jù)庫運(yùn)維工作的提供系統(tǒng)方法論。
Oracle;數(shù)據(jù)庫故障;診斷分析
數(shù)據(jù)庫承擔(dān)數(shù)據(jù)的存儲、讀取等功能,是信息系統(tǒng)重要組成部分,數(shù)據(jù)庫故障可能導(dǎo)致信息系統(tǒng)癱瘓,對企業(yè)運(yùn)營和安全生產(chǎn)的威脅極大,數(shù)據(jù)丟失可能會對企業(yè)造成不可挽回的影響。對某大型企業(yè)近年來發(fā)生的信息系統(tǒng)故障進(jìn)行粗略統(tǒng)計(jì),發(fā)現(xiàn)數(shù)據(jù)庫故障占比最高,因此數(shù)據(jù)庫性能是信息系統(tǒng)運(yùn)維人員關(guān)注的焦點(diǎn)[1-2]。本文結(jié)合數(shù)據(jù)庫組成架構(gòu)和故障機(jī)理的深入研究,總結(jié)出數(shù)據(jù)庫故障原因分類體系,提出數(shù)據(jù)庫實(shí)用的性能監(jiān)控、故障處理等運(yùn)維操作,給出典型故障場景及解決方法,對于企業(yè)信息系統(tǒng)運(yùn)維人員進(jìn)行數(shù)據(jù)庫故障快速診斷處置具有重要參考價值。
Oracle數(shù)據(jù)庫是當(dāng)前使用最為廣泛的大型數(shù)據(jù)庫之一[3-4],其體系結(jié)構(gòu)主要包括內(nèi)存結(jié)構(gòu)、進(jìn)程結(jié)構(gòu)、文件系統(tǒng)、存儲結(jié)構(gòu)等,如圖1。
數(shù)據(jù)庫內(nèi)存主要由系統(tǒng)全局區(qū) SGA(System Global Area)和程序全局區(qū)PGA(Program Global Area)和軟件代碼區(qū)構(gòu)成[5]。SGA主要包括共享池(SharedPool)、數(shù)據(jù)緩沖區(qū)(Database Buffer Cache)和日志緩沖區(qū)(Redo Log Buffer)、大型池(Large Pool)、Java池(Java Pool)、流池(Streams Pool)和其他結(jié)構(gòu)(如固定SGA、鎖管理)等。PGA主要包括棧、游標(biāo)和用戶會話數(shù)據(jù)等。
數(shù)據(jù)庫后臺進(jìn)程主要包括系統(tǒng)監(jiān)控進(jìn)程(SMON)、進(jìn)程監(jiān)控進(jìn)程(PMON)、數(shù)據(jù)庫寫進(jìn)程(DBWn)、日志寫進(jìn)程(LGWR)、檢查點(diǎn)進(jìn)程(CKPT)、全局隊(duì)列監(jiān)控進(jìn)程(LMON)、歸檔進(jìn)程(ARCH)、封鎖進(jìn)程(LCKn)、分布式數(shù)據(jù)庫恢復(fù)進(jìn)程(RECO)等。
數(shù)據(jù)庫存儲信息主要依靠控制文件、日志文件、數(shù)據(jù)文件[6]。數(shù)據(jù)庫表空間可以存儲數(shù)據(jù)文件,數(shù)據(jù)庫默認(rèn)存在 6個表空間,分別是 EXAMPLE、SYSAUX、SYSTEM、TEMP、UNDOTBS1、USERS。
數(shù)據(jù)庫中使用事務(wù)和鎖保證數(shù)據(jù)庫中數(shù)據(jù)一致性,防止出現(xiàn)錯誤數(shù)據(jù)。事務(wù)是一組包含一條或多條語句的邏輯單元[7],為實(shí)現(xiàn)事務(wù)之間的并發(fā)執(zhí)行,引入鎖機(jī)制。鎖按照模式分為排他鎖和共享鎖,按照作用對象分為DML鎖(分為行級鎖和表級鎖)、DDL鎖、內(nèi)部閂鎖。某些情況下,由于占用資源不及時釋放,造成鎖等待,嚴(yán)重影響數(shù)據(jù)庫性能。特殊情況下,兩個會話互相占用資源,會造成死鎖。
2.1 數(shù)據(jù)庫故障原因分類
經(jīng)過對大量企業(yè)數(shù)據(jù)庫故障案例的分析總結(jié),將數(shù)據(jù)庫故障原因分為性能原因、SQL語句設(shè)計(jì)原因、參數(shù)配置原因、網(wǎng)絡(luò)原因、運(yùn)行原因、軟件bug原因、硬件原因等。
2.1.1 性能原因
性能原因[8],是指數(shù)據(jù)庫設(shè)計(jì)的資源容量與實(shí)際承載的業(yè)務(wù)量不匹配引起的數(shù)據(jù)庫故障,是最為普遍的情況,此類問題主要是由于對業(yè)務(wù)量需求評估不準(zhǔn)確或未隨用戶需求進(jìn)行動態(tài)擴(kuò)容造成,主要體現(xiàn)在訪問連接數(shù)、進(jìn)程、內(nèi)存、I/O、表空間、日志空間、鎖等方面[9-10]。具體情況主要包括:連接數(shù)資源不足造成應(yīng)用程序無法與數(shù)據(jù)庫建立連接,導(dǎo)致用戶無法使用數(shù)據(jù)庫;數(shù)據(jù)庫創(chuàng)建進(jìn)程需要內(nèi)存、CPU、I/O等資源支持,CPU、內(nèi)存、I/O等資源不足導(dǎo)致進(jìn)程執(zhí)行緩慢甚至中止,嚴(yán)重時數(shù)據(jù)庫自動關(guān)閉或保護(hù)性自動重啟;表空間或歸檔空間不足、磁盤空間不足等造成數(shù)據(jù)庫響應(yīng)緩慢甚至自動關(guān)閉等。
2.1.2 SQL語句設(shè)計(jì)原因
SQL語句設(shè)計(jì)原因,是指因SQL查詢語句低效或SQL查詢語句設(shè)計(jì)考慮不周引起的數(shù)據(jù)庫故障,也是較為常見的情況,此類問題主要是由于建設(shè)期間代碼設(shè)計(jì)不合理造成。具體情況主要包括:SQL語句效率低下、未建立表索引、對大數(shù)據(jù)量表進(jìn)行全表掃描等情況造成 SQL語句消耗大量的數(shù)據(jù)庫內(nèi)存、I/O等資源,或產(chǎn)生進(jìn)程鎖等待,數(shù)據(jù)庫性能快速下降造成數(shù)據(jù)庫響應(yīng)緩慢或自動關(guān)閉;SQL查詢語句執(zhí)行時間過長,應(yīng)用程序不能及時釋放與數(shù)據(jù)庫的連接,導(dǎo)致連接數(shù)被占滿,應(yīng)用程序無法再與數(shù)據(jù)庫新建連接;SQL語句錯誤導(dǎo)致發(fā)生循環(huán)產(chǎn)生日志文件等異常情況,造成磁盤空間快速被占滿,數(shù)據(jù)庫自動關(guān)閉;SQL語句未能屏蔽用戶輸入的錯誤字符,導(dǎo)致用戶輸入非法字符時,數(shù)據(jù)庫運(yùn)行崩潰等。
2.1.3 參數(shù)配置原因
參數(shù)配置原因,是指由于參數(shù)等配置不恰當(dāng)引起的數(shù)據(jù)庫故障,也是較為常見的情況,此類問題主要是由于運(yùn)維工作不到位造成,主要包括賬號權(quán)限、密碼期限、license、環(huán)境變量、SCN headroom值等配置錯誤。具體情況主要包括:數(shù)據(jù)庫的密碼變更,但操作系統(tǒng)、應(yīng)用程序中的策略未同步調(diào)整,導(dǎo)致數(shù)據(jù)庫無法登錄;數(shù)據(jù)庫密碼設(shè)置了有效期限,但未在到期前更換密碼,導(dǎo)致數(shù)據(jù)庫無法登錄;環(huán)境變量配置錯誤,導(dǎo)致數(shù)據(jù)庫可遠(yuǎn)程登錄卻無法在本機(jī)操作系統(tǒng)登錄;數(shù)據(jù)庫間采用DB-Link的互連方式,使多臺數(shù)據(jù)庫之間時間戳互相傳染,部分?jǐn)?shù)據(jù)庫SCN headroom值快速降低,導(dǎo)致數(shù)據(jù)庫存在宕機(jī)危險(xiǎn)。
2.1.4 其它原因?qū)е碌臄?shù)據(jù)庫故障
運(yùn)行原因,是指數(shù)據(jù)庫長時間運(yùn)行后產(chǎn)生的故障。包括:數(shù)據(jù)庫長期運(yùn)行,發(fā)生文件有壞塊情況,當(dāng)損壞的文件讀入到內(nèi)存后,內(nèi)存中產(chǎn)生邏輯壞塊,導(dǎo)致數(shù)據(jù)庫自動重啟;數(shù)據(jù)庫集群仲裁機(jī)制踢出某臺故障數(shù)據(jù)庫而重啟集群等。
網(wǎng)絡(luò)原因,是指由于網(wǎng)絡(luò)、通信問題引起的數(shù)據(jù)庫故障。包括:數(shù)據(jù)庫由于 Linux操作系統(tǒng)與Oracle版本不兼容導(dǎo)致IPC通信失敗,數(shù)據(jù)庫后臺進(jìn)程自動關(guān)閉實(shí)例;存儲鏈路抖動,導(dǎo)致 I/O占用高,數(shù)據(jù)庫響應(yīng)緩慢等。
硬件原因,是指由于數(shù)據(jù)庫板卡等硬件損壞引起的數(shù)據(jù)庫故障,如硬盤、HBA卡故障等。包括:數(shù)據(jù)庫連接心跳的網(wǎng)線松動,造成數(shù)據(jù)庫心跳帶寬下降,引起數(shù)據(jù)庫腦裂;數(shù)據(jù)庫HBA卡硬件故障,造成數(shù)據(jù)庫服務(wù)器訪問存儲設(shè)備異常,無法讀寫數(shù)據(jù)文件等。
軟件bug原因,是指因某種情況觸發(fā)了數(shù)據(jù)庫自身bug引起的數(shù)據(jù)庫故障。包括:運(yùn)行程序或SQL語句執(zhí)行時觸發(fā)數(shù)據(jù)庫 bug,造成數(shù)據(jù)庫相關(guān)進(jìn)程異常關(guān)閉;數(shù)據(jù)庫網(wǎng)關(guān)程序觸發(fā) bug,導(dǎo)致數(shù)據(jù)庫服務(wù)器虛擬地址失效,無法正常提供服務(wù);磁盤組管理軟件ASM Lib包存在bug,導(dǎo)致數(shù)據(jù)庫無法掛載磁盤組,無法正常啟動;數(shù)據(jù)庫Bug引起監(jiān)聽異常,導(dǎo)致數(shù)據(jù)庫自身正常運(yùn)行時外圍系統(tǒng)或客戶端無法連接;數(shù)據(jù)庫bug導(dǎo)致數(shù)據(jù)庫集群keepalive進(jìn)程異常停止,數(shù)據(jù)庫無法ping通,應(yīng)用無法連接數(shù)據(jù)庫;I/O異常情況下數(shù)據(jù)庫 LMON進(jìn)程觸發(fā)了Bug,引起LMON進(jìn)程性能大幅下降,導(dǎo)致數(shù)據(jù)庫服務(wù)異常等。
2.2 數(shù)據(jù)庫故障現(xiàn)象歸納
經(jīng)過對大量企業(yè)數(shù)據(jù)庫故障案例的分析總結(jié),數(shù)據(jù)庫故障現(xiàn)象主要包括應(yīng)用程序無法與數(shù)據(jù)庫建立連接、數(shù)據(jù)庫響應(yīng)時間過長、數(shù)據(jù)庫自動關(guān)閉、數(shù)據(jù)庫自動重啟、數(shù)據(jù)庫無法登錄、數(shù)據(jù)庫ping不通、數(shù)據(jù)庫服務(wù)器指示燈告警等。
Oracle數(shù)據(jù)庫基礎(chǔ)運(yùn)維操作主要包括內(nèi)存分配監(jiān)控,進(jìn)程管理、會話管理等[11]。
可通過查詢V$SGAINFO視圖,查找當(dāng)前實(shí)例分配的SGA詳細(xì)信息,查看SGA分配情況;通過V$PGASTAT視圖,查詢PGA詳細(xì)信息,查看PGA分配情況;通過V$PROCESS視圖,監(jiān)控PGA分配與進(jìn)程相關(guān)信息;通過 V$MEMORY_DYNAMIC_COMPONENTS視圖,查詢動態(tài)SGA+PGA分配信息;通過V$PROCESS視圖和V$BGPROCESS視圖查詢正在運(yùn)行的進(jìn)程信息;通過跟蹤路徑查看該路徑所記錄的跟蹤文件的名稱,去查找錯誤進(jìn)程信息;通過v$statname和v$sesstat視圖查看各進(jìn)程消耗的資料,如CPU、占用內(nèi)存等;通過V$SESSIO視圖查看整個會話相關(guān)信息,包括前臺和后臺會話信息,找出非活動狀態(tài)會話和會話正在執(zhí)行的SQL語句和阻塞會話等;通過 V$TRANSACTION視圖查詢事務(wù)狀態(tài),找出未提交事務(wù)。
3.2 數(shù)據(jù)庫性能調(diào)整與故障診斷操作
Oracle數(shù)據(jù)庫性能調(diào)整與故障診斷操作主要是借助性能視圖,包括SQL語句實(shí)時監(jiān)控、會話歷史與性能診斷、SQL語句性能診斷、內(nèi)存調(diào)整、I/O效率診斷等操作。
可通過V$SESSION、V%SQLAREA、V$SQL視圖,查詢正在執(zhí)行的SQL語句信息,包括會話信息、操作對象,獲取 SQL語句等待時間;可通過 V$SESSION_LONGOPS視圖,查詢長時間運(yùn)行的應(yīng)用信息,包括會話信息、已用去時間、還需要運(yùn)行時間等;可通過 V$SQL_MONITOR視圖監(jiān)控長時間運(yùn)行的SQL語句;可通過V$SESSION與V$SESSTAT視圖查詢使用CPU最高的會話;通過V$STATNAME、V$SESSTAT視圖統(tǒng)計(jì)會話消耗資料信息,如CPU、I/O、物理讀取、邏輯讀取、排序操作等信息;通過V$ACTIVE_SESSION_HISTORY視圖查詢5分鐘前等待的歷史會話數(shù)據(jù),獲取頂級會話等待等數(shù)據(jù),獲取使用CPU高的SQL語句;通過X$BH視圖與DBA_OBJECTS數(shù)據(jù)字典找出占用內(nèi)存大的對象;通過V$SQL視圖找出反應(yīng)最慢的SQL語句。
4.1 數(shù)據(jù)庫故障診斷思路
試驗(yàn)在眉山中車緊固件科技有限公司完成。轉(zhuǎn)向架制動杠桿1、2鉚接位置預(yù)先鉚接完成,試驗(yàn)的檢測對象為轉(zhuǎn)向架制動杠桿的4個鉚接位置(3、4、5、6號位置)的鉚接狀態(tài)。
針對應(yīng)用程序無法連接數(shù)據(jù)庫的情況,依次從數(shù)據(jù)庫連接池、數(shù)據(jù)庫響應(yīng)速度、數(shù)據(jù)庫賬號權(quán)限、數(shù)據(jù)庫是否已自動關(guān)閉或重啟等方面繼續(xù)排查;數(shù)據(jù)庫響應(yīng)緩慢情況最為常見,主要是性能原因?qū)е?;賬號權(quán)限、連接池資源等問題排查和處置較為簡單;數(shù)據(jù)庫自動關(guān)閉或自動重啟情況,往往是由于SMON、PMON、LMON等后臺進(jìn)程遇到意外情況主動中止實(shí)例導(dǎo)致,可繼續(xù)從硬件、性能、運(yùn)行、參數(shù)或網(wǎng)絡(luò)等方面排查;若以上情況都不是,則是較為少見的原因造成,需進(jìn)一步分析。
4.2 數(shù)據(jù)庫故障排查診斷常用方法
對于數(shù)據(jù)庫故障,應(yīng)急情況下可進(jìn)行數(shù)據(jù)庫重啟進(jìn)行臨時處置,后續(xù)再根據(jù)診斷出的故障原因,采取不同的整改解決措施。對于性能原因,可考慮邏輯層面、容器層面、存儲結(jié)構(gòu)、環(huán)節(jié)層面的優(yōu)化[12],可考慮利用鎖分散、排隊(duì)等機(jī)制優(yōu)化,可通過資源配置優(yōu)化、資源擴(kuò)容解決;對于SQL語句問題,可通過優(yōu)化SQL語句效率解決;對于參數(shù)配置原因,可通過調(diào)整參數(shù)設(shè)置解決;對于運(yùn)行原因,可臨時通過重啟方法解決;對于硬件原因,可通過更換硬件解決;對于軟件bug原因,可通過對升級數(shù)據(jù)庫版本或打補(bǔ)丁解決。
4.3 數(shù)據(jù)庫故障排查診斷工具
可通過查看數(shù)據(jù)庫自帶的工具了解數(shù)據(jù)庫的運(yùn)行狀態(tài),進(jìn)行故障排查診斷,如數(shù)據(jù)庫AWR、ASH、ADDM、SQL Profile、SQL Monitor、網(wǎng)管告警等[13]。
5.1 內(nèi)存資源不足引起數(shù)據(jù)庫故障的案例
2016年1月,某應(yīng)用系統(tǒng)的數(shù)據(jù)庫服務(wù)器無法連接,某應(yīng)用系統(tǒng)監(jiān)測指標(biāo)開始丟失。首先通過SSH方式、telnet方式連接數(shù)據(jù)庫失敗,初步判定為AIX操作系統(tǒng)出現(xiàn)問題。進(jìn)入機(jī)房使用 HMC工具通過console連接方式登錄操作系統(tǒng),可正常登錄到操作系統(tǒng)。查看AIX系統(tǒng)的錯誤日志,發(fā)現(xiàn)Oracle數(shù)據(jù)庫已經(jīng)不能分配內(nèi)存(包括 swap)。查看數(shù)據(jù)庫的告警日志,發(fā)現(xiàn)數(shù)據(jù)庫進(jìn)程由于操作系統(tǒng)沒有足夠內(nèi)存(包括swap)停止了,進(jìn)而導(dǎo)致程序發(fā)生錯誤和崩潰。查看ASM實(shí)例故障日志,Oracle ASM實(shí)例報(bào)出內(nèi)存不足導(dǎo)致進(jìn)程啟動失敗。經(jīng)分析,本次故障原因?yàn)閿?shù)據(jù)庫服務(wù)器物理內(nèi)存和SWAP內(nèi)存耗盡,導(dǎo)致操作系統(tǒng)夯住。該服務(wù)器物理內(nèi)存為256GB,SWAP為 32GB,數(shù)據(jù)庫(SGA+PGA)即占用157GB以上,由于AIX操作系統(tǒng)的maxperm%參數(shù)和maxclient%參數(shù)采用默認(rèn)值90,即文件最大可以占用內(nèi)存的90%(256*90%=230G),當(dāng)緩存文件量較大時,導(dǎo)致物理內(nèi)存與SWAP均耗盡。為盡快恢復(fù)業(yè)務(wù),開展應(yīng)急處置,對操作系統(tǒng)、數(shù)據(jù)庫和集群進(jìn)行重啟,重啟后應(yīng)用系統(tǒng)恢復(fù)正常。為防止故障再次出現(xiàn),調(diào)整AIX操作系統(tǒng)maxperm%為5(256*5%=12.75GB),maxclient%為 5。
5.2 SQL語句不合理引起數(shù)據(jù)庫故障的案例
2016年1月,某應(yīng)用系統(tǒng)的監(jiān)測指標(biāo)丟失。登陸到應(yīng)用節(jié)點(diǎn)服務(wù)器查看日志,發(fā)現(xiàn)報(bào)連接池滿的錯誤。登陸到數(shù)據(jù)庫服務(wù)器節(jié)點(diǎn)1查看日志,發(fā)現(xiàn)中間件連接數(shù)已達(dá)到上限,應(yīng)用程序無法從數(shù)據(jù)庫中取數(shù)。排查數(shù)據(jù)庫 AWR報(bào)告,發(fā)現(xiàn)該時段存在兩條資源占用較高的復(fù)雜的SQL語句,該兩條語句均對同一張數(shù)據(jù)庫表采用模糊查詢,進(jìn)行全表掃描,經(jīng)查詢,該數(shù)據(jù)庫表中的數(shù)據(jù)記錄已達(dá)到5.4億條,執(zhí)行全表查詢耗時較長,數(shù)據(jù)庫在執(zhí)行語句過程中無法及時響應(yīng)。用戶頻繁點(diǎn)擊,將相關(guān)表、視圖不斷鎖定,資源無法及時釋放,Weblogic數(shù)據(jù)庫連接池占滿。為盡快恢復(fù)業(yè)務(wù),進(jìn)行應(yīng)急處置,調(diào)大中間件連接數(shù)臨時解決故障。為防止故障再次出現(xiàn),新建表索引,優(yōu)化查詢功能模塊SQL語句,并增加了限制用戶頻繁重復(fù)點(diǎn)擊功能。
5.3 內(nèi)存參數(shù)配置不當(dāng)引起數(shù)據(jù)庫故障的案例
2016年3月,某應(yīng)用系統(tǒng)的監(jiān)測指標(biāo)丟失。發(fā)現(xiàn)數(shù)據(jù)庫服務(wù)器節(jié)點(diǎn)2和節(jié)點(diǎn)3實(shí)例為stop狀態(tài)。排查本地Weblogic日志,發(fā)現(xiàn)JDBC連接失敗,導(dǎo)致I/O錯誤。排查Oracle數(shù)據(jù)庫日志,發(fā)現(xiàn)數(shù)據(jù)庫進(jìn)程因未知原因中斷,導(dǎo)致數(shù)據(jù)庫實(shí)例 down掉。從操作系統(tǒng)的HugePage內(nèi)存信息中看到,原本是要分配215040個大內(nèi)存塊,可實(shí)際上只分配了21243個大內(nèi)存塊。經(jīng)查,故障原因?yàn)榇髢?nèi)存塊分配錯誤,導(dǎo)致數(shù)據(jù)庫實(shí)例的SGA分配不足,數(shù)據(jù)庫實(shí)例非正常 down掉。為盡快恢復(fù)業(yè)務(wù),進(jìn)行應(yīng)急處置,重啟數(shù)據(jù)庫實(shí)例,應(yīng)用系統(tǒng)的監(jiān)控指標(biāo)恢復(fù)正常。為防止故障再次出現(xiàn),調(diào)整HugePage內(nèi)存分配配置,具體步驟為,停止數(shù)據(jù)庫實(shí)例,修改內(nèi)核參數(shù),添加 vm.nr_hugepages,編輯/etc/sysctl.conf文件,使內(nèi)核參數(shù)生效,啟動數(shù)據(jù)庫實(shí)例。
5.4 bug引起數(shù)據(jù)庫故障的案例
2016年3月,某應(yīng)用系統(tǒng)的數(shù)據(jù)庫實(shí)例1無法連接,應(yīng)用系統(tǒng)的監(jiān)測指標(biāo)丟失。登錄數(shù)據(jù)庫服務(wù)器節(jié)點(diǎn)1,發(fā)現(xiàn)該數(shù)據(jù)庫實(shí)例1正在自動重啟。排查數(shù)據(jù)庫實(shí)例1 alert告警日志,出現(xiàn)數(shù)據(jù)庫進(jìn)程hang告警,實(shí)例1日志出現(xiàn)ASM連接錯誤告警以及無法分配共享內(nèi)存資源告警。經(jīng)查詢 Oracle官方文檔,該異常為內(nèi)存資源(share pool)占用時間過長,導(dǎo)致資源耗盡并觸發(fā)了BUG(13914613),引發(fā)數(shù)據(jù)庫實(shí)例自動重啟。數(shù)據(jù)庫實(shí)例自動重啟后,應(yīng)用系統(tǒng)恢復(fù)正常。為防止故障再次出現(xiàn),升級數(shù)據(jù)庫軟件版本。
本文結(jié)合某大型企業(yè)信息系統(tǒng)運(yùn)維工作實(shí)踐,收集了大量關(guān)于信息系統(tǒng)數(shù)據(jù)庫故障的案例,結(jié)合數(shù)據(jù)庫內(nèi)部架構(gòu),研究了故障原因與故障現(xiàn)象的關(guān)聯(lián)關(guān)系和故障機(jī)理,創(chuàng)新采用逆向思維和聚焦收斂分析方式,提出了故障原因分類體系,并給出實(shí)用運(yùn)維操作和典型故障案例,為運(yùn)維人員快速診斷分析定位數(shù)據(jù)庫故障點(diǎn)提供了參考。本方法符合企業(yè)信息系統(tǒng)運(yùn)維工作實(shí)際需求,具有廣闊的實(shí)用價值和應(yīng)用前景。下一步,還將結(jié)合深度學(xué)習(xí)、人工神經(jīng)網(wǎng)絡(luò)等方法開展數(shù)據(jù)庫故障自動診斷分析研究工作,不斷提升信息系統(tǒng)運(yùn)維自動化、智能化水平。
[1] 賀鵬程. 基于Oracle的數(shù)據(jù)庫性能優(yōu)化研究[J]. 電子設(shè)計(jì)工程, 2016, 24(9): 1-3.
[2] 王曉軍. Oracle數(shù)據(jù)庫性能調(diào)整與優(yōu)化技術(shù)分析[J]. 通訊世界, 2015, 10: 198-199.
[3] 李鵬. IT運(yùn)維之道[M]. 北京: 人民郵電出版社. 2016.
[4] 胡晨光, 徐楠楠. Oracle數(shù)據(jù)庫共享池空間管理調(diào)優(yōu)[J]. 現(xiàn)代電子技術(shù), 2015, 4: 69-72.
[4] 陳靜, 范乃吉, 袁曉東, 蔣一嵐. Matlab環(huán)境下的Oracle數(shù)據(jù)庫訪問技術(shù)[J]. 計(jì)算機(jī)應(yīng)用, 2015, S1: 78-82.
[5] 劉文娟, 陳永勝. 淺析HP小型機(jī)上Oracle數(shù)據(jù)庫內(nèi)存使用[J]. 科技信息, 2009, 33: 59-59.
[6] 秦靖, 劉存勇. Oracle從入門到精通[M]. 北京: 機(jī)械工業(yè)出版社, 2016.
[7] 何洪舟. Java程序中訪問Oracle數(shù)據(jù)庫的技術(shù)分析與實(shí)現(xiàn)[J]. 計(jì)算機(jī)應(yīng)用與軟件, 2007, 24(5):79-80.
[8] 李智慧. 大型網(wǎng)站技術(shù)架構(gòu):核心原理與案例分析[M]. 北京: 電子工業(yè)出版社, 2013
[9] 劉鐵軍, 張宏利. 數(shù)據(jù)庫故障及容錯對策[J]. 工業(yè)技術(shù)經(jīng)濟(jì), 2005, 6: 127-127.
[10] 趙元杰. Oracle數(shù)據(jù)庫管理員日常操作手冊[M].北京: 電子工業(yè)出版社, 2015
[11] 高揚(yáng), 衛(wèi)崢, 尹會生. 白話大數(shù)據(jù)與機(jī)器學(xué)習(xí)[M]. 北京:機(jī)械工業(yè)出版社, 2016
[12] 楊建榮. Oracle DBA工作筆記: 運(yùn)維、數(shù)據(jù)遷移與性能調(diào)優(yōu)[M]. 北京: 中國鐵道出版社, 2016
Research on Failure Analysis and Operational Maintenance focused on Enterprise Databases: an Example on Oracle
JIN Xin1, YAN Long-chuan1, LIU Jun1, GENG Liang2
(1. State Grid Information & Telecommunication Branch, Beijing 100761, China;2. Global Energy Interconnection Group Co., Ltd., Beijing 100031, China)
Database is the core component of information system, database failure is the main factor of information system failure, database operation and maintenance is the focus of information system operation and maintenance work. Based on the Oracle database architecture analysis and deep research on failure mechanism, innovatively proposed fault classification system, put forward the practical operation and maintenance operation method,given the typical case of database failure, and provided system methodology for the information system operation and maintenance staff to do the work of database operation and maintenance.
: Oracle; Database failures; Diagnosis and analysis;
TP319
A
10.3969/j.issn.1003-6970.2017.10.035
本文著錄格式:金鑫,閆龍川,劉軍,等. 面向企業(yè)級數(shù)據(jù)庫的故障分析及運(yùn)維研究:以O(shè)racle數(shù)據(jù)庫為例[J].軟件,2017,38(10):178-181
金鑫(1985-),女,國家電網(wǎng)公司信息通信分公司職員,工程師,主要從事信息運(yùn)維工作;閆龍川(1979-),男,國家電網(wǎng)公司信息通信分公司處長,高級工程師,主要從事信息運(yùn)維工作;劉軍(1970-),男,國家電網(wǎng)公司信息通信分公司主任,高級工程師,主要從事信息通信運(yùn)維管理工作;耿亮(1985-),男,全球能源互聯(lián)網(wǎng)集團(tuán)有限公司職員,工程師,主要從事能源研究工作。