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

Oracle 資料檔遷移實戰:離線移動 + 媒體恢復標準流程

     編輯:Oracle 資料庫基礎

資料檔跨目錄/磁碟遷移是 DBA 常態作業。本文以 Oracle 10g/11g/12c/19c 通用的離線移動 + 媒體恢復標準流程為主線,涵蓖錯誤處理、驗證步驟與新版本線上移動特性對比。

標準離線遷移流程 (適用所有版本)

-- 1. 離線目標資料檔
ALTER DATABASE DATAFILE '/old/path/ds.dbf' OFFLINE;

-- 2. OS 層複製/移動檔案 (cp/rsync/ASM cp)
$ cp /old/path/ds.dbf /new/path/ds.dbf

-- 3. 更新控制檔指標
ALTER DATABASE RENAME FILE '/old/path/ds.dbf' TO '/new/path/ds.dbf';

-- 4. 嘗試上線 (通常會報 ORA-01113 需媒體恢復)
ALTER DATABASE DATAFILE '/new/path/ds.dbf' ONLINE;
-- ORA-01113: file 5 needs media recovery
-- ORA-01110: data file 5: '/new/path/ds.dbf'

-- 5. 啟用自動恢復並執行媒體恢复
SET AUTORECOVERY ON;
RECOVER DATAFILE 5;  -- 文件號來自 V$DATAFILE.FILE#
-- Media recovery complete.

-- 6. 確認上線成功
ALTER DATABASE DATAFILE '/new/path/ds.dbf' ONLINE;

關鍵細節與避坑指南

  • 離線前檢查:若提示「檔案正在使用」,需先 SHUTDOWN IMMEDIATE; STARTUP MOUNT; 再離線。
  • 檔案號確認:RECOVER DATAFILE <file#> 的編號對應 V$DATAFILE.FILE#,非絕對檔案號 (AFN)。
  • 歸檔模式前提:媒體恢復要求資料庫處於 ARCHIVELOG 模式,且相關歸檔日誌完整可用。
  • 權限與路徑:新目錄需 oracle 使用者讀寫權限;ASM 環境用 ASMCMD cp 或 DBMS_FILE_TRANSFER。
  • 控制檔備份:RENAME 操作前後建議備份控制檔 (ALTER DATABASE BACKUP CONTROLFILE TO TRACE)。

12c/18c/19c 新特性:線上移動資料檔 (OMF/非 OMF 均支援)

-- 12c 起支援線上移動,無需離線/恢復
ALTER DATABASE MOVE DATAFILE '/old/path/ds.dbf' TO '/new/path/ds.dbf';
-- 可選:REUSE / KEEP / ENCRYPTION OFF 等子句

優勢:零停機、自動處理重做/撤銷、支援跨儲存類型 (檔案系統 ↔ ASM)。前提:資料庫開啟、歸檔模式、目標路徑可寫。

驗證清單

  1. SELECT FILE_NAME, TABLESPACE_NAME FROM DBA_DATA_FILES WHERE FILE_NAME LIKE '%ds.dbf%'; 路徑已更新
  2. SELECT STATUS, ENABLED FROM V$DATAFILE WHERE NAME LIKE '%ds.dbf%'; 顯示 ONLINE / READ WRITE
  3. SELECT * FROM V$RECOVER_FILE; 無殘留需恢復檔案
  4. 業務查詢測試:表空間相關物件正常存取

總結

離線移動 + 媒體恢復是通用鐵律流程,掌握其邏輯可應對所有版本。12c+ 環境優先使用 ALTER DATABASE MOVE DATAFILE 實現零停機遷移。無論哪種方式,「備份控制檔、確認歸檔完整、驗證檔案狀態」三步不可省略。

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