您的位置:首頁技術文章
文章詳情頁

詳細講解Oracle數據庫的數據遷移方法

瀏覽:103日期:2023-11-27 12:45:20
這篇論壇文章(賽迪網技術社區)主要介紹了Oracle數據庫的數據遷移方法,詳細內容請大家參考下文:

隨著數據庫管理系統和操作系統平臺的更新換代的速度的加快,數據庫管理員經常需要在兩個不同的數據庫之間或在兩種不同的系統平臺之間進行數據遷移。本文介紹了數據庫數據遷移的一般步驟以及實現向Oracle8i數據庫進行數據遷移的幾種方法,并對它們的優缺點做了對比分析。

在開發環境向運行環境轉換、低版本數據庫向高版本數據庫轉換以及兩個不同數據庫之間進行轉換時,數據庫中的數據(包括結構定義)需要被轉移并使之正常運行,這就是數據庫中的數據遷移。對于中小型數據庫,如Foxpro中的*.dbf,這種遷移非常簡單,一般只需通過簡單的Copy就能完成。但對于大型數據庫系統,如Oracle 數據庫,數據遷移就不那么簡單了,它需要利用一定的技術和經驗,有步驟按計劃地完成。

數據遷移的一般步驟

對數據庫管理人員來說,數據庫數據遷移極具挑戰性,一旦措施不當,珍貴的數據資源將面臨丟失的危險,要成功地實現數據庫數據平滑遷移,需要周密計劃和充分準備,并按照一定的步驟來完成。

設計數據遷移方案

設計數據遷移方案主要包括以下幾個方面工作:研究與數據遷移相關的資料,或在網站上查詢相關內容、評估和選擇數據遷移的軟硬件平臺、選擇數據遷移方法、選擇數據備份和恢復策略、設計數據遷移和測試方案等。

進行數據模擬遷移

根據設計的數據遷移方案,建立一個模擬的數據遷移環境,它既能仿真實際環境又不影響實際數據,然后在數據模擬遷移環境中測試數據遷移的效果。數據模擬遷移前也應按備份策略備份模擬數據,以便數據遷移后能按恢復策略進行恢復測試。

測試數據模擬遷移

根據設計的數據遷移測試方案測試數據模擬遷移,也就是檢查數據模擬遷移后數據和應用軟件是否正常,主要包括:數據一致性測試、應用軟件執行功能測試、性能測試、數據備份和恢復測試等。

準備實施數據遷移

數據模擬遷移測試成功后,在正式實施數據遷移前還需要做好以下幾個方面工作:進行完全數據備份、確定數據遷移方案、安裝和配置軟硬件等。

正式實施數據遷移

按照確定的數據遷移方案,正式實施數據遷移。

測試數據遷移效果

按照數據遷移測試方案測試數據遷移效果,并對數據遷移后的數據庫參數和性能進行調整,使之滿足數據遷移后實際應用系統的需要。

移植系統應用軟件

將實際應用系統的應用軟件移植到數據遷移后的數據庫系統上,并使之正常運行。

正式運行應用系統

在正式實施數據遷移成功并且數據庫參數和性能達到要求后,就可以正式運行應用系統,并投入實際使用。

實現向Oracle8i數據遷移

Oracle數據庫數據遷移可以從一個版本遷移到另一個版本(即升級),也可以從一個主版本遷移到另一個主版本(即移植),例如從Oracle7遷移到Oracle8;可以從一個系統平臺遷移到另一個系統平臺,例如從Unix系統遷移到Windows NT系統;也可以從非Oracle數據庫遷移到Oracle數據庫,例如從MS SQL Server遷移到 Oracle數據庫。在實現Oracle數據庫數據遷移前,需要了解以下幾個方面的問題:對數據庫系統的要求、對 Oracle數據庫DB_Block_Size的要求、對Oracle使用字符集的要求、對SQL*NET版本的要求、對操作系統平臺的要求等。

Oracle數據庫系統本身提供了實現Oracle數據庫數據遷移的多種工具,我們還可以利用PowerBuilder的數據管道功能實現Oracle數據庫數據遷移。當前Oracle數據庫的較新版本是Oracle8i,以下介紹可以實現數據庫數據遷移到Oracle8i的幾種方法:

方法1:移植實用程序(Migration Utility)

MIG是Oracle提供的用于Oracle數據庫之間數據遷移的命令行方式實用程序。使用MIG遷移Oracle7的數據到Oracle8i的一般步驟為:

設置 Oracle7數據庫環境變量,包括運行注冊表編輯器(regedit.exe)和控制面板,設置Oracle7主目錄、字符集和可執行文件路徑等,并在DOS 命令提示符下設置Oracle_sid=Oracle7_sid,并正常關閉Oracle7數據庫。

運行Oracle8i的MIG應用程序,生成一個轉換文件,用于數據庫轉換。

從Windows NT控制面板終止Oracle7數據庫服務,并使用實例管理器刪除Oracle7數據庫服務。

設置Oracle8i數據庫環境變量,包括運行注冊表編輯器(regedit.exe)和控制面板,設置Oracle8i主目錄、字符集和可執行文件路徑等;由oradim 命令使用Oracle7_sid和init.ora文件創建Oracle8i服務;重新命名數據庫控制文件;編輯init.ora文件,設置compatible為8.1.5.0.0;刪除init.ora文件中不再使用的參數;在DOS命令提示符下設置Oracle_Sid=Oracle8_sid。

