如何成爲一名Oracle應用DBA

從一個“普通”的Oracle DBA(Oracle數據庫管理員)轉變爲Oracle Applications DBA(Oracle應用程序數據庫管理員),有兩個內容你必須去弄清楚。第一個內容是如何成爲一個Oracle Applications DBA(Oracle應用程序數據庫管理員)。第二個內容是你要搞清楚Oracle應用程序背後的架構體系,也就是說你要明白諸如以下產品的結構體系:Oracle電子商務套件、Oracle 11i數據庫、Siebel產品等。

    本文首先講述如何從一個普通的Oracle DBA轉變爲一個Oracle Applications DBA(Oracle應用程序數據庫管理員),接着講述一些Oracle應用軟件架構方面的內容 。

如何成爲Oracle應用程序數據庫管理員
    首先是角色的轉變
    Oracle Applications DBA(Oracle應用程序數據庫管理員)對“普通”的Oracle DBA(Oracle數據庫管理員)來說是一個很大的挑戰。拿Oracle EBS DBA(Oracle 電子商務套件DBA)來說,不僅需要了解EBS的各個組件、服務,而且還要更主動和其他相關人員接觸。 一個Oracle Applications DBA(Oracle應用程序數據庫管理員)不僅需要和其他DBA一樣去負責managing、 sizing、maintaining和 tuning database這些日常的數據庫管理的工作,如果他的Apps database是OLTP系統的話,他還需要監察wait和lock 。Oracle E-Business Suite還有一些特性需要DBA去完成,比如從外部資源裏灌數據到Apps database裏,或支持開發人員從已有數據中提取數據。

接着工作內容的轉變
    作爲一個Oracle Applications DBA(Oracle應用程序數據庫管理員),要想更好的對Oracle Application database做支持,需要仔細記住以下幾項。
 1.網絡上沒有什麼比較容易簡單的文檔讓你去熟悉Apps DBA,所以我建議去看幫助。
 2.在你沒有經過多次測試並且得到客戶認可的時候不要去打補丁,並且你要確信這個補丁解決了現有的問題,而且沒有帶來其它新的問題。
 3.記住Oracle Applications會有很多索引,定期rebuild index會對性能有好處,當然做這項工作應該在系統的空閒時間。
 4.不要爲了提高性能而在沒有詢問oracle Support前試着去增加額外的indexes。如果你一定要去做,那千萬記住要有文檔作記錄,因爲在這之後你再打patch的時候它可能會把你做的修改自動復原。
 5. 知道怎麼樣是正確的打patch,先計劃打哪個patch,然後取得patch,接着打patch,測試,最後文檔記錄。
 6. 要知道任何時刻數據庫都可能會有一些object 是invalid的,你的一些操作也會增加invalid objects,定期檢查這些invalid objects的數量,然後定期用utlrp去重新編譯,utlrp.squ在ORACLE HOME的rdbms/admin下,需要用SYS運行。在你的DB運行過程中如果碰到錯誤,就可以先重新編譯invalid objects,如果沒有解決問題再去遞交iTAR(Internet created Technical Assistance Request).

 7.能看懂日誌。
 8.瞭解Apps database的環境,包括操作系統和DB的,當你對你的工作環境瞭如指掌後,一切也就變得容易了,那時,你就是一個悠閒的Apps DBA了。

    另外,對於APPS DB(應用程序數據庫)來說,你可能需要創建或拷貝(克隆)多個生產庫以外的數據庫,比如測試和開發數據庫,當然,需要多少數據庫是由你的商業需求所決定的。開發環境數據庫是供開發人員進行report,PL/SQL等開發的,這個環境可以在開發人員覺得數據已經不再滿足開發需求的時候,當然也可以在這個環境測試補丁(patches)。當然最終使用patch的時候還需要在測試環境做測試,因爲測試數據庫是和生產數據庫環境最接近的。(上面說的克隆cloning是一種將applications layer和database layer完全複製的一種方法。)所以,當你擁有這三個數據庫的時候,打patch的步驟是先development database再test database最後纔在production database環境應用。
構架應用體系
    如果你研究過Oracle Forms,使用過Application Server和Developer Suite來開發、配置部署form和report,並且曾經作爲一名Oracle DBA,經歷過許多管理和維護的工作如patching和cloning的話,那麼你就已經能夠掌握了OA 90%的內容。Oracle Apps應該是這樣的應用軟件,高速度、低拖延的ERP應用軟件,使用Oracle所能提供的最好的web和數據庫組件。我說的對嗎?實際上不完全對,在11.5.9的版本里,你能看到應用服務器最早期的一個版本,並且Oracle的版本還是8.0.6。

    EBS環境最簡單配置也包括兩個服務器,這兩個服務器也就是我們熟知的兩層:數據庫層,和中間層,也叫應用層。數據庫層就如字面的意思,就是應用程序的後端數據庫。中間層就類似Application Server(應用程序服務器)。
