楊浩
摘 要:民航氣象數據庫系統是民航氣象業務的核心信息系統,其24小時不間斷的運轉保證了氣象業務的正常開展,本文重點闡述了數據庫系統設備巡檢的內容。
關鍵詞:民航氣象數據庫系統;巡檢;AIX;故障處理
引言
民航數據庫系統是民航氣象業務的核心信息系統,它采用一套分級的,包含發送、請求、響應、回復、轉發等多種功能的,復雜的數據交換模式,實現了實時收集、處理、儲存、交換民航國內、國際飛行所需的綜合航空氣象情報信息的功能,提供給用戶氣象資料自動分析和制作等功能,為航空氣象用戶提供航空氣象產品[1]。
1配置分析
民航氣象數據庫系統分為三級體系架構,每一級根據業務處理能力的實際需求進行不同的配置,同級間則采用了相同的配置。本場屬于民航氣象第三級數據庫系統,系統由一臺ibm system p520 作為數據庫服務器,一臺ibm system p520 作為應用服務器,一臺DELL OPTIPLEX 745作為通信服務器,采用cisco2960 交換機作為本地網絡的核心交換機,通過cisco2851 路由器與所在地區氣象中心數據庫相連,利用cisco pix 515e 作為安全隔離。在數據庫服務器和應用服務器上,均安裝了AIX操作系統并搭配目前功能最強大的ORACLE數據庫,而通信服務器則安裝了Linux操作系統[2]。
2數據庫主機系統、網絡系統與數據庫巡檢
通過本場一次氣象數據庫系統硬盤自身驅動器監控報錯故障處理分析,結合AIX系統管理技術學習,總結出了民航氣象數據庫系統在維護時對主機系統、網絡系統、數據庫進行巡檢的方法及命令總結,以便發現問題及時處理。在巡檢中可以使用工具Secure CRT,它的記錄功能非常實用,方便對巡檢過程進行保存和后期檢查。
2.1主機系統
針對濟南本場的情況,數據庫系統主機系統的巡檢包括了數據庫服務器DB00、數據庫服務器DB01、通信服務器,其中數據庫服務器安裝的是AIX操作系統,通信服務器安裝的是Linux操作系統。
2.1.1數據庫服務器的巡檢內容
(1)用命令errpt查看日常報錯,一旦系統的某個功能模塊檢測到一個錯誤或定義的需要記錄日志的事件,則記錄到/dev/error,錯誤進程errdemon從/dev/error文件中讀取錯誤日志,然后根據錯誤模板庫(/var/adm/ras/errtmpit)和錯誤消息庫(/usr/lib/nls/msg/$LANGcodedepoint.cat)對其進行處理后寫入系統的錯誤日志/var/adm/ras/errlog中,正常情況下錯誤進程errdemon處于開啟狀態,當使用more或者其他文本的查看命令來打開errlog文件,看到的只有亂碼,為了能夠查看日志,需要使用errpt命令,命令執行后輸出的六列內容分別為錯誤標示符、時間戳、類型、種類、資源名和描述。
當需要查看詳細報錯內容時,需要輸入指令errpt –aj +錯誤代碼。在軟件錯誤日志中的故障原因(Failure Causes)通常是指一個軟件缺點,如果有用戶原因(User Causes)或安裝原因(Install Causes)或二者都有,而沒有故障原因,那么問題通常不是軟件的缺點。而對硬件設備進行診斷的時候,最常用的是并發模式下診斷硬件設備,在root用戶下使用diag命令進入診斷主菜單,按照現場情況采用Diagnostic Routines和Advanced Diagnostic Routines進行硬件檢測。需要注意的是在做diag診斷時,并發模式下是比較危險的,可以選擇停止服務器的服務和業務后再做,可以避免可能出現的系統崩潰問題[3]。
用戶原因(User Causes)、安裝原因(Install Causes)和故障原因(Failure Causes)只是一般的建議,更換部件則需要根據診斷和對錯誤日志的分析結果來確定。
(2)用命令lsvg –l rootvg查看系統rootvg內的每個邏輯卷的以下信息,LV:卷組內的一個邏輯卷;Type:邏輯卷類型;LPs:邏輯卷中的邏輯分區數;PPs:邏輯卷使用的物理分區數;PVs:邏輯卷使用的物理卷數;Logical volume state:邏輯卷的狀態;Opened/stale:表示邏輯卷是打開的但包含的分區不是當前的;Opened/syncd:表示邏輯卷是打開和同步的,Closed 表示邏輯卷還沒有打開;Mount point:邏輯卷的文件系統安裝點。
(3)用命令topas查看系統CPU使用率和工作狀態,具體每項內容分為Kernel:
操作系統的內核占用的CPU時間比率;User:用戶進程占用的CPU時間比率;Wait:CPU處于等待狀態占CPU時間的比率;Idle:CPU空閑時間比率。Real:MB操作系統實際擁有的內存的總量,單位是MB;%Comp,計算型內存占用比率;%Noncomp非計算型內存占用的比率;%Client也為非計算型內存,Noncomp包涵Client型內存,jfs文件系統使用的內存為noncomp,為了區分,jfs2和nfs使用的內存為Client。
(4)用命令df –g以G為單位查看磁盤使用率,當一個文件系統空間被占滿之后,就會導致大量的問題出現,甚至系統崩潰,因此最好要避免這種情況的發生。
(5)用命令lsps –a查看內存交換區使用率,濟南本場情況為運行時間5個月的服務器,2G內存基本耗盡,交換分區使用了百分之三十至四十,重啟后降至百分之十,在系統內存耗盡并且交換分區使用率達到百分之八十以上時,系統崩潰的可能性增大,需要考慮增加物理內存。
(6)用命令svmon查看系統內存使用率。在非常繁忙的系統中,svmon收集的數據和真實的數據會有所差距,因為svmon使用的全是VMM中的數據,而在svmon進程搜集的過程中,VMM(虛存管理器)可能已經發生改動了。
在使用svmon命令時,也可以增加參數來輸出需要的更為詳細的內容,例如svmon –G是全局統計信息,svmon –U root oracle –w是輸出只考慮工作段的用戶 root 和 steve 的內存使用統計信息等。
(7)用命令lspv 硬盤名(例如hisk0)主要用來顯示卷組(Volume)中的物理卷(PV,Physical Volume)信息,在輸出信息中需要關注硬盤是否有陳舊(stale)塊,若存在陳舊分區、邏輯卷或物理卷,可以嘗試使用syncvg命令來同步它們。
(8)網絡巡檢主要利用命令:ifconfig –a;netstat –rn;netstat –i,依次檢查所有網絡接口的信息、核心路由表、通過接口傳送數據包的數量以及輸入/輸出的錯誤數。
2.1.2通信服務器的巡檢內容
(1)用命令df –h以GB,MB,KB等查看磁盤利用率。linux文件系統的內核在識別和使用文件系統時需要利用virtual filesystem switch(虛擬文件系統)來讀取文件系統,也就是說整個LINUX的文件系統都是VFS在進行管理的,我們用戶并不需要知道每個分區上頭的文件系統是什么,VFS會主動幫我們做好讀取工作,有了VFS我們可以不用去指定讀取的是哪一個文件系統,只需要輸入指令進行查看即可。
(2)用命令top可以查看系統的狀態,比如CPU、內存的使用。具體輸出內容包括當前系統時間、登陸系統的用戶數量、負載情況、任務進程、CPU狀態、內存狀態、swap交換分區狀態內存總量以及各個進程的狀態監控。另外,使用free命令也可以查看swap交換分區使用率。
(3)MQ應用方面巡檢,需要查看通道狀態使用命令showchl,正常狀態應顯示:Running,若未啟動,則需要使用命令runmqchl進行啟動。查看隊列狀態使用命令showque,正常狀態應顯示:0,如隊列有積壓,則檢查通道狀態。
(4)使用ifconfig –a;netstat –rn;netstat –i命令依次檢查配置信息、路由表、網絡接口情況,對網絡進行巡檢。
2.2網絡系統
民航數據庫系統網絡系統巡檢需要檢查的內容包括了交換機cisco3750、路由器cisco2851和防火墻pix515,下面針對濟南本場具體情況結合需要的命令進行介紹。
2.2.1檢查cpu使用率
在交換機和路由器中,使用命令show processes cpu可以輸出CPU在最后5秒的使用率、最后1分鐘的使用率和最后5分鐘的使用率,同時顯示正在運行的進程狀態。在防火墻中則需要使用命令show cpu usage。
2.2.2檢查內存使用率
在交換機、路由器和防火墻中均使用show memory命令查看內存使用率,具體輸出內容為使用內存情況的統計信息,包括空閑池統計信息。
2.2.3設備電源及風扇
在交換機和路由器中使用show env temp命令可以查看設備電源、風扇、溫度,其中交換機需要注意RPS正確顯示為NOT PRESENT。
2.2.4檢查log日志
在交換機、路由器和防火墻中均使用show log命令檢查log日志,主要包括了Syslog logging、Console logging、Monitor logging、Buffer logging、Trap logging幾個項目。
2.3數據庫
本部分介紹ORACLE數據的檢查內容,專門列出了數據庫狀態、告警日志文件、數據庫連接、數據文件的狀態、表空間使用情況和數據庫等待事件的檢查方法及命令。
2.3.1檢查數據庫狀態
確認所有的INSTANCE狀態以及listener狀態正常,登陸到所有數據庫或實例,檢測ORACLE后臺進程,RAC狀態等。具體命令分別為oracle@ZSJN $ps -ef|grep ora;oracle@ZSJN $lsnrctl status;SQL>select status from V$instance。
2.3.2檢查告警日志文件
數據庫發生的錯誤,如表空間不夠、出現壞塊、數據庫內部錯誤(ORA-600)定期檢查日志文件,根據日志中發現的問題及時進行處理;包括alert,trc,listener日志其中alert位置:/u0/oracle/admin/ ZSJN /bdump;trc位置:/u0/oracle/admin/ ZSJN /bdump;listener位置:/u0/oracle/product/10.2.0/db/network/log。
2.3.3檢查數據庫連接信息
定時對數據庫的連接情況進行檢查,看與數據庫建立的會話數目是不是正常,如果建立了過多的連接,會消耗數據庫的資源。同時,對一些“掛死”的連接,可能需要手工進行清理。利用命令SQL>select count(*)from v$session;和SQL>select sid,username,program,status from v$session;進行檢查。
2.3.4檢查數據文件的狀態
如果數據文件的STATUS列不是AVAILABLE,那么就要采取相應的措施,如對該數據文件進行恢復操作,或重建該數據文件所在的表空間。參考命令
SQL>select file_name,status from dba_data_files;
SQL>select count(*)from dba_data_files;
SQL>select count(*)from dba_data_files;
2.3.5檢查表空間使用情況
檢查表空間使用情況的命令是SQL>select f.tablespace_name,a.total,f.free,round((f.free/a.total)*100)"% Free"
from(select tablespace_name,sum(bytes/(1024*1024))total from dba_data_files
group by tablespace_name)a,(select tablespace_name,round
(sum(bytes/(1024*1024)))free from dba_free_space group by tablespace_name)f WHERE a.tablespace_name=f.tablespace_name(+)order by "% Free"。
2.3.6檢查數據庫的等待事件
如果數據庫長時間持續大量像latch free,enqueue,buffer busy waits,db file sequential read,db file scattered read等等待事件時,需要對其進行分析,可能存在問題的語句。使用到的命令是SQL>select sid,event,p1,p2,p3,WAIT_TIME,SECONDS_IN_WAIT from v$session_wait where event not like 'SQL%' and event not like 'rdbms%'。
參考文獻
[1]梁帆. 民航氣象第三級數據庫系統管理維護和典型故障處理.硅谷.2011,24:124-125.
[2]張迪馨. 民航二期氣象數據庫系統主機維護經驗總結.空中交通管理.2007,08:45-46.
[3]于宇斌,IBM UNIX&Linux;—AIX 5L系統管理技術[M].北京:電子工業出版社.2005.
(作者單位:中國民用航空空中交通管理局華東地區山東分局)