從DBA到Oracle Applications DBA的轉變過程

  這篇論壇文章(賽迪網技術社區)講述了如何從一個普通的Oracle DBA轉變爲一個Oracle applications DBA(Oracle應用程序數據庫管理員),接著講述一些Oracle應用軟件架構方面的內容 。
  從一個「普通」的Oracle DBA(Oracle數據庫管理員)轉變爲Oracle Applications DBA(Oracle應用程序數據庫管理員),有兩個內容你必須去弄清楚。第一個內容是如何成爲一個Oracle Applications DBA(Oracle應用程序數據庫管理員)。第二個內容是你要搞清楚Oracle應用程序背後的架構體系,也就是說你要明白諸如以下産品的結構體系:Oracle電子商務套件、Oracle 11i數據庫、Siebel産品等。
  如何成爲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。如下圖所示:
  
從DBA到Oracle Applications DBA的轉變過程

  在中間層有許多的「父級」目錄。特別要提到其中的兩個,這個兩個在文檔中一次又一次的看到,它們就是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 和 系統分析師的角色。