中間層

    在中間層,更確切的說運行在中間層上的還有幾種服務。所有的服務都不相同,有OC4J、report engine、form等。你能看到應用服務器(Application Server)存在於中間層,另外還有Oracle應用程序具體的服務器。總的來說,有六種服務器存在於中間層和應用層,它們是:
• Web 服務器
• Forms服務器
• Reports 服務器
• Discoverer服務器
• 併發處理服務器
• Admin服務器
   
    至於Application Server,上面列舉的其它服務器和Application Server性質不同的就是併發處理服務器了。對於併發處理服務器,我們可以認爲它是一個助手的角色,在EBS用戶請求和數據處理過程中協調作業和過程;另外,如現代的Application Server,上面列舉的服務並不是每個都必須在相同的服務器上。

    我們可以類似的認爲Oracle Apps配置就是對Forms 和 Reports 服務,以及後端數據庫的配置。在app server 和數據庫之間物理或者邏輯關係是什麼樣的?在Oracle應用程序世界裏,在中間層生成的文件能夠,有時是需要放到數據庫層。這些文件大多以文本文件的形式存在,包括配置信息。其他文件是與cloning相關的。

    下面的圖標有助於說明每層的主要組成部分。該圖標來自Oracle Applications Concepts Release 11i的圖2-1。如下圖所示:   
   
    在中間層有許多的“父級”目錄。特別要提到其中的兩個,這個兩個在文檔中一次又一次的看到,它們就是APPL_TOP 和COMMON_TOP。
數據庫層
    數據庫層又是什麼樣子了?令人驚奇的是,Oracle Apps數據庫文件格式或許令人難以置信,並不是由於它的複雜性,而恰恰是一點都不復雜。同樣在“父級”結構中,數據庫有四種數據,他們分別是數據、索引、系統和臨時表空間位置。你或許能看到所有的和數據庫文件相關的數據都放在一個路徑,或者分區裏,所有的索引也是在一個路徑下,同樣系統和臨時表空間也是如此。重做日誌能夠放在兩個位置。你或許看到上百的表空間都有一到兩個文件,你能看到四個表空間模型。

    說到重做日誌和一般的重做操作,我們肯定知道的一件事情就是在真實的DBA世界裏,我們希望重做日誌存在快速磁盤中,由於寫入量的緣故。你曾經在磁盤中放置一個控制文件嗎?如果你沒有看到控制文件在事務等待過程中並行寫入,那麼看一看Oracle Apps安裝過程,情況就是這樣的。當前文檔聲稱或者說分配重做日誌緩衝區大小最好是1MB。Oracle在MetaLink上有一個註釋,推薦Oracle Apps DBA將重做日誌緩衝區設爲10MB。
   
    另外一個和一般數據庫不同的地方就是必須要設置初始參數。在初始文件中設置初始參數還不常見。
   
    在使用Oracle Apps時,你不得不向你的OLTP或者DSS數據庫打補丁的時候,如何保證5個9的可靠性呢,5個9的可靠性意味着每年只有5分鐘的停機時間。好了,雖然說沒有這麼嚴格,但是仍舊有許多測試工作和質量保證工作需要完成。爲了更好的服務於最終用戶,你還需要了解些Apps的結構,並且掌握專有名詞的含義,比如雖然你不需要掌握財務模塊是如何實現的,但是還是需要知道AR是借,AP是貸,GL是總帳,這樣你在遇到問題的時候就可能及時知道數據是怎麼來的,是那個模塊,該找什麼人去溝通。

    你如何備份你的數據庫?在EBS中,數據庫備份時非常直接的,中間層組件就有一些複雜了。慶幸的是,Oracle開發了一個叫做Rapid Clone的工具,步驟歸納如下:
• 在每層運行基於perl的腳本語言(創建一個XML文件,裏面包含了配置信息,不過對源系統不影響)
• 將每層的相關部分複製到目標系統
• 運行基於perl語言的config/clone腳本來重新配置環境或者每層的context文件。

    Application,middle tier,database之間有着複雜的連接,常常某一個地方出了問題卻在其他地方上表現出來(有點象中醫),或者說在一個地方出的問題,影響到另一個地方,又影響到其他,然後最終影響到整體性能。比如一個FORM 沒有被正確執行,而你作爲一個DBA可能最先發現的是性能的下降,這會讓你很頭疼。另外,在打補丁後,原有的forms 或 reports也可能在執行上與打補丁之前有所不同了。

    最後,我要說,你現在接觸和管理的是比你以前複雜的多的系統,這套系統的每一個部分都不能單獨來看,一葉障目,不見泰山,遇到問題應該從整體思考。一個Apps DBA是一個對這套系統每一部分都有所瞭解的人。

結論
    Oracle Applications DBA(Oracle應用程序數據庫管理員)比“普通”的Oracle DBA(Oracle數據庫管理員)門檻高了很了很多,不僅要有處理數據庫問題的能力,還需要了解整個應用程序的構架,從大處着眼,整體考慮問題。總之,扮演者DBA 和 系統分析師的角色。
======================
  有任何問題請與本人聯繫!
發佈了70 篇原創文章 · 獲贊 5 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章