實現數據遷移,以內部用戶賬號連接服務器管理器;以非登錄方式啟動Oracle8i數據庫;由alter database covert命令生成新的控制文件,并把文件頭轉換為Oracle8i數據庫文件格式;由alter database open resetlog命令打開數據庫并且重新設置日志文件;由spool migscripts.log命令創建輸出目標文件,該文件保存前面命令腳本文件的運行結果;運行u0703030.sql,當使用數據庫高級復制功能選項時,運行Catrep.sql,當使用Oracle Parallel Server選項時,運行catparr.sql;由spool out命令結束結果輸出,并關閉數據庫和備份數據庫。 ]

查看migscripts.out spool文件,確認腳本文件執行成功,如果腳本文件沒有成功執行,返回到腳本文件,檢查可能出現的問題。

方法2:Oracle 數據移植助理(Oracle data Migration Assistant)

Oracle數據移植助手用于將Oracle7數據庫移植到 Oracle8數據庫。升級Oracle8數據庫較早版本到Oracle8數據庫新版本。Oracle數據移植助手不用于升級較低版本Oracle7數據庫到較高版本Oracle7數據庫。使用Oracle數據移植助手遷移Oracle7數據庫數據到Oracle8i的一般步驟是:

關閉Oracle7數據庫,終止所有Oracle數據庫服務;編輯init.ora文件,設置compatible為8.1.5.0.0;刪除init.ora文件中不再使用的參數。

運行Oracle數據移植助手,在Database Instance頁,選擇移植的數據庫實例,輸人internal用戶賬號密碼,并提供init.ora文件位置;在Moving the Database頁,指定數據庫移植的新位置;如果用戶還沒有進行備份,在Backup the Database 頁,允許用戶進行數據庫備份;在Character Set頁,指定移植后的數據庫使用的字符集。

開始移植過程。移植過程需要的時間取決于系統內存容量、硬盤速度、CPU速度等因素。

移植完成后,可以查看Migration Report頁,檢查移植是否成功執行。如果移植沒有成功,應當把數據庫系統返回到備份的Oracle7數據庫。

編輯init.ora文件,添加在Oracle8i數據庫中會用到的參數。刪除在移植過程中用到的舊的控制文件。

當使用數據庫高級復制功能選項時,運行catrep.sql;當使用Oracle Parallel Server選項時,運行catparr.sql。

方法3:導入/導出工具(Export/Import)

當需要從一個非PC的系統平臺(例如,Unix系統)遷移數據庫時,導人/導出方式是一種非常有用的策略,當然相同系統平臺的數據遷移導人/導出方式同樣適用。采用導入/導出方式遷移Oracle7 Database on Unix到 Oracle8i Database on Windows NT數據庫的一般步驟是:

以正常方式關閉Unix系統的 Oracle7數據庫系統,不要立即終止或者異常終止,然后冷備份數據庫。打開數據庫,使用導出工具(Export Utility)進行數據庫的完全導出。

在Windows NT系統安裝Oracle8i數據庫軟件并創建啟動數據庫。

使用FTP,將文件傳輸到Windows NT計算機。必須使用FTP的binary傳輸模式,否則,可能造成讀導出轉儲文件錯誤。

確認目標數據庫在運行,并在DOS命令提示符下設置oracle_sid=Oracle8i_SID。

使用導出轉儲文件,執行到目標數據庫完全的導人。

查看導入日志文件,確認數據庫導入執行成功。

方法4:SQl*Loader工具

SQL*Loader可以將ASCII文件中的數據裝入Oracle數據庫。ASCII文件中的信息可以來自不同的數據源,例如其他Oracle數據庫、非Oracle數據庫以及電子表格等。

采用SQl*Loader工具將數據遷移到Oracle數據庫的一般步驟有:

使用文本文件編輯器創建控制文件。

在DOS命令行下使用sqlldr命令裝載數據文件。

驗證數據是否正確裝載。

方法5:SQL*PLUS COPY 命令

使用SQL*PLUS COPY命令,遷移Oracle7數據庫到 Oracle8i與導人/導出方式相似,但是,此時需要兩個數據庫都在線,其一般步驟是:

首先安裝Oracle8i數據庫,并創建一個數據庫作為目標數據庫。

添加所需的表空間和用戶到目標數據庫中;安裝所需的SQL*Net2或者Net8軟件,并配置用于連接數據庫的別名。

在DOS命令提示符下設置oracle_sid=Oracle7_sid。

以Internal用戶賬號連接SQL*PLUS。

創建一個從Oracle7數據庫到Oracle8i數據庫的數據庫鏈接;使用SQL*PLUS COPY命令從Oracle7數據庫復制表和表內容到Oracle8i數據庫。

將視圖、同義詞、存儲過程等添加到目標數據庫。

方法6:PowerBuilder數據管道工具(Pipeline)

PowerBuilder數據管道工具是PowerBuilder提供的一個用于轉換數據的智能對象,它可以在圖形方式下實現不同類型數據庫間的數據遷移而無需SQL 編程。PowerBuilder數據管道的操作是在圖形方式下實現的,因此比較簡單,其一般步驟是:

啟動PowerBuilder。

點擊工具欄上的“DBProfile'按鈕,通過ODBC或專用接口配置源和目標數據庫連接,同時連接到源和目標數據庫。

單擊工具欄上的“Pipeline'按鈕,建一個新的數據管道,確定好源和目標數據庫。

選擇要傳輸數據的表,并根據需要選中想傳輸的列。

選擇數據遷移方式,Create-AddTable(在目標庫中建立一個新表并復制數據)、Replace-Drop/AddTable(刪除舊表并復制數據)、Refresh -DeleteRows(刪除表中的現有數據并復制數據)、Append-InsertRows(在現有數據基礎上增加新數據)、Update-Update/InsertRows(新增數據的鍵值如果與現有數據某行的鍵值一樣則覆蓋現有數據,否則插入新數據)。

單擊“Execute'按鈕運行定義好的數據管道完成數據遷移。

標簽: Oracle 數據庫
国产综合久久一区二区三区