資料庫的升級及遷移

dragon路發表於2011-07-17
文詳細論述了oracle資料庫升級的升級前的準備、升級過程和升級後的測試與調整工作,並對各種升級方法在多種作業系統平臺上作了測試。


資料庫升級的必要性

資料庫升級是資料庫管理員經常要面對的問題,如果你的應用要使用新版本資料庫的

新特性;如果資料庫執行負載過重,而通過軟硬體調整又不能有根本性的改善;如果要更換作業系統平臺;如果要增強資料庫的安全性;還有一個原因是隨著新版本資料庫的出現與成熟,oracle停止了對舊版本資料庫的技術支援,升級到高版本,可以繼續獲得oracle的支援,還可以利用新版本資料庫的新特新,可以改善系統的效能,健壯性,可擴張性和可用性,等等,面對這些問題,需要通過資料庫升級才得以解決。不過,如果你的系統執行穩定,沒有大的效能瓶頸的話,還是不要輕易升級資料庫,因為升級一個產品資料庫會面臨很多風險.

資料庫升級或資料遷移情況分析

資料庫升級或資料遷移會遇到多種情況,一般有以下幾種情況:

1. 相同主機條件下,低版本資料庫向高版本資料庫的升級。

2. 資料庫有了新的補丁級,需要安裝新的補丁。

3. 更換了系統主機,如從windows更換為unix系統,資料庫需要遷移。

4. 實現跨平臺,跨資料庫版本的遷移。

5. 32位資料庫升級到64為資料庫。

6. 標準版的資料庫升級到企業版的資料庫。

制定詳細的資料庫升級計劃

資料庫升級操作會面臨巨大的風險,因此在資料庫升級前制定詳細而周密的升級和測試計劃,反覆驗證與測試升級資料庫的各個階段非常必要,這樣才能保證升級產品資料庫的各個階段可理解,可預測並能夠成功。一般來說,資料庫升級的測試計劃應該包括以下幾種測試型別:

