Oracle數(shù)據(jù)庫(kù)升級(jí)或數(shù)據(jù)遷移方法研究
一、數(shù)據(jù)庫(kù)升級(jí)的必要性
數(shù)據(jù)庫(kù)升級(jí)是數(shù)據(jù)庫(kù)管理員經(jīng)常要面對(duì)的問(wèn)題,如果你的應(yīng)用要使用新版本數(shù)據(jù)庫(kù)的新特性;如果數(shù)據(jù)庫(kù)運(yùn)行負(fù)載過(guò)重,而通過(guò)軟硬件調(diào)整又不能有根本性的改善;如果要更換操作系統(tǒng)平臺(tái);如果要增強(qiáng)數(shù)據(jù)庫(kù)的安全性;還有一個(gè)原因是隨著新版本數(shù)據(jù)庫(kù)的出現(xiàn)與成熟,oracle停止了對(duì)舊版本數(shù)據(jù)庫(kù)的技術(shù)支持,升級(jí)到高版本,可以繼續(xù)獲得oracle的支持,還可以利用新版本數(shù)據(jù)庫(kù)的新特新,可以改善系統(tǒng)的性能,健壯性,可擴(kuò)張性和可用性,等等,面對(duì)這些問(wèn)題,需要通過(guò)數(shù)據(jù)庫(kù)升級(jí)才得以解決。不過(guò),如果你的系統(tǒng)運(yùn)行穩(wěn)定,沒(méi)有大的性能瓶頸的話,還是不要輕易升級(jí)數(shù)據(jù)庫(kù),因?yàn)樯?jí)一個(gè)產(chǎn)品數(shù)據(jù)庫(kù)會(huì)面臨很多風(fēng)險(xiǎn).
二、數(shù)據(jù)庫(kù)升級(jí)或數(shù)據(jù)遷移情況分析
數(shù)據(jù)庫(kù)升級(jí)或數(shù)據(jù)遷移會(huì)遇到多種情況,一般有以下幾種情況:
1. 相同主機(jī)條件下,低版本數(shù)據(jù)庫(kù)向高版本數(shù)據(jù)庫(kù)的升級(jí)。
2. 數(shù)據(jù)庫(kù)有了新的補(bǔ)丁級(jí),需要安裝新的補(bǔ)丁。
3. 更換了系統(tǒng)主機(jī),如從windows更換為unix系統(tǒng),數(shù)據(jù)庫(kù)需要遷移。
4. 實(shí)現(xiàn)跨平臺(tái),跨數(shù)據(jù)庫(kù)版本的遷移。
5. 32位數(shù)據(jù)庫(kù)升級(jí)到64為數(shù)據(jù)庫(kù)。
6. 標(biāo)準(zhǔn)版的數(shù)據(jù)庫(kù)升級(jí)到企業(yè)版的數(shù)據(jù)庫(kù)。
三、制定詳細(xì)的數(shù)據(jù)庫(kù)升級(jí)計(jì)劃
數(shù)據(jù)庫(kù)升級(jí)操作會(huì)面臨巨大的風(fēng)險(xiǎn),因此在數(shù)據(jù)庫(kù)升級(jí)前制定詳細(xì)而周密的升級(jí)和測(cè)試計(jì)劃,反復(fù)驗(yàn)證與測(cè)試升級(jí)數(shù)據(jù)庫(kù)的各個(gè)階段非常必要,這樣才能保證升級(jí)產(chǎn)品數(shù)據(jù)庫(kù)的各個(gè)階段可理解,可預(yù)測(cè)并能夠成功。一般來(lái)說(shuō),數(shù)據(jù)庫(kù)升級(jí)的測(cè)試計(jì)劃應(yīng)該包括以下幾種測(cè)試類(lèi)型:
1. 升級(jí)測(cè)試(Upgrade testing)
2. 最小化測(cè)試(Minimal testing)。
3. 功能測(cè)試(Functional testing)。
4. 集成測(cè)試(Integration testing)。
5. 性能測(cè)試(Performance testing)。
6. 容量與負(fù)載壓力測(cè)試(Volume and load stress testing)。
7. 特定的升級(jí)前后的測(cè)試(Specific Pre-Upgrade and Post-Upgrade Tests)。
8. 制定升級(jí)前的備份方案。
9. 升級(jí)步驟的反復(fù)測(cè)試(test the upgrade process)。
10.升級(jí)后的數(shù)據(jù)庫(kù)的測(cè)試(test the upgraded database)。
以上是數(shù)據(jù)庫(kù)升級(jí)前需要考慮和測(cè)試的問(wèn)題,具體可以參考o(jì)racle數(shù)據(jù)庫(kù)提供的升級(jí)文檔,在此對(duì)各種要求的測(cè)試過(guò)程不做詳細(xì)討論。
四、數(shù)據(jù)庫(kù)升級(jí)準(zhǔn)備
1.升級(jí)數(shù)據(jù)庫(kù)前首先要熟悉新數(shù)據(jù)庫(kù)的各種新特性,如:表空間、段的管理、參數(shù)的變化,內(nèi)存的管理,數(shù)據(jù)庫(kù)回閃特性,存儲(chǔ)的管理,sql優(yōu)化的改進(jìn)等。
2.確定升級(jí)到新版本數(shù)據(jù)庫(kù)的升級(jí)路徑,升級(jí)到10gr2的路徑取決于當(dāng)前數(shù)據(jù)庫(kù)的發(fā)行號(hào)(release number),很有可能不能從當(dāng)前的數(shù)據(jù)庫(kù)版本升級(jí)到最新版本,這種情況首先升級(jí)到一個(gè)中間版本,然后再升級(jí)到最終的版本。例如:當(dāng)前版本是oracle9.1.0.1,首先升級(jí)到oracle9.1.0.4,然后再?gòu)膐racle9.1.0.4升級(jí)到oracle10gr2。
下表列出了各種版本升級(jí)到oracle10gr2的路徑:
3.選擇升級(jí)方法。
4.選擇oracle home目錄。
5.做好數(shù)據(jù)庫(kù)備份。
五、數(shù)據(jù)庫(kù)升級(jí)的各種方法討論
實(shí)現(xiàn)數(shù)據(jù)庫(kù)升級(jí)可以選擇多種方法,一般有:數(shù)據(jù)庫(kù)升級(jí)助手(database upgrade assistant),手工的腳本升級(jí),exp/imp(exdmp/imdmp)工具,表空間傳輸特性(transportable tablespace),table copy,實(shí)體化視圖(material ized view)等技術(shù),在升級(jí)前,首先確定升級(jí)路徑,根據(jù)具體情況選擇合適的升級(jí)方法,對(duì)升級(jí)過(guò)程的各個(gè)階段進(jìn)行測(cè)試。本文以軍衛(wèi)一號(hào)醫(yī)院信息系統(tǒng)為例,涉及的數(shù)據(jù)庫(kù)版本主要有oracle8i,oracle9i,oracle10gr2,操作系統(tǒng)平臺(tái)主要有windows2000,oracle unbreakable linux as 4等,主要實(shí)現(xiàn)oracle8i,oracle9i向oracle10gr2的升級(jí)過(guò)程,oracle8i,oracle9i運(yùn)行在windows2000上,oracle10gr2主要運(yùn)行在windows2000,oracle unbreakable linux as 4兩種平臺(tái),我使用以上各種方法對(duì)各種升級(jí)過(guò)程都做了測(cè)試。以下詳細(xì)介紹這些方法的升級(jí)過(guò)程。
1、手工腳本升級(jí)
手工腳本升級(jí)在命令行運(yùn)行一些sql腳本和工具,手工升級(jí)對(duì)升級(jí)過(guò)程提供了更多的控制,但是如果沒(méi)有遵循嚴(yán)格的升級(jí)步驟,在升級(jí)過(guò)程中容易出錯(cuò),它與dbua一樣只能在相同的操作系統(tǒng)平臺(tái)間跨數(shù)據(jù)庫(kù)版本升級(jí),對(duì)于不同的os平臺(tái)不能使用,而且升級(jí)需要遵循嚴(yán)格的升級(jí)路徑。
本測(cè)試從oracle9.2.0.1升級(jí)到oracle10.2.0.3,由于oracle9.2.0.1不能直接升級(jí)到oracle10.2.0.3,首先對(duì)oracle9.2.0.1安裝補(bǔ)?。ㄑa(bǔ)丁號(hào)p3095277_9204_WINNT)升級(jí)到oracle9.2.0.4,然后oracle9.2.0.4再升級(jí)到oracle10.2.0.3。以下是升級(jí)的測(cè)試過(guò)程:
1.安裝oracle 10g r2的軟件。
2.打oracle 10g最新的補(bǔ)丁,我打的是升級(jí)到10.2.0.2(補(bǔ)丁號(hào)p4547817_10202_WINNT)和10.2.0.3(補(bǔ)丁號(hào)p5948242_10203_WINNT)的補(bǔ)丁,關(guān)于如何安裝oracle補(bǔ)丁程序,需要認(rèn)真閱讀每個(gè)補(bǔ)丁程序提供的readme,按照readme的步驟進(jìn)行安裝。
3.運(yùn)行Pre-Upgrade Information Tool.分析升級(jí)到10g前要做的一些操作,包括:
數(shù)據(jù)庫(kù)版本、日志文件大小、 表空間大小、 服務(wù)器選項(xiàng)、 初始化參數(shù)(新增的,降級(jí)的,廢棄的)、數(shù)據(jù)庫(kù)組件 、sysaux表空間、 集群信息等分析。升級(jí)前要解決該腳本生成的各種問(wèn)題。
啟動(dòng)要升級(jí)的DB,用SYSDBA運(yùn)行10g的ORACLE_HOME/rdbms/admin下的utlu102i.sql,查看產(chǎn)生的日志.
SQL> SPOOL info.log
SQL> @utlu102i.sql
SQL> SPOOL OFF
copy oracle 9i的pfile(D:oracleora92databaseINITzhangye.ORA)到oracle 10g的pfile(D:oracle10gdatabaseINITzhangye.ORA),檢查info.log,對(duì)oracle 10g的pfile修改.
4.運(yùn)行Oracle Net Configuration Assistant,生成10g的listener.ora
5.rman備份DB.
6.stop所有oracle 9i的服務(wù).
刪除oracle 9i的服務(wù). C:> ORADIM -DELETE -SID test
新建oracle 10g的服務(wù) C:> ORADIM -NEW -SID orcl -MAXUSERS 10 -STAMODE AUTO -PFILE D:oracle10gdatabaseINITzhangye.ORA
7.UPGRADE選項(xiàng)啟動(dòng)DB. SQL> STARTUP UPGRADE
8.創(chuàng)建SYSAUX表空間CREATE TABLESPACE sysaux DATAFILE 'D:oracleoradatazhangyesysaux01.dbf'
SIZE 500M REUSE
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO
ONLINE;
9.運(yùn)行10g的ORACLE_HOME/rdbms/admin/catupgrd.sql,然后運(yùn)行utlu102s.sql查看升級(jí)結(jié)果.
SQL> SPOOL upgrade.log
SQL> @catupgrd.sql
SQL> @utlu102s.sql
SQL> SPOOL OFF
檢查upgrade.log,如果有錯(cuò)誤,處理錯(cuò)誤后再次運(yùn)行catupgrd.sql.
10.重新啟動(dòng)DB,編譯無(wú)效對(duì)象.
SQL> shutdown immediate
SQL> startup pfile=D:oracle10gdatabaseINITzhangye.ORA
SQL> @D:oracle10gRDBMSADMINutlrp.sql
編譯后沒(méi)有無(wú)效對(duì)象,升級(jí)完成。
SQL> SELECT count(*) FROM dba_objects WHERE status='INVALID';
2、數(shù)據(jù)庫(kù)升級(jí)助手dbua:
dbua是一個(gè)圖形工具,它自動(dòng)化了以上手工升級(jí)的所有過(guò)程。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Oracle使用like查詢(xún)時(shí)對(duì)下劃線的處理方法
這篇文章主要介紹了Oracle使用like查詢(xún)時(shí)對(duì)下劃線的處理方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03oracle中l(wèi)ength、lengthb、substr、substrb函數(shù)用法介紹
這篇文章主要介紹了oracle中l(wèi)ength、lengthb、substr、substrb函數(shù)用法的相關(guān)內(nèi)容,具有一定參考價(jià)值,需要的朋友可以參考下。2017-09-09plsql 連接oracle數(shù)據(jù)庫(kù)詳細(xì)配置的方法步驟
這篇文章主要介紹了plsql 連接oracle數(shù)據(jù)庫(kù)詳細(xì)配置的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09在Oracle數(shù)據(jù)庫(kù)中添加外鍵約束的方法詳解
這篇文章主要介紹了在Oracle數(shù)據(jù)庫(kù)中添加外鍵約束的方法,需要的朋友可以參考下2016-01-01解決Oracle RMAN刪除歸檔日志不釋放問(wèn)題的方法
RMAN清除方式會(huì)自動(dòng)清除磁盤(pán)上的歸檔日志文件,同時(shí)會(huì)釋放控制文件中對(duì)應(yīng)的歸檔日志的歸檔信息,但最近在使用中就遇到了一個(gè)問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于解決Oracle RMAN刪除歸檔日志不釋放問(wèn)題的方法,需要的朋友可以參考下。2017-07-07Oracle 11g 新特性 Flashback Data Archive 使用實(shí)例
這篇文章主要介紹了Oracle 11g 新特性 Flashback Data Archive 使用實(shí)例,Flashback Data Archive 的主要作用是在它的有效期內(nèi)將保存事務(wù)改變的信息,需要的朋友可以參考下2014-07-07Orancle的SQL語(yǔ)句之多表查詢(xún)和組函數(shù)
這篇文章主要介紹了Orancle的SQL語(yǔ)句之多表查詢(xún)和組函數(shù)的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-11-11oracle創(chuàng)建新用戶(hù)以及用戶(hù)權(quán)限配置、查詢(xún)語(yǔ)句
在Oracle數(shù)據(jù)庫(kù)中要?jiǎng)?chuàng)建一個(gè)用戶(hù)并僅賦予查詢(xún)權(quán)限,你可以按照以下步驟進(jìn)行操作,這篇文章主要給大家介紹了關(guān)于oracle創(chuàng)建新用戶(hù)以及用戶(hù)權(quán)限配置、查詢(xún)語(yǔ)句的相關(guān)資料,需要的朋友可以參考下2024-03-03