首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 資料庫手工遷移全攻略:跨平台、跨目錄的 Step-by-Step 實作指南

     編輯:Oracle 資料庫基礎

為何選擇手工遷移?

當資料庫體量龐大、資料檔案高達數百 GB 甚至 TB 級時,傳統的匯出/匯入不僅耗時極長,更容易遭遇空間不足、網路中斷等風險。此時,利用作業系統層級的複製指令,配合冷備份或熱備份策略,直接搬移實體檔案,往往是最高效、風險最低的選擇。本文以 RedHat Fedora Core 1 上的 Oracle 9.2.0.1 為例,詳細記錄跨伺服器、跨目錄結構的完整遷移流程,原理同樣適用於其他 Unix/Linux 平台及 Oracle 版本。

環境假設

  • 來源端(Server A):$ORACLE_BASE=/oracle,$ORACLE_HOME=/Oracle/product/9.2.0,SID=oraLinux
  • 目標端(Server B):$ORACLE_BASE=/u01/oracle,$ORACLE_HOME=/u01/Oracle/product/9.2.0,SID=oraLinux

遷移操作步驟詳解

1. 目標端預安裝 Oracle 軟體

在 Server B 上僅安裝 Oracle 軟體(不建立資料庫),並從 Server A 複製環境變數設定檔,修改其中的 $ORACLE_HOME 路徑指向新位置。

2. 參數檔轉換

若來源端使用 SPFILE,需先轉換為 PFILE:

CREATE PFILE FROM SPFILE;

3. 關閉來源資料庫

執行 SHUTDOWN IMMEDIATE 乾淨關閉。若業務不允許停機,需改用線上熱備份(資料庫必須處於 ARCHIVELOG 模式),原理類似,本文不贅述。

4. 完整備份關鍵檔案

使用 OS 指令複製下列所有檔案:

  • 所有資料檔(暫存檔如 temp01.dbf 可略過)
  • 所有線上重做日誌檔
  • 所有歸檔重做日誌檔
  • 所有控制檔
  • $ORACLE_HOME/dbs/init.ora(步驟 2 產生的 PFILE)
  • $ORACLE_HOME/dbs/orapw(密碼檔)
  • $ORACLE_HOME/network/admin/listener.ora(可略過,稍後重建)
  • $ORACLE_BASE/admin// 下的追蹤目錄(udump, cdump, bdump,可略過,稍後手工建立)

5. 檔案傳輸與目錄對齊

透過 FTP 或 scp 將備份檔上傳至 Server B 對應路徑。雖然邏輯目錄結構保持一致,但實體路徑已變更(如 /oracle → /u01/oracle),若目標端缺少對應目錄需手工建立。

6. 修改 PFILE 路徑參數

編輯上傳的 init.ora,將所有舊路徑替換為新路徑(如 control_files, db_dump_dest 等)。

7. 啟動至 NOMOUNT 階段

SQLPLUS "/ AS SYSDBA" 進入後,資料庫處於閒置狀態。

8. 由 PFILE 建立 SPFILE

CREATE SPFILE FROM PFILE;

9. 啟動至 MOUNT 階段

STARTUP MOUNT;

10. 修正控制檔中資料檔路徑

控制檔內記錄的是舊路徑,必須逐一重命名。可透過 SPOOL 產生腳本批次執行:

ALTER DATABASE RENAME FILE '/Oracle/oradata/oraLinux/system01.dbf'
TO '/u01/Oracle/oradata/oraLinux/system01.dbf';

對所有資料檔、線上日誌檔重複此操作。

11. 開啟資料庫

ALTER DATABASE OPEN; 此時資料庫已可正常存取。

12. 重建暫存表空間

因暫存檔未複製,需手工加入:

ALTER TABLESPACE TEMP ADD TEMPFILE
'/u01/Oracle/oradata/oraLinux/temp01.dbf' SIZE 20M;

13. 後續收尾工作

  • 更新 listener.ora 並重啟監聽器(9i 實例可自動註冊,順序影響註冊速度)。
  • 修改 /etc/oratab,確保 dbstart/dbshut 腳本生效。

關鍵提醒

全程務必確保檔案權限、擁有者一致;遷移後執行完整性檢查與效能基準測試;若採用熱備份遷移,別忘了套用歸檔日誌以達一致性復原點。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved