摘要:DBA職責
轉載自http://www.runpc.com.tw/content/content.aspx?id=101471
資料庫服務運轉順暢的幕後黑手
文/朱明中.責任編輯/洪羿漣
不論是小如一般性的動作或是龐大到影響企業的決策,在資料庫服務企業的背後,總是有一雙手在保護或是維持資料庫的運作,這個角色就是資料庫管理師(Database Administrator)。
只要是導入有資訊科技應用的商業體系,都一定會有各式各樣的資料庫,小從 Access/FoxPro,大到SQL Server/Oracle等等,都在無形中支援著各式各樣的商業活動,不論是微小如一般性的動作例如便利商店賣東西,或是龐大到影響企業的決策例如行銷決策等,而在資料庫服務企業的背後,總是有一雙手在保護或是維持資料庫的運作讓它能發揮最大的功能,這雙手就是資料庫管理師。
資料庫基礎架構規劃(Database Infrastructure Planning)
在企業開始規劃要使用資料庫時,先期的規劃與需求分析是很重要的,包括可能的資料量,以及需要的回應時間 (Response time) ,這些會決定資料庫伺服器的硬體需求,使用 DBMS的決策,以及伺服器的數量等等。如果是小型的解決方案 (例如像是5-10人的小系統) ,則使用的硬體可以不必太強,而資料庫也可以用小型的DBMS,例如SQL Server Express,就足以支援解決方案的需求了;如果是像證券業或是大型製造業等,資料量可能有數百萬筆以上,或者是對執行時間相當計較,又有大量用戶端時,就要考慮使用較強功能的伺服器 (通常有4個CPU以上,16GB的記憶體以上,配置RAID 0+1高速磁碟陣列) ,並選用如SQL Server 2005 Enterprise Edition的企業級DBMS,以支援如此需求的企業應用。
若企業應用發展快速,解決方案由小變大,而原有的伺服器已經滿載,此時將要導入多台資料庫伺服器,或者要實作容錯移轉叢集(Failover Cluster) ,以支援高可用度 (High Availability,通常以99%加上小數點後的9的個數代表愈高的可用性) ,以保持資料庫服務不會中斷。
備份策略 (Backup Strategy) 則是企業資料庫保存的重要方案,而封存策略(Archive Strategy) 則是將不常使用的資料封存,以釋放出磁碟空間讓資料庫可以持續的成長,但需要取回封存資料時仍然可以隨時取回,這二個策略都是用來保護珍貴的企業資料,試想若無備份策略,辛辛苦苦收集了數年的資料在伺服器磁碟損毀時毀於一旦,等於收集數年的資料全部化為烏有,對於企業的傷害有多大。
自動化管理策略(Automated Manage- ment Strategy)則可以讓資料庫依據特定的時間,執行一些大量資料庫的活動,讓平時營運時間(Operation Time)內的應用程式活動不會受到影響,這些活動包含每日一次的完整備份(Fully Backup)、大量資料庫移轉(Mass Data Migration)、大量資料複製(Mass Data Copy)與索引維護等等工作,而這些工作都需要在離峰時段處理,否則會嚴重干擾到應用程式的處理,但總不可能要人員 24小時都stand-by吧,所以這類的自動化管理的設計可以幫助企業處理許多的工作。
這些與資料庫服務、資料庫伺服器組成與營運的策略、計畫與藍圖,合稱為資料庫伺服器基礎架構(Database Server Infrastructure),而資料庫管理師要有能力設計與規劃出如此的基礎架構,並且將這份基礎架構化為實體的基礎架構,包括營運與維護等等皆然。
資料庫的營運(Database Operation)
資料庫營運策略(Database Operation Strategy) 是一種管理指南,對於資料庫的日常維運、效能標準、災難處理與故障排除等,規劃與設計一套完整的標準,用以在資料庫發生可能的問題時給予適當的處理,讓資料庫恢復正常運轉。
大量資料匯出與匯入 (Mass Data Import/ Export)在大型資料庫或者有合作關係的企業體中,是很常見的例行公事,它的特性諸如資料量大、格式百變 (可能是Access、Excel 或是文字檔,也可能是XML檔),以及需要時間較長等等,而這類型的工作通常會由 DBMS中的自動化工具,以及專門負責這種資料轉移的工具服務(Utility Service)來處理,以SQL Server 2005來說,就是SQL Server Integration Service(SSIS,SQL Server 2000時稱的DTS) ,SSIS提供了一些方法以及GUI設計工具,讓大量資料的讀取/格式處理/複製與輸出等等變得較為容易。
但正確的匯出與匯入策略才是真正要考驗資料庫管理師,在外部資料要匯入之時,格式一定要符合本地的資料庫(Local database) ,讓應用程式可以接手資料處理,若格式不正確時,應用程式將會無法處理,這個程序稱為資料淨化(data cleaning);而外部資料匯入若與本地資料庫內的資料發生衝突(Conflict)時,要如何解決衝突,也考驗著資料庫管理師的能力。
複寫策略(Replication Strategy)是在多個位置的資料庫伺服器之間共享與交換資料的動作,這個動作會讓發行者資料庫(Publisher Database)的資料複製到訂閱者資料庫(Subscriber Database),而這個動作要視資料交換的方式與頻率而異,例如交易式複寫(Transactional Replication)是在發行者資料庫的交易發生(即資料變更)時就複寫到訂閱者資料庫,這種複寫法雖然可保持資料的一致性,但對網路流量則有相當的影響-尤其是訂閱者多時,所以選擇正確的複寫類型,規劃適當的複寫方法,也是資料庫管理師的必要工作之一。
資料庫的保全(Database Security)
企業的資料庫通常都保存了大量的企業資料,而這些資料通常都極為珍貴,例如顧客資料、商品基本資料或是交易性資料等等,為應用程式分析與統計的基礎資料,對企業來說是相當重要,若這些資料被竊取或是被刪除或竄改,輕者影響報表,重則影響企業決策,對企業的重大影響,不可不察。
資料庫保全可分為存取控制(Access Control)、驗證(Authentication)與授權(Authorization)三個部份,SQL Server 2005支援Windows與SQL Server驗證方法,資料庫管理師可依需要設定驗證模式;SQL Server支援Schema-Based Authorization,資料庫管理員得以在資料庫綱要(Schema)的層級,設定其存取的權限(例如可插入/可更新或是僅支援檢視)等,尤其是對使用者或者是對應用程式的角色不同,應有不同的存取模式,通常資料庫管理師要和應用程式開發人員要做過溝通。
SQL Server 2005還可以做到資料層次的保全,可以透過使用加密金鑰的方式來保存儲存在資料表中的資料,以防止資料被竊取的風險。
資料庫最佳化與災難復原(Database Optimization and Disaster Recovery)
當資料庫運行了一個階段時,由於資料的I/ O頻繁,使得查詢的效能可能會開始低落,原因可能是索引結構或是統計資訊不正確,需要進行重建(Rebuild index),或者是預存程序/檢視表效率低落,也需要重建以更新計數,這個工作也是資料庫管理師需要規劃處理的工作。
在資料庫設計以外會影響效能的原因,就是系統元件負載過重,或者網路的負載過重,例如磁碟I/O的速度變慢,或者是CPU的使用率一直維持在高檔的時候,表示硬體需要升級或是更新;網路負載過重則是要考量是否因為中毒或者資料輸出太大(例如過多的交易式複寫訂閱者),讓網路存取的時間變長等等。
資料庫管理師可以透過Windows的效能監視器(Performance Monitor),網路監控程式(Network Monitor),工作管理員(Task Manager) 或是SQL Server Profiler 來監控資料庫與硬體的活動,找出可能的效能瓶頸(Performance Bottlenecks),並且執行適當的行動來排除這些瓶頸,讓資料庫與應用程式得以順暢的運作。
當資料庫發生問題,或者磁碟機損毀,讓資料庫無法運作時,資料庫管理師必須要立刻進行一些措施,將資料庫的停機時間降到最低,這在一個高度交易的企業或者24小時運作的工廠而言,1分鐘停機的損失就很慘重了,這種企業都要求99.999%以上的高可用性,就算是在一般企業,停機超過10分鐘也會對企業營運有所影響,所以盡速的恢復資料庫運轉,也是資料庫管理師的重要工作。
因為資料庫損毀的原因很多,而且復原的步驟其實也不少,所以這些都要以計畫方式,提供指南與步驟,供實際操作的人處理,這種指南稱為災難復原計畫(Disaster Recovery Plan),包括硬體錯誤,人為疏失與軟體錯誤等都可列入規劃範圍,供企業營運時突發狀況的應變參考之用。
MCITP:Database Administrator
微軟發表的SQL Server 2005的認證體系中,分為Database Developer、Database Ad- ministrator與Business Intelligence Developer 三個部份,資料庫管理師的認證為MCITP: Database Administrator(簡稱MCITP: DBA),以使用SQL Server 2005規劃,設計與建置資料庫伺服器架構,並且給予適當的維運以及故障排除等支援工作,讓資料庫可以穩定順暢的運行。在參加MCITP:DBA考試前,需要先通過MCTS:SQL Server 2005的考試(Exam 70-431),取得MCTS:SQL Server 2005認證。
MCITP:DBA需要通過二門考試:
1.Exam 70-443:Designing Database Server Infrastructure using SQL Server 2005。 2.Exam 70-444:Optimizing and Maintain- ing Database Administration Solution us- ing SQL Server 2005。
70-443以個案方式(Case Study)考試,測驗考生對於SQL Server 2005資料庫伺服器的架構設計是否能符合微軟所訂定的標準,包含硬體需求、資料庫建置、備份策略設計、安全性設計與高可用性設計等等。70-444則是以一般性考題方式,測試考生對於SQL Server 2005資料庫管理的基本技能,包含維護、效能檢測與排除、故障排除與災難復原等議題,都在此科考試的範圍之內。
MCDBA升級之路(Upgrade Path for MCDBA)
MCITP:DBA是MCDBA唯一可以升級的管道,其他像MCITP:Database Developer與 MCITP:Business Intelligence Developer都無法由MCDBA升級,必須要各自考相對應的持有MCDBA 的考生仍然需要通過 MCTS:SQL Server 2005的考試,才可以取得升級資格,而升級考考試「Exam 70- 447:UPGRADE:MCDBA skills to MCITP Database Administrator using SQL Server 2005」,其實是綜合70-443和70-444二科的考試,前述的70-443和70-444的考試範圍,在 70-447都會出現,考試題目大約60-70題,時間為240分鐘左右,並且是一般性試題與個案式考題都有,考生需要多加注意。
準備方法
微軟有出官方的準備教材(Self-Paced Training Kit) ,並且目前已經有幾本由國內某出版社翻譯成中文版,可以到書店找找看,至筆者下筆為止,已經有70-431和70-443的教材被翻譯成中文,相信不久的將來,70-444的教材也會翻譯成中文。若需要由講師帶領(Instructor-led)的課程,目前國內各大教育訓練中心多有開設MCITP的認證課程,包含 MCITP:Database Developer與MCITP: DBA等等課程,則可洽教育訓練中心。