1. 升級測試(Upgrade testing

2. 最小化測試(Minimal testing)。

3. 功能測試(Functional testing)。

4. 整合測試(Integration testing)。

5. 效能測試(Performance testing)。

6. 容量與負載壓力測試(Volume and load stress testing)。

7. 特定的升級前後的測試(Specific Pre-Upgrade and Post-Upgrade Tests)。

8. 制定升級前的備份方案。

9. 升級步驟的反覆測試(test the upgrade process)。

10.升級後的資料庫的測試(test the upgraded database)

以上是資料庫升級前需要考慮和測試的問題,具體可以參考oracle資料庫提供的升級文件,在此對各種要求的測試過程不做詳細討論。

資料庫升級準備:

1.升級資料庫前首先要熟悉新資料庫的各種新特性,如:表空間、段的管理、引數的變化,記憶體的管理,資料庫回閃特性,儲存的管理,sql優化的改進等。

2.確定升級到新版本資料庫的升級路徑,升級到10gr2的路徑取決於當前資料庫的發行號(release number),很有可能不能從當前的資料庫版本升級到最新版本,這種情況首先升級到一箇中間版本,然後再升級到最終的版本。例如:當前版本是oracle9.1.0.1,首先升級到oracle9.1.0.4,然後再從oracle9.1.0.4升級到oracle10gr2

下表列出了各種版本升級到oracle10gr2的路徑:

當前版本

升級路徑

7.3.3 and lower

7.3.4

8.0.3

8.0.4

8.0.5

8.0.6

8.1.5

8.1.6

不支援直接升級,需要先升級到一箇中間版本,然後再升級到oracle10g:

· 7.3.3 (or lower) -> 7.3.4 -> 8.1.7.4 -> 10.2

· 7.3.4 -> 8.1.7.4 -> 10.2

· 8.0.n -> 8.1.7.4 -> 10.2

· 8.1.n -> 8.1.7.4 -> 10.2

8.1.7.4

9.0.1.4

9.2.0.4

10.1.0.2

可以直接升級到oracle10gr2

3.選擇升級方法。

4.選擇oracle home目錄。

5.做好資料庫備份。

資料庫升級的各種方法討論

實現資料庫升級可以選擇多種方法,一般有:資料庫升級助手(database upgrade assistant,手工的指令碼升級,exp/imp(exdmp/imdmp)工具,表空間傳輸特性(transportable tablespace),table copy,實體化檢視(material ized view)等技術,在升級前,首先確定升級路徑,根據具體情況選擇合適的升級方法,對升級過程的各個階段進行測試。本文以軍衛一號醫院資訊系統為例,涉及的資料庫版本主要有oracle8ioracle9ioracle10gr2,作業系統平臺主要有windows2000oracle unbreakable linux as 4等,主要實現oracle8ioracle9ioracle10gr2的升級過程,oracle8ioracle9i執行在windows2000上,oracle10gr2主要執行在windows2000oracle unbreakable linux as 4兩種平臺,我使用以上各種方法對各種升級過程都做了測試。以下詳細介紹這些方法的升級過程。

1. 手工指令碼升級

手工指令碼升級在命令列執行一些sql指令碼和工具,手工升級對升級過程提供了更多的控制,但是如果沒有遵循嚴格的升級步驟,在升級過程中容易出錯,它與dbua一樣只能在相同的作業系統平臺間跨資料庫版本升級,對於不同的os平臺不能使用,而且升級需要遵循嚴格的升級路徑。

本測試從oracle9.2.0.1升級到oracle10.2.0.3,由於oracle9.2.0.1不能直接升級到oracle10.2.0.3,首先對oracle9.2.0.1安裝補丁(補丁號p3095277_9204_WINNT)升級到oracle9.2.0.4,然後oracle9.2.0.4再升級到oracle10.2.0.3。以下是升級的測試過程:

1.安裝oracle 10g r2的軟體。

2.oracle 10g最新的補丁,我打的是升級到10.2.0.2(補丁號p4547817_10202_WINNT)和10.2.0.3(補丁號p5948242_10203_WINNT)的補丁,關於如何安裝oracle補丁程式,需要認真閱讀每個補丁程式提供的readme,按照readme的步驟進行安裝。

3.執行Pre-Upgrade Information Tool.分析升級到10g前要做的一些操作,包括:

資料庫版本、日誌檔案大小、 表空間大小、 伺服器選項、 初始化引數(新增的,降級的,廢棄的)、資料庫元件 sysaux表空間、 叢集資訊等分析。升級前要解決該指令碼生成的各種問題。

啟動要升級的DB,用SYSDBA執行10gORACLE_HOME/rdbms/admin下的utlu102i.sql,檢視產生的日誌.

SQL> SPOOL info.log
SQL> @utlu102i.sql
SQL> SPOOL OFF

copy oracle 9ipfile(D:oracleora92databaseINITzhangye.ORA)oracle 10gpfile(D:oracle10gdatabaseINITzhangye.ORA),檢查info.log,對oracle 10gpfile修改.

4.執行Oracle Net Configuration Assistant,生成10glistener.ora

5.rman備份DB.

6.stop所有oracle 9i的服務.

刪除oracle 9i的服務. C:> ORADIM -DELETE -SID test

新建oracle 10g的服務 C:> ORADIM -NEW -SID orcl -MAXUSERS 10 -STAMODE AUTO -PFILE D:oracle10gdatabaseINITzhangye.ORA

7.UPGRADE選項啟動DB. SQL> STARTUP UPGRADE

8.建立SYSAUX表空間CREATE TABLESPACE sysaux DATAFILE 'D:oracleoradatazhangyesysaux01.dbf'
SIZE 500M REUSE
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO
ONLINE;

9.執行10gORACLE_HOME/rdbms/admin/catupgrd.sql,然後執行utlu102s.sql檢視升級結果.

SQL> SPOOL upgrade.log
SQL> @catupgrd.sql
SQL> @utlu102s.sql
SQL> SPOOL OFF

檢查upgrade.log,如果有錯誤,處理錯誤後再次執行catupgrd.sql.

10.重新啟動DB,編譯無效物件.

SQL> shutdown immediate
SQL> startup pfile=D:oracle10gdatabaseINITzhangye.ORA
SQL> @D:oracle10gRDBMSADMINutlrp.sql

編譯後沒有無效物件,升級完成。

SQL> SELECT count(*) FROM dba_objects WHERE status='INVALID';

2.資料庫升級助手dbua:

dbua是一個圖形工具,它自動化了以上手工升級的所有過程,它自動完成如下工作:

1。執行Pre Upgrade Information Utility,對錶空間,redo logs等自動的做一些調整。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25736250/viewspace-702422/,如需轉載,請註明出處,否則將追究法律責任。

相關文章