摘要:針對oracle數(shù)據(jù)庫健康檢查,文章提出了一套較為科學全面的健康檢查方案,并分別給出了相關建議。通過對oracle數(shù)據(jù)庫運行狀況進行全面徹底檢查和分析,保障其健康運行。
關鍵詞:oracle數(shù)據(jù)庫;健康檢查;醫(yī)院管理管理信息系統(tǒng)
中圖分類號:TP311文獻標識碼:A文章編號:1009-2374(2009)10-0016-02
醫(yī)院管理管理信息系統(tǒng)(HIS)在醫(yī)院日常工作“扮演”著越來越重要的角色。數(shù)據(jù)庫理所當然的成為了重中之重。在我院信息系統(tǒng)日常管理維護過程中,對Oracle數(shù)據(jù)庫的管理工作特別重要。Oracle數(shù)據(jù)庫健康檢查的重點是醫(yī)院信息系統(tǒng)后臺使用的數(shù)據(jù)庫服務器。檢查中發(fā)現(xiàn)了一些Oracle數(shù)據(jù)庫存在一些問題,突出的是操作系統(tǒng)版本和補丁不一致,數(shù)據(jù)庫補丁不全面,用戶數(shù)據(jù)和系統(tǒng)數(shù)據(jù)共用系統(tǒng)表空間,數(shù)據(jù)庫用戶不正確授予DBA權限,存在無效對象等。這次數(shù)據(jù)庫健康檢查,發(fā)現(xiàn)并現(xiàn)場解決了一些問題,避免了隱患變?yōu)楣收?保證了數(shù)據(jù)庫的正常運行,取得了較好的效果。
下面簡要介紹有關oracle數(shù)據(jù)庫健康檢查的相關內容,以供DBA日常管理參考之用。
一、數(shù)據(jù)庫健康檢查的現(xiàn)實意義
數(shù)據(jù)庫健康檢查是采用一套規(guī)范、科學的方法,通過分析數(shù)據(jù)庫產生的日志文件、Trace文件、參數(shù)文件以及通過數(shù)據(jù)采集產生的Report文件,對數(shù)據(jù)庫本身的運行狀況進行全面徹底檢查和分析,發(fā)現(xiàn)潛在風險,及時提供相應的修補方案,防患于未然。
二、健康檢查的常用工具
1.UTLBSTAT/UTLESTAT.
2.STATSPACK.
3.第三方專業(yè)工具:Quest、VERITAS Precise產品、CA……
三、數(shù)據(jù)庫健康檢查的主要內容
對數(shù)據(jù)庫健康檢查,可以從以下幾個方面進行:(1)基礎信息檢查;(2)數(shù)據(jù)庫總體設計與規(guī)劃檢查;(3)重要參數(shù)的配置檢查;(4)日志文件檢查;(5)數(shù)據(jù)庫備份檢查。
(一)基礎信息檢查
檢查的內容主要包括數(shù)據(jù)庫服務器硬件配置狀況(CPU數(shù)目、內存大小等)、存儲(IO Controller數(shù)目、RAID、HD數(shù)目及大小等)、操作系統(tǒng)及版本信息、相關文件系統(tǒng)、Oracle數(shù)據(jù)庫版本信息等。相關建議:
1.常用檢查系統(tǒng)Unix/Linux命令為:Vmstat/Top/Iostat/Sar等。
2.峰值時內存使用,CPU利用率,磁盤I0都是非常重要的檢查監(jiān)控內容。
(二)數(shù)據(jù)庫總體設計與規(guī)劃檢查
數(shù)據(jù)庫的總體設計與規(guī)劃是系統(tǒng)維護和性能優(yōu)化的基礎,也是健康檢查的一個重點。檢查的主要內容包括以下幾方面:
1.數(shù)據(jù)庫的規(guī)劃檢查內容。主要是對Oracle安裝文件,控制文件,重做日志文件,歸檔日志文件,回滾段。相關建議:(1)為了安全一般建議創(chuàng)建多個控制文件,且分布在不同的硬盤上;(2)為了使系統(tǒng)性能更好可以創(chuàng)建多重做日志文件組,并建議重做日志文件最好放在最快的單獨磁盤上,以提高性能;(3)建議將數(shù)據(jù)文件、日志文件和控制文件的安置路徑與數(shù)據(jù)庫系統(tǒng)存放在不同的路徑上;(4)根據(jù)硬件設備具體情況,建議做到頻繁讀寫的文件和其他關鍵文件的負載平衡。
2.表空間和數(shù)據(jù)文件的相關檢查內容:主要檢查以下幾方面的內容:(1)System,Rollback,Temporary,Data,Index,Undo(針對9i)的表空間和數(shù)據(jù)文件的分布,利用率等情況;(2)表空間的碎片率;(3)數(shù)據(jù)文件的Corrupted Block(壞塊)檢查;(4)數(shù)據(jù)文件的I/O分布。
相關建議:(1)除系統(tǒng)之外的應用不要放在System表空間中。每個應用系統(tǒng)用戶都應該有自己的表空間;(2)所有的ORACLE用戶指定同一個Temporary Tablespace;(3)如有必要,可定時進行碎片合并工作。
3.表和索引的相關檢查內容。主要檢查以下幾方面的內容:(1)Table/Index的Pctfree,Pctused,Mintrans,Maxtrans參數(shù)是否設置;(2)Table/Index的Storage參數(shù)是否規(guī)劃;(3)大數(shù)據(jù)量的Table/Index是否做分區(qū)管理;(4)Table/Index的Analyze和Rebuild;(5)Chaining Row和Migration Row檢查;(6)Table/Index的Corrupted Block(壞塊)檢查。
相關建議:(1)Initial Extent應設計的足夠大,盡量能存放該表的所有數(shù)據(jù);對于數(shù)據(jù)量大的表,Next Extent也要設計的足夠大,以降低Oracle對空間的動態(tài)管理;(2)對于更新和插入操作頻繁的表,注意索引的創(chuàng)建和Initial值的設置;(3)對于頻繁使用的表,在數(shù)據(jù)量允許的條件下,可以考慮將其駐留內存,以提高對該表的訪問效率;(4)對INSERT比較頻繁的表,注意設置正確的freelists值;如果采用OPS數(shù)據(jù)庫,還需考慮freelist group的設置;(5)對于數(shù)據(jù)量很大的表,盡量采用表分區(qū)的技術;(6)選擇合理的索引字段,盡量避免用大字段建立索引;(7)均衡表上的索引數(shù)量,不要在表上創(chuàng)建太多的索引,避免Oracle大量維護索引數(shù)據(jù);(8)合理的使用索引,有些情況應避免使用索引,如對表中的數(shù)據(jù)量掃描超過10%。
4.Oracle其它對象檢查。Oracle數(shù)據(jù)庫中存儲的是各種對象,檢查數(shù)據(jù)對象的狀態(tài)在數(shù)據(jù)庫檢查維護中占有很高比例。需要檢查的對象主要有以下幾類:(1)Sequence檢查;(2)Trigger/ StoredProcedure Function、Package/View的狀態(tài)檢查;(3)Oracle User/Schema檢查;(4)DB Link檢查;(5)檢查失效的約束(dba_constraints)。
相關建議:(1)可以在視圖all_objects,dba_objects或user_objects中找出無效對象的信息。從all_errors視圖上也能看到狀態(tài)為”INVALID”(無效)的對象的詳細錯誤信息;(2)如果一個包或過程無效,下一次調用將拋出錯誤。通過運行$Oracle_home/rdbms/admin目錄下的utlrp.sql可以防止(解決)此類問題的發(fā)生。utlrp.sql腳本在Oracle8i和Oracle9i已經有了實質的變化,執(zhí)行前請閱讀該腳本;(3)針對以上Oracle對象主要通過dba_users、dba_objects,dba_triggers、dba_jobs、dba_db_links、dba_constraints等字典視圖查詢。
(三)重要參數(shù)的配置檢查
重點關注以下參數(shù):
log_buffer、 db_block_buffers、shared_pool_size 、db_cache_size(oracle 9i) 、sort_area_size 、hash_area_size
相關建議:(1)綜合考慮操作系統(tǒng),應用系統(tǒng),oracle內存空間分配,OLAP應用與OLTP應用初始化參數(shù)設置有很大區(qū)別;(2)在對Oracle內存設置調整時,可參考Statspack報告信息v$system_event、v$sysstat、v$sesstat、v$latch等視圖信息;(3)share_pool_size大小要適當,使用率應該穩(wěn)定在75%~90%間。如果發(fā)現(xiàn)該共享池命中率不高可以適當?shù)脑黾觭hred_pool_size;(4)log_buffer通常幾百K至1M大小。
(四)警告日志檢查
當數(shù)據(jù)庫內部操作出現(xiàn)錯誤,Oracle數(shù)據(jù)庫將通過警告日志提醒用戶,結合相關的跟蹤文件來監(jiān)控數(shù)據(jù)庫。
主要是對alert_sid.log、sqlnet.log、listener.log等日志文件和Trace文件進行檢查,查看數(shù)據(jù)庫運行期間的狀況報告,檢查和清理應用數(shù)據(jù)庫警報日志文件(alert_sid.log),檢查是否存在數(shù)據(jù)庫系統(tǒng)錯誤提示信息。
此外還有對Net及SQL*Net產生的Log檢查,以及對產生的Trace文件分析。相關建議:(1)啟動日志監(jiān)控和警告日志的通告是所有數(shù)據(jù)庫管理員任務的重中之重;(2)可以通過Unix或Linux下的corn程序創(chuàng)建一個shell腳本來檢查錯誤日志文件。此外,Oracle的外部表特性也允許直接使用SQL來查詢警告日志;(3)值得注意的是,警告日志文件將會變的越來越大,建議將其保持一個易于管理的大小,可以通過重命名文件來備份當前版本,下一次要寫日志將導致創(chuàng)建一個新的警告日志;(4)對于日志文件中記錄的錯誤信息給予記錄和分析。
(五)數(shù)據(jù)庫備份檢查
主要是針對備份方案的技術審查,檢查方案整體的可行性??陀^條件允許的情況下,應該進行完整的備份恢復測試,以保證數(shù)據(jù)庫能在系統(tǒng)發(fā)生故障的情況下可以順利恢復。相關建議:
1.針對生產數(shù)據(jù)庫,根據(jù)設備的情況和各局的數(shù)據(jù)量(包括庫的大小和每天產生歸檔日志文件的多少)來決定備份的頻率。
2.建議數(shù)據(jù)量大的每周兩次數(shù)據(jù)庫全備份,每日兩次歸檔日志的備份,數(shù)據(jù)量小的每周一次數(shù)據(jù)庫全備份,每日一次歸檔日志的備份。備份的頻率主要從恢復的時間來考慮,歸檔日志太多恢復時間會比較長。有了全備份,在某個表空間被損壞的情況下,也可以進行單個表空間的恢復。
3.如果條件允許,定期校驗備份,比如恢復測試倒測試環(huán)境。
除了以上列述的項是數(shù)據(jù)庫健康檢查的主要方面外,還應對oracle的主要補丁;RAC環(huán)境下負載分配、接管;第三方軟件等情況進行安全檢查。
四、結語
Oracle數(shù)據(jù)庫在醫(yī)療衛(wèi)生行業(yè)(醫(yī)院管理信息系統(tǒng))中應用非常廣泛,健康穩(wěn)定的Oracle數(shù)據(jù)庫是醫(yī)療衛(wèi)生單位信息系統(tǒng)穩(wěn)定高效運轉的基礎條件。健康檢查是數(shù)據(jù)庫維護工作的基礎,應定期對Oracle數(shù)據(jù)庫進行健康檢查工作,保障醫(yī)院信息系統(tǒng)安全穩(wěn)定。
參考文獻
[1]April Wells著,孫楊譯.Oracle DBA日常管理[M].清華大學出版社,2007.
[2]蓋國強,馮春培,葉梁,馮大輝.Oracle數(shù)據(jù)庫性能優(yōu)化[M].人民郵電出版社,2005.
作者簡介:翟油華(1974-),男,江蘇興化人,南京醫(yī)科大學第二附屬醫(yī)院信息科工程師,研究方向:軟件工程。