重要性
一個小的軟體開發工作室和一個分工高度明細的大公司相比,DBA的職責來得更加寬泛一些。一個公司,不管它是自己開發套用軟體,還是購買第三方的套用軟體,只要涉及到資料庫(有多少不涉及資料庫的套用軟體呢?資料庫是商業的靈魂和大腦啊),就需要確定是否僱傭一個或幾個DBA。知道DBA這個職位有哪些要求,對於企業內部這個職位的定義或者對於那些未來的DBA將是至關重要的。職業技能
技術是指DBA執行一項任務時所需要的技能。在資料庫環境的管理與維護中,技術任務可歸結成許多不同的分類。下面列出了一名DBA應掌握的一些技術(排名不分先後)。理解數據備份/恢復與災難恢復
恢復已損壞的資料庫是每一個DBA應掌握的最重要的技能。DBA需要完全理解資料庫所有可能的備份與恢複方法,以及不同備份方法與不同恢復策略的對應關係。此外,DBA還需要與業務部門合作,一起確認業務需求,明確用戶能夠容忍的數據丟失底線。此外,業務用戶還需要確定在系統故障情況下,他們的業務能夠維持多長時間。理解這些需求可以幫助DBA開發出一個滿足業務用戶要求的備份/恢複方法。一個優秀的DBA要定期測試備份與恢複流程,保證他們有能力恢復業務數據,滿足企業所規定的業務數據丟失與恢復要求。
工具集的使用所謂工具集,指是的他們要有一組用於執行不同DBA任務的腳本。這個工具集應該包含不同的小代碼片段,它們可以快速診斷問題或執行一個特定的任務。這些工具腳本應該按DBA的活動類型歸類,如備份、索引維護、性能最佳化、容量管理等。由於總是會執行新任務、發現新問題或找到其他人開發的好用腳本,因此一個優秀的DBA會不斷地給這個工具集增加新腳本。此外,他還應該了解網上哪裡能夠找到一些免費的工具和腳本。一個好的DBA知道什麼時候可以利用其他人編寫的腳本,從而節省自己的時間和改進自己的工具集。
知道從哪裡獲得幫助即使是資料庫大牛,也不可能是無所不知的,每個人都有需要尋求幫助或建議的時候。而知道從何處尋找建議是很重要的。如果一個資料庫實例不能按預期方式運轉,那么快速尋找新問題的解決方法也是一個重要能力。一個好的DBA知道如何快速地在網上查找一個未知問題的解決方法。此外,他們也可能已經知道了一些非常不錯的網站,也知道業界專家會提供一些好建議,同時知道什麼時候應該忽略一些不好的建議。你可能想像不到,確實有一些建議不值得參考。
知道如何使用原生性能工具以SQLServer舉例,性能是一個關鍵的問題,因此DBA需要知道如何修復故障和監控性能問題。有許多第三方性能監控工具可以幫助DBA最佳化性能。如果DBA只使用第三方工具,而不會使用SQLServer自帶的原生工具來監控性能,那么相信很快就會出現問題。雖然使用第三方工具來監控性能也很不錯,但是DBA一定要理解SQL自帶的一些原生工具,如SQLServerProfiler、DatabaseEngineTuningAdvisor、DynamicManagementViews、系統/擴展的存儲過程、ExtendedEvents等。許多第三方工具實際上在使用這些底層的原生工具。因此,理解這些自帶的原生工具將有利於增強DBA使用第三方工具的經驗。
研究新版本在技術領域中,沒有什麼是一成不變的。每隔兩三年,主流資料庫廠商都會發布一個大版本的更新。DBA應該緊跟新版本所作的修改,它們可能有許多變化方法,最好的方法是遲早介入這個過程。測試版開放後馬上下載和安裝,儘快掌握第一手使用經驗。一名好的DBA總是走在學習排頭兵,總是會第一時間安裝和測試新版本。這樣他們就可以儘早理解新特性,然後提出一些合理的新建議,幫助組織更好地利用新版本資料庫。
理解代碼最佳實踐方法DBA應該了解如何編寫高效的代碼。有許多糟糕的編碼實踐方法會導致拙劣的性能。一名好的DBA要能夠理解和識別這些糟糕的編碼實踐方法,知道如何修改這些爛代碼,讓它們變成高效代碼。此外,他們還要記錄下寫代碼的最佳實踐方法,並且將這些實踐方法分享給其他人。
持續不斷地學習資料庫及其組件涉及面非常廣。DBA很難理解一個技術的方方面面。DBA需要持續學習如何管理資料庫。這個學習過程有很多方法。其中之一就是參加正式培訓。但是,並非人人都有這樣充裕的事件和金錢,也並非人人都能夠放下手頭工作專門出去參加正式的培訓。但是,還有許多其他方法可以獲得培訓,而且大多數還是免費的。一名好的DBA一定要訂閱一些定期發布資料庫新技巧和新文章的社區網站。此外,他還應該加入一些用戶組織,可以在周末參加一些當地的免費沙龍活動。
資料庫安全性安全性是一個熱門話題。DBA應該完全掌握如何實現資料庫的安全訪問。他們應該理解作業系統身份驗證和資料庫身份驗證的區別,以及它們各自的使用場合。他們應該理解如何使用資料庫角色來管理不同類型用戶的安全配置。他們應該理解連線資料庫的連線埠與協定。此外,他們還應該理解如何加密整個資料庫,或者加密一個資料庫中一個表的某一個欄位,同時理解關於加密數據的各種問題。
資料庫設計決定資料庫性能的一個關鍵問題是資料庫設計。DBA需要理解關於資料庫設計的各個方面。他們要能夠理解設計好壞的區別。他們需要理解為什麼使用正確的外鍵約束、主鍵、檢查約束和使用數據類型能夠保持資料庫的數據完整性和實現高效的數據查詢與更新。
索引設計資料庫索引是提高應用程式檢索和更新數據速度的重要環節。DBA需要知道索引的工作原理。他們應該知道聚簇索引和非聚簇索引的區別,知道這些索引的物理存儲方式。DBA應該知道如何在執行計畫中使用這些索引。他們應該理解如何找到索引的使用統計、理解索引碎片及如何發現丟失的索引。他們應該知道如何維護索引,以及索引統計信息對於查詢引擎的重要作用。
容量監控與規劃資料庫往往要使用大量的資源,包括CPU、記憶體、I/O及磁碟空間。DBA應該理解如何監控資料庫所需要的不同主機資源的用量。他們應該能夠理解這些資源在不同時間的使用情況,以及利用歷史使用數據來規劃未來的容量需求。在監控過程中,DBA應該能夠預見到容量規劃會在將來什麼時候出現問題,然後採取必要的措施保持資料庫不會因為容量限制而出現中斷。
資料庫許可證不同的產品有許多不同的許可證授權方式。而且,同一款產品本身又有許多不同的版本。DBA應該理解所負責的資料庫版本的不同授權模式。他們應該能夠提供指導如何通過合理購買授權來減少資料庫總擁有成本,以及如何合理利用授權方法來降低未來版本的升級成本。
儘可能實現自動化DBA每天都需要執行許多的日常任務。其中一些任務需要每天執行,而另一些則每周、每月或每年執行。一名好的DBA需要理解如何高效地安排自己的時間。其中一種方法是建立工作流程,這些日常任務的自動執行。通過實現日常任務的自動化執行,DBA就可以用更多的時間去關注於資料庫環境管理中遇到的嚴重問題。
本文只是表達了筆者個人對於DBA應具備的重要特質的看法。你具備的特質越多,作為DBA的你就越優秀。成為一名成功DBA的關鍵是不斷地學習與提高,努力去掌握更多關於如何管理和維護資料庫環境的知識。
性格要求
很多時候管理人員都忽視了DBA的個性特點,他們只關注DBA的技術能力。實際上,上面談到的每個職責都意味著:DBA需要跟各種人員打交道,這些人員可能是銷售商、用戶、開發人員或者管理人員。這說明:DBA必須具有下面的個性特點:自信心、好奇心、堅韌的意志力、老練、自我驅動、注意細節,為什麼這些個性特點很重要呢?
我就有幾個缺乏自信心的部下,他們反覆問我一些事無巨細的問題,他們沒有信心哪怕做最小的決定。他們也缺乏工作的主動性。這對於初級DBA來說可能問題不太大,但對於那些高級DBA來說,如果他們缺乏自信心,他們又可以依賴誰幫他們決策呢?在DBA的面試中,即使你不能回答某個技術問題,你也要表現出足夠的自信心。最致命的不是不知道問題的答案,而是不知道從哪兒得到答案。
幾乎所有的資料庫系統都在不停地更新。但並不是所有的更新都有技術文檔。對於好的DBA來說,好奇心是必需的。沒有好奇心和求知慾的DBA總是等待有人告訴他們答案。而一個求知慾強的DBA將安裝最新版本的資料庫系統,並立即開始搜尋那些哪怕是細微的功能和性能上的差異和增強,從而改進自己的工作。應試時一個必然問及的問題是:你手頭有哪些參考資料?你如何使用它們?毫無疑問,如果你只回答了資料庫的文檔,或者你甚至沒有讀過他們,你的"股票市值"將大大下降。好奇心會驅使DBA們理解數據字典(DataDictionary)、管理工具(Tools)或者其他支持包(Packages)。
DBA常常會碰到棘手的問題。尋找答案是一個需要堅韌意志力、可以經受摔打的個性特點。我常常在一些討論組或者論壇上看到DBA們提出的問題,這些問題往往是提問者自己可以解決的,如果他們具有堅韌的個性特點,並努力尋求問題的答案。
自我驅動對每個人都是很重要的,對DBA尤其如此。DBA要能想辦法使問題出現,而不是等待問題的出現。自驅力強的DBA常常設法取得或者自己寫一些必要的腳本(Script)來監控包括數據表大小(TableSize)、表空間使用(TablespaceUsage)等項目,這些項目如果被忽視,他們將遇到麻煩。應試的時候DBA們常常被問及在PL/SQL、SQL或者SQL*PLUS方面的經驗,這些問題將把你從從來沒有編寫過自己需要的腳本的那些DBA們區分開。
不用說和用戶,就是和程式設計師和管理人員打交道,也需要你足夠老練。一個一點不會處事的DBA不會為你做什麼好事,只會在你的部門點燃敵對情緒的烈火。老練是這樣一種能力,你勸告某個人到地府去,哈哈,最後這個人懷著渴望的心情去了。很多時候,開發者、管理者、用戶,他們會提出毫無道理的需求,DBA們需要老練地引導、修正它們的要求,說服他們。在應試時,你的應對就很能說明你是否老練。
最後說說注意細節,這種性格傾向非常重要。注意細節的DBA們衣著整潔,有自己的日程安排,在應試前對應聘的單位做過調查。注意細節的DBA們深入了解資料庫的核心,並能理解視圖、表之間的關係。
職業等級劃分
DBA的等級並不是很嚴格的。按照對資料庫的掌握情況,我簡單地分成三個等級:初級Primary、中級Intermediate和高級Senior。初級DBA又稱為DBBS,是英文DatabaseBabySitter的縮寫。初級DBA常常是兼職的,他們往往同時是程式設計師或者兼任其他的工作。初級DBA往往把個人簡歷寫得很棒,參與了很多和資料庫有關的項目或工作。但是,這些項目或者工作往往是:第三方軟體供應商已經安裝並配置了資料庫,他們只做一些監控的工作。他們能處理一些簡單的問題,但大多數時候他們向套用軟體供應商求救。初級DBA更喜歡圖形化的資料庫管理或者監控工具,他們喜歡Access這樣的桌面資料庫簡單易用,並把這些小型資料庫的經驗簡單地套用到大型資料庫相關的工作中。
初級DBA是最好區分的。而中級DBA和高級DBA就不太好區分。他們的差別在於經驗的不同和個性特點、能力方面的差異。中級DBA比較多,他們可以勝任高級DBA的大部分工作,包括:
1、資料庫安裝;
2、資料庫配置和管理;
3、許可權設定和安全管理;
4、監控和性能調節;
5、備份和恢復;
6、解決一般的問題;
中級DBA往往從業一年左右,熟悉某種作業系統環境下的資料庫。因為對中級DBA來講,WindowsNT和Unix是有很大差別的。中級DBA對SQL比較熟悉,他們自己購買了幾本資料庫方面的書籍,並深入鑽研。中級DBA往往同時兼任資料庫程式設計師,他們的工作對性能、穩定性、安全性的追求基本上不是很高,往往配合高級DBA做一些例行工作。
高級DBA在國內是非常少的。他們購買了太多的資料庫方面的英文資料,也許是托朋友從Amazon買的。相對於他們的報酬來講,買書的錢是很少的一個比例。高級DBA一般都熟悉很多種操作平台下的幾種大型資料庫。他們知道各種不同資料庫在不同環境下的優勢和劣勢,並能在資料庫平台和資料庫環境的選擇方面做出決策。他們一般通曉系統架構和資料庫設計,並能對資料庫進行各種級別的最佳化。高級DBA一般都配有助手,他們更偏向做決策和計畫。高級DBA往往在銀行業、保險業、線上交易等對穩定性、安全性、性能都要求比較高的關鍵業務處理領域大顯身手。
很多時候,是否取得資料庫專家認證證書並不是很重要。我知道很多資料庫廠商的培訓只要你去了都會獲得證書。有很多的公司提供商業化的培訓,他們的服務質量也有好有劣。所以證書並不是特別地有意義。
職業常用系統
最“容易”的資料庫系統-MicrosoftSQLServer
如果你打算做一個DBA,建議你選擇那些比較流行的資料庫系統。這意味著你將有更多的就業機會、交流和培訓機會,而且,流行自有流行的理由,你可以因此省心很多。當然,就業競爭壓力也比較大。一般的入門者選擇MicrosoftSQLServer,這是非常適合中小型企業的資料庫系統,熟悉Access的讀者很容易就能初步使用MicrosoftSQLServer,成為一個DBBS。
MicrosoftSQLServer7.0的報價,5用戶版1399美金,增加用戶時,127美金每用戶。
最“難”的資料庫-無冕之王Oracle
如果你有機會接觸到Oracle,那可是個好機會。Oracle是目前最看好的資料庫廠商,由於其強大的功能和可配置、可管理能力,OracleDBA的薪資一般比其他資料庫管理員的薪資要高。而且,Oracle在大中型企業的關鍵套用也更加普遍了。Oracle可以運行在WindowsNT、SunSolaris、Linux等平台下。很多情況下要求你不僅僅熟悉NT,還要你熟悉Unix;而且Oracle不太友善的界面和成箱的Oracle產品資料可能也是一個障礙。
Oracle8i標準版的報價,如果運行在WindowsNT,附帶JServer和interMedia,支持5個並發用戶,報價是3925美金每CPU。增加並發用戶時,785美金每用戶。增加附加的命名用戶時,392.5美金每用戶。
資料庫系統的貴族-IBMUDB/DB2
作為30年資料庫研究的成果,IBMDB2確實稱得上“資料庫系統的貴族”。不管是小型商業系統,還是大的銀行系統,用DB2都是可以高枕無憂的。當前推出的新版DB26.1,管理和調節工具更加卓越和便於使用。DB2可以運行在Intel架構上,也可以運行在IBM的S/390大型計算機上。如果你所在的行業對IBM的機器特別地稱道,建議你學習IBMDB2。
DB2有兩種版本:工作組版和企業版。工作組版999美元每伺服器,外加249美元每個並發用戶。而企業版是12500美元每個CPU,不限並發用戶數量。
以Java為中心的資料庫-SybaseAdaptiveServerEnterprise(ASE)12.0
即將發布的SybaseASE12.0,直接面向Java程式設計師。這種以Java為中心的資料庫系統,為那些準備在Java平台下構建企業套用的企業來說,將是最好的選擇。但是ASE稱不上一個資料庫領域的領先者,儘管相對於它以前的版本已經改進很多,並支持多個CPU和更多的並發,還有很多的新的特性。但Sybase的風光似乎已經不再。
值得期盼的InformixCentaur
有時候“第一”只是意味著你的對手需要等待更長的時間去趕上你。這正是1997年創立的Informix所面臨的。Informix公司是率先將多媒體特性加入到關係資料庫系統的大型資料庫廠商之一。但是如今,IBM、Oracle、Sybase都已經跨越了這個概念。所以,Informix不得不尋求新的支撐來使自己區別於其他資料庫廠商。這就是InformixCentaur的目標。InformixCentaur結合了InformixDynamicServer7.3的對象-關係資料庫和InformixUniversalDataOption9.1,意在獲得更好的適應性和多媒體支持。詳情如何,我們拭目以待!
職責
擁有大容量和複雜資料庫的公司通常任命資料庫管理員,根據所用的應用程式和軟體系統來指導資料庫分析員和程式設計師。資料庫管理員必須與科學技術和資料庫系統的新發展齊頭並進,以不斷改進資料庫運行。通過使當地運用信息技術於資料庫管理系統,資料庫管理員能夠顯著地最大化生產力,降低風險和成本。資料庫管理員的主要職責有以下幾個方面。設計
資料庫管理員幫助確定:
資料庫設計,包括欄位、表和關鍵欄位;
資源在輔助存儲設備上是怎樣使用的,怎樣增加和刪除檔案及記錄,以及怎樣發現和補救損失。
監控資料庫的警告日誌。Alert.log,定期做備份刪除。
Linstener.log的監控,/network/admin/linstener.ora。
重做日誌狀態監視,留意視圖v$log,v$logfile,該兩個視圖存儲重做日誌的信息。
監控資料庫的日常會話情況。
碎片、剩餘表空間監控,及時了解表空間的擴展情況、以及剩餘空間分布情況,如果有連續的自由空間,手工合併。
監控回滾段的使用情況。生產系統中,要做比較大的維護和資料庫結構更改時,用rbs_big01來做。
監控擴展段是否存在不滿足擴展的表。
監控臨時表空間。
監視對象的修改。定期列出所有變化的對象。%BB%B6target="_new"class=innerlink>;檔案,有初始化參數檔案、用戶後台檔案、系統後台檔案。
安裝和升級資料庫伺服器(如Oracle、MicrosoftSQLserver),以及應用程式工具。
資料庫設計系統存儲方案,並制定未來的存儲需求計畫。
一旦開發人員設計了一個套用,就需要DBA來創建資料庫存儲結構(tablespaces)。
一旦開發人員設計了一個套用,就需要DBA來創建資料庫對象(tables,views,indexes)。
根據開發人員的反饋信息,必要的時候,修改資料庫的結構。
登記資料庫的用戶,維護資料庫的安全性。
保證資料庫的使用符合智慧財產權相關法規。
控制和監控用戶對資料庫的存取訪問。
監控和最佳化資料庫的性能。
制定資料庫備份計畫,災難出現時對資料庫信息進行恢復。
維護適當介質上的存檔或者備份數據。
備份和恢複數據庫。
聯繫資料庫系統的生產廠商,跟蹤技術信息。
對資料庫的備份監控和管理資料庫的備份至關重要,對資料庫的備份策略要根據實際要求進行更改,數據的日常備份情況進行監控。由於我們使用了磁帶庫,所以要對legato備份軟體進行監控,同時也要對rman備份資料庫進行監控。
修改密碼規範資料庫用戶的管理定期對管理員等重要用戶密碼進行修改。對於每一個項目,應該建立一個用戶。DBA應該和相應的項目管理人員或者是程式設計師溝通,確定怎樣建立相應的資料庫底層模型,最後由DBA統一管理,建立和維護。任何資料庫對象的更改,應該由DBA根據需求來操作。
SQL語句對SQL語句的書寫規範的要求一個SQL語句,如果寫得不理想,對資料庫的影響是很大的。所以,每一個程式設計師或相應的工作人員在寫相應的SQL語句時,應該嚴格按照《SQL書寫規範》一文。最後要有DBA檢查才可以正式運行。
最終用戶服務和協調資料庫管理員規定用戶訪問許可權和為不同用戶組分配資源。如果不同用戶之間互相牴觸,資料庫管理員應該能夠協調用戶以最最佳化安排。
資料庫安全資料庫管理員能夠為不同的資料庫管理系統用戶規定不同的訪問許可權,以保護資料庫不被未經授權的訪問和破壞。例如,允許一類用戶只能檢索數據,而另一類用戶可能擁有更新數據和刪除記錄的許可權。
深層次管理和研究DBA深層次要求一個資料庫能否健康有效的運行,僅靠這些日常的維護還是不夠的,還應該致力於資料庫的更深一層次的管理和研究:資料庫本身的最佳化,開發上的性能最佳化;項目的合理化;安全化審計方面的工作;資料庫的底層建模研究、規劃設計;各種數據類型的處理;內部機制的研究;ora-600錯誤的研究、故障排除,等等很多值得探討的問題。ORACLE資料庫管理員應按如下方式對ORACLE資料庫系統做定期監控:
⑴每天對ORACLE資料庫的運行狀態,日誌檔案,備份情況,資料庫的空間使用情況,系統資源的使用情況進行檢查,發現並解決問題。
⑵每周對資料庫對象的空間擴展情況,數據的增長情況進行監控,對資料庫做健康檢查,對資料庫對象的狀態做檢查。
⑶每月對表和索引等進行Analyze,檢查表空間碎片,尋找資料庫性能調整的機會,進行資料庫性能調整,提出下一步空間管理計畫。對ORACLE資料庫狀態進行一次全面檢查。
日常工作
每日工作
⑴確認所有的INSTANCE狀態正常登入到所有資料庫或例程,檢測ORACLE後台進程。⑵檢查檔案系統的使用(剩餘空間)。如果檔案系統的剩餘空間小於20%,需刪除不用的檔案以釋放空間。
⑶檢查日誌檔案和trace檔案記錄alert和trace檔案中的錯誤。連線到每個需管理的系統使用‘telnet’對每個資料庫,cd到bdump目錄,通常是$ORACLE_BASE//bdump使用Unix‘tail’命令來查看alert_.log檔案,如果發現任何新的ORA-錯誤,記錄並解決。
⑷檢查資料庫當日備份的有效性。對RMAN備份方式:檢查第三方備份工具的備份日誌以確定備份是否成功;對EXPORT備份方式:檢查exp日誌檔案以確定備份是否成功;對其他備份方式:檢查相應的日誌檔案。
⑸檢查數據檔案的狀態記錄狀態不是“online”的數據檔案,並做恢復。Selectfile_namefromdba_data_fileswherestatus=’OFFLINE’。
⑹檢查表空間的使用情況SELECTtablespace_name,max_m,count_blocksfree_blk_cnt,sum_free_m,to_char(100*sum_free_m/sum_m,‘99.99’)||‘%’ ASpct_freeFROM(SELECTtablespace_name,sum(bytes)/1024/1024ASsum_mFROMdba_data_filesGROUPBYtablespace_name),(SELECTtablespace_nameASfs_ts_name,max(bytes)/1024/1024ASmax_m,count(blocks)AScount_blocks,sum(bytes/1024/1024)ASsum_free_mFROMdba_free_spaceGROUPBYtablespace_name)WHEREtablespace_name=fs_ts_name
⑺檢查剩餘表空間SELECTtablespace_name,sum(blocks)asfree_blk,trunc(sum(bytes)/(1024*1024))asfree_m,max(bytes)/(1024)asbig_chunk_k,count(*)asnum_chunksFROMdba_free_spaceGROUPBYtablespace_name;
⑻監控資料庫性能,運行bstat/estat生成系統報告或者使用statspack收集統計數據;
⑼檢查資料庫性能,記錄資料庫的cpu使用、IO、buffer命中率等等使用vmstat,iostat,glance,top等命令;
⑽日常出現問題的處理。
每周工作
⑴控資料庫對象的空間擴展情況根據本周每天的檢查情況找到空間擴展很快的資料庫對象,並採取相應的措施--刪除歷史數據---擴表空間altertablespaceadddatafile"size---調整數據對象的存儲參數nextextentpct_increase
⑵監控數據量的增長情況根據本周每天的檢查情況找到記錄數量增長很快的資料庫對象,並採取相應的措施--刪除歷史數據---擴表空間altertablespaceadddatafile"size,
⑶系統健康檢查以下,內容:init.oracontrolfileredologfilearchivingsortareasizetablespace(system,temporary,tablespacefragment)datafiles(autoextend,location)object(numberofextent,nextextent,index)rollbacksegmentlogging&tracing(alert.log,max_dump_file_size,sqlnet)
⑷檢查無效的資料庫對象SELECTowner,object_name,object_typeFROMdba_objectsWHEREstatus=’INVALID’。
⑸檢查不起作用的約束SELECTowner,constraint_name,table_name,constraint_type,statusFROMdba_constraintsWHEREstatus=‘DISABLED’ANDconstraint_type=‘P‘
⑹檢查無效的triggerSELECTowner,trigger_name,table_name,statusFROMdba_triggersWHEREstatus=‘DISABLED’
每月工作
⑴AnalyzeTables/Indexes/Clusteranalyzetableestimatestatisticssample50percent;
⑵檢查表空間碎片根據每月每周的檢查分析資料庫碎片情況,找到相應的解決方法;
⑶尋找資料庫性能調整的機會比較每天對資料庫性能的監控報告,確定是否有必要對資料庫性能進行調整;
⑷資料庫性能調整如有必要,進行性能調整;
⑸提出下一步空間管理計畫根據每周的監控,提出空間管理的改進方法。
日常管理
目的
這篇文檔有很詳細的資料記錄著對一個甚至更多的ORACLE資料庫每天的,每月的,每年的運行的狀態的結果及檢查的結果,在文檔的附錄中你將會看到所有檢查,修改的SQL和PL/SQL代碼。
每日維護程式
A檢查已起的所有實例;
B查找一些新的警告日誌;
C檢查DBSNMP是否在運行;
D檢查資料庫備份是否正確;
E檢查備份到磁帶中的檔案是否正確;
F檢查資料庫的性能是否正常合理,是否有足夠的空間和資源;
G將文檔日誌複製到備份的資料庫中;
H要常看DBA用戶手冊、晚間維護程式;
I收集VOLUMETRIC的數據。
每周維護工作
A.查找那些破壞規則的OBJECT
B.查找是否有違反安全策略的問題
C.查看錯誤地方的SQL*NET日誌
D.將所有的警告日誌存檔
E.經常訪問供應商的主頁
月維護程式
A.查看對資料庫會產生危害的增長速度
B.回顧以前資料庫最佳化性能的調整
C.查看I/O的屏頸問題
D.回顧FRAGMENTATION
E.將來的執行計畫
F.查看調整點和維護
維護過程
日間維護
A.查看所有的實例是否已起,確定資料庫是可用的,把每個實例寫入日誌並且運行日報告或是運行測試檔案。當然有一些操作我們是希望它能自動運行的。可選擇執行:用ORACLE管理器中的‘PROBE’事件來查看;
B.查找新的警告日誌檔案1.聯接每一個操作管理系統2.使用‘TELNET’或是可比較程式3.對每一個管理實例,經常的執行$ORACLE_BASE//bdump操作,並使其能回退到控制資料庫的SID。4.在提示下,使用UNⅨ中的‘TAIL’命令查看alert_.log,或是用其他方式檢查檔案中的警告日誌5.如果出現過的一些ORA_ERRORS又出現,將它記錄到資料庫恢復日誌中並且仔細的研究它們,這個資料庫恢復日誌在〈FILE〉中;
C.查看DBSNMP的運行情況檢查每個被管理機器的‘DBSNMP’進程並將它們記錄到日誌中。在UNⅨ中,在命令行中,鍵入ps–ef|grepdbsnmp,將回看到2個DBSNMP進程在運行。如果沒有,重啟DBSNMP。
D.查資料庫備份是否成功;
E.檢查備份的磁帶文檔是否成功;
F.檢查對合理的性能來說是否有足夠的資源1.檢查在表空間中有沒有剩餘空間。對每一個實例來說,檢查在表空間中是否存在有剩餘空間來滿足當天的預期的需要。當資料庫中已有的數據是穩定的,數據日增長的平均數也是可以計算出來,最小的剩餘空間至少要能滿足每天數據的增長。A)運行‘FREE.SQL’來檢查表空間的剩餘空間。B)運行‘SPACE.SQL’來檢查表空間中的剩餘空間百分率2.檢查回滾段,回滾段的狀態一般是線上的,除了一些為複雜工作準備的專用段,它一般狀態是離線的。a)每個資料庫都有一個回滾段名字的列表。b)你可以用V$ROLLSTAT來查詢線上或是離線的回滾段在狀態。c)對於所有回滾段的存儲參數及名字,可用DBA_ROLLBACK_SEGS來查詢。但是它不如V$ROLLSTAT準確。3.識別出一些過分的增長查看資料庫中超出資源或是增長速度過大的段,這些段的存儲參數需要調整。a)收集日數據大小的信息,可以用‘ANALYZE5PCT.SQL’。如果你收集的是每晚的信息,則可跳過這一步。b)檢查當前的範圍,可用‘NR.EXTENTS.SQL’。c)查詢當前表的大小信息。d)查詢當前索引大小的信息。e)查詢增長趨勢。4.確定空間的範圍。如果範圍空間對象的NEXT_EXTENT比表空間所能提供的最大範圍還要大,那么這將影響資料庫的運行。如果我們找到了這個目標,可以用‘ALTERTABLESPACECOALESCE’調查它的位置,或加另外的數據檔案。A)運行‘SPACEBOUND.SQL’。如果都是正常的,將不返回任何行。5.回顧CPU,記憶體,網路,硬體資源論點的過程A)檢查CPU的利用情況,進到x:.htm=>systemmetrics=>CPU利用頁,CPU的最大限度為400,當CPU的占用保持在350以上有一段時間的話,我們就需要查看及研究出現的問題。G.將存檔日誌複製到備用資料庫中,如果有一個備用資料庫,將適當的存檔日誌複製到備用資料庫的期望位置,備用資料庫中保存最近的數據。H.經常查閱DBA用戶手冊,如果有可能的話,要廣泛的閱讀,包括DBA手冊,行業雜誌,新聞組或是郵件列表。
晚間維護
大部分的資料庫產品將受益於每晚確定的檢查進程的運行。A.收集VOLUMETRIC數據1.分析計畫和收集數據更準確的分析計算並保存結果。a)如果你現在沒有作這些的話,用‘MKVOLFACT.SQL’來創建測定體積的表。b)收集晚間數據大小的信息,用‘ANALYZECOMP.SQL’。c)收集統計結果,用‘POPVOL.SQL’。d)在空閒的時候檢查數據,可能的話,每周或每個月進行。一般用MSEXCEL和ODBC的聯接來檢查數據和圖表的增長。
周維護
A.查找被破壞的目標1.對於每個給定表空間的對象來說,NEXT_EXTENT的大小是相同的,如12/14/98,預設的NEXT_EXTENT的DATAHI為1G,DATALO為500MB,INDEXES為256MB.A)檢查NEXT_EXTENT的設定,可用‘NEXTEXT。SQL’。B)檢查已有的EXTENTS,可用‘EⅪSTEXT。SQL’。2.所有的表都應該有唯一的主鍵a)查看那些表沒有主鍵,可用‘NO_PK.SQL’。b)查找那些主鍵是沒有發揮作用的,可用‘DIS_PK.SQL’。c)所有作索引的主鍵都要是唯一的,可用‘NONUPK。SQL’來檢查。3.所有的索引都要放到索引表空間中。運行‘MKREBUILD_IDX。SQL’4.不同的環境之間的計畫應該是同樣的,特別是測試環境和成品環境之間的計畫應該相同。a)檢查不同的2個運行環境中的數據類型是否一致,可用‘DATATYPE.SQL’。b)在2個不同的實例中尋找對象的不同點,可用‘OBJ_COORD.SQL’。c)更好的做法是,使用一種工具,象尋求軟體的計畫管理器那樣的工具。B.查看是否有危害到安全策略的問題。C.查看報錯的SQL*NET日誌。1.客戶端的日誌。2.伺服器端的日誌。D.將所有的警告日誌存檔E.供應商的主頁1.ORACLE供應商。
月維護
A.查看對資料庫會產生危害的增長速度
1.從以前的記錄或報告中回顧段增長的變化以此來確定段增長帶來危害B.回顧以前資料庫最佳化性能的調整1.回顧一般ORACLE資料庫的調整點,比較以前的報告來確定有害的發展趨勢。C查看I/O的屏頸問題1.查看前期資料庫檔案的活動性,比較以前的輸出來判斷有可能導致屏頸問題的趨勢。D.回顧FRAGMENTATIONE.計畫資料庫將來的性能1.比較ORACLE和作業系統的CPU,記憶體,網路,及硬碟的利用率以此來確定在近期將會有的一些資源爭奪的趨勢
2.當系統將超出範圍時要把性能趨勢當作服務水平的協定來看F.完成調整和維護工作1.使修改滿足避免系統資源的爭奪的需要,這裡面包括增加新資源或使預期的停工。
薪資
有很多因素影響到你作為DBA的薪資:
你的經驗和能力所決定的DBA等級;你所熟悉的資料庫系統你的個性特點和潛力。
職業前景
資料庫作為整個系統的一部分,它的表現直接受伺服器、作業系統、存儲、網路、應用程式中SQL語句的質量、資料庫設計的質量、以及其它諸多因素的影響,這些因素加在一起非常複雜,經驗起著非常重要的作用。因此一個好的DBA除了知識作為基礎,經驗的多寡、見識的薄廣,往往決定了是否合格與優秀。
從另外一個角度說,Oracle工作領域對實踐經驗和獨立工作能力要求較高,沒有經過大量的動手實踐是很難勝任Oracle相關工作的。
正是由於上述原因,其職場現狀是DBA職位不易進入,而用人單位很難找到合適的從業人員,人員缺口非常大。
也正是由於上述原因,隨著工作年限的增長,DBA的經驗在增加,就像醫生一樣,其價值會越來越高,可以逐步成長為資深OracleDBA、系統構架師、信息主管(CIO)等等,而不會出現許多軟體開發從業人員在一定年齡後面臨的轉行問題。
另外,從職業前景看,從事OracleDBA有著更多的職場機遇。一般而言,系統中的軟硬體都是IBM、HP、Oracle等業界一流廠商提供的,在與廠商談判、合作、測試、實施、維護、最佳化等等過程中,會產生許多極佳的職場機遇,這一點是從事開發工作很難比擬的。
從DBA的工資統計數據看,隨著工作經驗的積累,DBA工資的增長幅度會遠大於其它的計算機方向。
工作的穩定性上看,系統的複雜性和經驗的重要性已經決定了DBA職位的不可替代性。
從知識的積累、更新和替代角度看,資料庫的根基始終沒變,變的是不斷增強的功能和不斷擴展的套用範圍。因此,在不同時期所學的知識和獲得的經驗是疊加和累積的關係,而不像IT許多其他職業方向那樣“唯一不變的是變化”,其知識是東風壓倒西風還是西風壓倒東風的關係。
因此,OracleDBA職業是一個高挑戰和高回報的職業,有一定能力的和聰明的技術人員應該挑戰自我,進入這個被二十多年事實不斷證明的越來越有前景的職業。