以最短的宕机时间升级到Oracle 10g
簡介
升級硬件通常都很容易,但是升級數據庫……毫無疑問,每個人都有著痛苦的經歷。一個經驗豐富的 Oracle DBA 主要關注的是升級的成功完成和可能導致的宕機時間。成功不僅僅是指升級過程本身正常完成,更重要的是,生產應用程序能在升級后的數據庫中無故障地運行。本文中,我們將提供一些建議,通過采用成熟的流程和技術將宕機時間和失敗風險降到最低。
為什么要升級?
Oracle Database 10g 給了我們很多升級的理由。例如,您可以從它的通用可管理性架構中受益。Oracle 10g 在 Advisory Framework 和 Automatic Workload Repository 中包含許多改進和新的選項。Automatic Workload Repository 是為 Oracle 10g 組件提供服務的架構,以便為問題檢測和自動優化收集、維護和利用統計信息。
同樣地,如果您遇到由于錯誤輸入的 SQL 語句導致數據破壞,并需要幾個小時來診斷和修復的情況,Oracle 10g 將為您提供強大的人為錯誤校正功能。例如,Flashback Transaction Query可以幫助您診斷問題并執行事務分析和審核。它能讓您輕松地恢復用戶或應用程序中的錯誤。您可以在回收站中使用對象名稱查詢已刪除的表。
Oracle 10g 中的其它主要增強功能包括自動化任務。例如,Scheduler 現在可以計劃日常管理任務(如收集優化器的統計信息)。
Oracle 10g 還支持新的操作系統,并允許您使用更強大的新處理器,從而增強服務器的處理能力。
Oracle 10g 還包括改進后的 Real Application Cluster (RAC) 選項。RAC 允許 Oracle 數據庫在一組群集服務器上運行任何應用程序。這提供了高水平的可用性和擴展性。如果一個群集服務器出現故障,Oracle 將在其它服務器上運行。
因此,如果您有著性能、可用性或常規 OLTP 方面的問題,Oracle 10g 的功能可以幫助您。
升級面臨的挑戰
在 24x7 全天候運行的時代之前,升級都安排在周末。用戶在星期五下午注銷,MIS 會進行完全備份,然后開始升級過程。主要目標是確保系統在星期一早上可以運行,無論是由于升級成功還是不得已,在星期一用戶抵達前的幾小時內,恢復星期五下午的備份。
現在,整個周末宕機是完全無法接受的,因為宕機將意味著大量的收入損失。在電子商務等環境中,周末的收入占據了很大一部分。為了盡可能減少中斷的時間,標準升級過程的每一步驟,都需要檢查和優化。有沒有必要進行冷備份?是否擁有最快速的技術?恢復技術是否同樣高效?還有,是否已將升級本身所需的時間降到最低?
升級比日常操作需要更多的磁盤空間和內存。如果在升級過程中系統沒有這些額外的資源,升級很可能會失敗。有些風險是可以預見的。并且,您預見得越多,準備也就越充分。例如,有些失敗是因為時間、內存或磁盤空間不足。其它風險可能是由于不可預料的原因,例如介質損壞、備份損壞或電源故障。檢查備份的有效性需要花費幾分鐘,但是這個投入非常值得。設想一下:需要恢復備份的時候,卻發現您的備份方案有問題,其結果是災難性的!
雖然人工失誤不可能完全排除,但是采用一些重要步驟可將其影響降到最低。首先,確保你的升級小組有足夠的精力;其次,保證他們做好了一切準備。
最后,也是最重要的,在用戶進入系統前,測試升級結果。由于很多用戶更重視如何盡快將新系統投入使用,這一步經常都被省略了。有時,這種決定可能是一個嚴重的錯誤。
簡化升級過程
利用現有技術,能最大限度地提高成功的機率;預留充足的升級時間,按照最壞的可能,充分測試升級選項以確保成功,將生產系統的中斷降到最低。
| | |
|
從 A 復制到 B 方法概述 1. 創建目標實例 B 2. 建立從 A 到 B 的復制鏈路 3. 升級 B 4. 恢復從 A 到 B 的復制過程 5. 充分測試 B 6. 建立從 B 到 A 的復制鏈路 7. 將用戶遷移到 B (v10g)(將 A 作為必要情況下的回切服務器) 8. 在極短的時間內升級 A 創建測試實例 第一步是生成生產數據庫的副本,以練習和測試升級。這可以通過多種方法完成。最簡單的方法是使用磁盤鏡像。在鏡像環境中,可利用不同的鏡像,建立復制進程。將生成的副本加載到另一個系統相同的安裝點上,打開新實例,待新的測試實例完全恢復后,可啟動該系統上的復制進程。這樣,在建立副本過程中堆積在隊列中的數據變化,就可以被復制到目標實例中。 復制生產系統數據 一些在升級后進行的測試,需要復制生產系統的數據變化。這樣,您可以在測試實例中獲得和生產系統一樣的事務類型和數據量。因此,下一步是啟動復制過程(如果您還沒有這樣做的話)。確保您在測試過程中復制了所有的生產表和序列,這樣您的測試將是完整的。如果您使用了基于日志的復制產品,例如 Quest Software 的 SharePlex?for Oracle,要確保在測試實例中禁用觸發器。觸發器不應該修改目標數據,因為觸發器在生產系統中產生的數據變化,同樣被記錄在在線日志中,并且已經被復制。 |
進行升級
當您啟動復制過程后,可以開始在測試實例中進行升級。為此,需要停止測試實例的數據更新,并允許復制產品將捕獲到的生產系統更新暫存到隊列中。按照 Oracle 的說明進行升級,完成后恢復復制進程,將隊列里的事務復制到新的 Oracle 10g 實例中。
初步檢查
復制生產系統數據是測試新的升級實例的重要開端,因為它包含了大量數據和多種事務類型,如果不借助工具,這些數據可能需要開發人員花費大量的時間才能復制。作為針對該實例的唯一一種測試,需要將這種復制持續至少兩天。接下來,開始運行只讀測試,檢查您的報表和查詢與 Oracle10g 的兼容性:是否所有報表和查詢都能在 Oracle 10g 上正常運行?
實施所需的 ORACLE 10g 新特性
Oracle 10g 包括許多新功能。實際使用一下您需要的一些新功能。
在 Oracle 10g 上測試更新后的應用程序
毫無疑問,這是任務中最繁重的部分:檢查所有的應用程序(套裝和自開發應用)是否都能與新的數據庫兼容。首先,列出要測試的所有應用程序。您可能會按照重要性或復雜性組織列表。(也可能需要根據一些應用程序的相關性組織列表。)相對于列表的順序,其完整性更為重要。建立一個可以更新的列表(包括日期、時間和結果)十分重要,因為您可能會忘記實際測試過的應用程序,而不是測試本身。確保包括定期使用的特殊程序,例如月底、季度末和年底的業務流程。
在測試實例中運行需要更新數據的應用程序時,先應停止復制進程。打開開發診斷工具,以確定哪些表和序列受到應用程序的影響。然后,運行測試,并檢查其結果。在測試實例中進行的測試,會造成生產實例和測試實例的數據不一致,因此您需要還原測試環境使得兩邊的數據一致。您用于還原測試環境的方法,取決于項目的可用技術和測試所修改的范圍。如果您測試的應用程序對一些大型表只做了少量修改,對其再同步的一個快速方法是使用DataEquator,一種用于 SharePlex for Oracle 的比較和修復的程序。它可以比較一對表的數據,并生成腳本,使第二張表與第一張表相匹配。您可以在即將重置測試環境時運行該腳本。另一個選項是在測試前將測試數據庫存儲到磁帶中,然后在之后恢復它(如果改動較多并且表之間有很多交叉)。你還可以使用 Oracle 10g 中新的閃回機制來回滾測試。
另一個方法是通過生產系統重新同步數據。為此,您需要知道在測試實例中您所進行的測試都對那些測試實例中的 Schema 進行了修改,包括升級本身的修改,以及您所選擇的 Oracle 10g 功能所做的修改。Quest Software 的 Toad for Oracle 可以通過比較兩個系統的 Schema 和創建變化腳本來簡化這個過程。(您無需在生產系統中運行腳本,但您將在生產系統的備份中運行它。)準備好該腳本后,您可以重復創建測試實例的過程:中斷生產系統的鏡像,將副本移動到測試系統中,將其安裝在相同的安裝點,并打開該實例。將使用鏡像技術創建的映象與復制隊列中包含的事務進行同步,刪除鏡像中已經包括的事務和更新。最后,運行腳本以提交 Schema 修改,成功完成操作!您已經在 Oracle 10g 實例中建立了一個全新、一致的生產數據映象。
當您完成了所有的測試環節后,再一次將生產實例與測試實例進行重新同步。現在您可以開始將用戶遷移到運行 Oracle 10g 的系統中了。
將生產系統遷移到 Oracle 10g
首先激活一個從 Oracle 10g 到 Oracle 9i 的反向復制鏈路。要避免為某個事務設置無限循環。Quest Software 的 SharePlex for Oracle 默認禁用這種復制循環。如果您使用了另一種復制產品,請檢查以確保它不會存在這種無限循環的復制。當生產活動較空閑時,暫停生產系統并等待所有事務都同步到 Oracle 10g 實例中。當所有事務都同步以后,就可以讓用戶在 Oracle 10g 系統中工作了。
讓用戶使用新版本的軟件和數據庫,能幫助您檢查測試期間遺漏的問題。不應該有大問題出現。然而,您還應準備一個備份計劃,作為重大問題出現時的備用方案。由于您現在有一條從 Oracle 10g 復制到 Oracle 9i 的反向復制鏈路,您可以將用戶重新定向到備份系統。Oracle 9i 實例反映了所有的用戶更新,此前應用程序可以在該實例中成功運行。緊急情況下,如果重要的應用程序在 Oracle 10g 中遇到了重大問題,您可以將用戶回切到 Oracle 9i 中,保持業務的繼續。同時,您的 MIS 職員可以確定需要修改的地方,以便使應用程序與 Oracle 10g 完全兼容,修正錯誤并為將來再次將用戶轉移到 Oracle 10g 做準備。
更新備份系統
一旦您的生產環境已經在 Oracle 10g 數據庫和應用程序中成功運行足夠長的時間,讓您充分信賴,您會希望把備份系統更新到 Oracle 10g。這個過程比最初的升級更快更容易,因為您的數據和應用程序已準備就緒。您只需為另一系統建立一個 10g 的副本。
基本上,您將重復創建測試實例時所進行的過程,只是方向正好相反。您將在 Oracle 10g 的實例系統中把存儲鏡像分成兩部分,將 10g 數據庫存儲的副本轉移到備份系統中,將其加載在相同的安裝點,并打開實例。接下來,您將讓復制產品進行相應的審核,將復制隊列中通過鏡像創建實例已經復制的那部分事務刪除,然后繼續復制過程。
在將用戶轉移到原始生產系統 (A) 之前,您需將復制過程設置為相反方向(從 A 到 B)。這將使您可以繼續正常的操作。
然后,當您準備就緒時,只需暫停生產系統,將事務定位到備份系統,并重定向用戶即可。
復制就緒后,您將擁有第二個實例用于日常報表和查詢,以優化 OLTP 性能和可用性。你可以在生產系統中執行日常維護,而無需中斷生產活動,因為它可以在備用系統中運行。
結論
通過采用成熟的策略和專門的輔助工具,可以將升級需要的宕機時間降到最低。客戶使用這種方法平均減少了 94% 的宕機時間。采用以上推薦的解決方案后,對生產用戶的中斷僅限于新舊兩套系統的切換,以及激活復制鏈路的時間(通常不超過 1 分鐘)。在升級完成并進行了充分的測試后,才將用戶轉移過來,所有由于升級過程意外故障所引起的延誤都得以消除:這主要得益于升級沒有直接在生產系統上進行。
總結
以上是生活随笔為你收集整理的以最短的宕机时间升级到Oracle 10g的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: lsnrctl status区分静态注册
- 下一篇: 数据完整性的管理