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

Oracle 資料庫檔案遷移實戰:Windows 平台 C 槽至 D 槽離線移動完整步驟

     編輯:Oracle 資料庫基礎

資料成長導致系統盤空間不足時,需將 Oracle 資料檔離線移動至大容量磁碟。本文以 Windows + Oracle 8i 為例,演示從 C:\ORA8\ORADATA\ORACLE\ 移動至 D:\ORADATA\ 的標準化流程:查詢檔案清單 → 關庫 → 複製檔案 → MOUNT 狀態 RENAME → 開庫驗證。

前置查詢:確認所有資料檔路徑

SQL> SELECT file_name FROM sys.dba_data_files;
FILE_NAME
--------------------------------------------------------
C:\ORA8\ORADATA\ORACLE\USERS01.DBF
C:\ORA8\ORADATA\ORACLE\DR01.DBF
C:\ORA8\ORADATA\ORACLE\TOOLS01.DBF
C:\ORA8\ORADATA\ORACLE\INDX01.DBF
C:\ORA8\ORADATA\ORACLE\RBS01.DBF
C:\ORA8\ORADATA\ORACLE\TEMP01.DBF
C:\ORA8\ORADATA\ORACLE\SYSTEM01.DBF

記錄 7 個檔案完整路徑與檔名。

單一檔案移動標準流程

以 USERS01.DBF 為例,其他檔案重複此流程。

1. 關閉資料庫 (SHUTDOWN IMMEDIATE)

C:\> svrmgrl
SVRMGR> CONNECT INTERNAL
SVRMGR> SHUTDOWN IMMEDIATE
-- 等待提示:Database closed. Database dismounted. ORACLE instance shut down.
SVRMGR> EXIT

2. 作業系統層複製檔案

COPY C:\ORA8\ORADATA\ORACLE\USERS01.DBF  D:\ORADATA\USERS01.DBF

建議複製而非移動,驗證成功後再刪除來源。

3. MOUNT 狀態下 RENAME FILE

C:\> svrmgrl
SVRMGR> CONNECT INTERNAL
SVRMGR> STARTUP MOUNT
-- 等待提示:Database mounted.

SVRMGR> ALTER DATABASE RENAME FILE 
  'C:\ORA8\ORADATA\ORACLE\USERS01.DBF' 
  TO 'D:\ORADATA\USERS01.DBF';
-- 提示:Statement processed.

SVRMGR> ALTER DATABASE OPEN;
SVRMGR> EXIT

4. 驗證

SQL> SELECT file_name FROM sys.dba_data_files WHERE tablespace_name = 'USERS';
FILE_NAME
------------------------------
D:\ORADATA\USERS01.DBF

批次移動所有檔案腳本化建議

-- 1. 產生 RENAME 腳本
SELECT 'ALTER DATABASE RENAME FILE ''' || file_name || ''' TO ''' || 
       REPLACE(file_name, 'C:\ORA8\ORADATA\ORACLE\', 'D:\ORADATA\') || ''';'
FROM sys.dba_data_files
SPOOL rename_files.sql
-- 2. 關庫 → 複製所有檔案 → MOUNT → 執行 rename_files.sql → OPEN

關鍵注意事項

  • 必須 SHUTDOWN IMMEDIATE,不可 ABORT(需一致性關閉)
  • 控制檔、Redo Log 同樣適用此流程(控制檔需修改 CONTROL_FILES 參數並重啟)
  • Tempfile 可直接刪除重建(ALTER TABLESPACE TEMP ADD TEMPFILE ...),無需 RENAME
  • 移動後立即完整備份(含控制檔、參數檔)
  • 若啟用 OMF (Oracle Managed Files),建議用 DB_CREATE_FILE_DEST 參數遷移

現代版本簡化語法 (10g+)

ALTER DATABASE MOVE DATAFILE 'old_path' TO 'new_path';  -- 線上移動,無需關庫

結語

資料檔遷移 = 一致性關閉 → 檔案複製 → 元資料更新 → 一致性開啟。Windows 平台用 SVRMGR (8i/9i) 或 SQL*Plus (10g+),核心邏輯不變。備份驗證是最後防線,遷移未備份等於裸奔。

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