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

Oracle 12c 在線重命名/移動數據文件新特性全解析:MOVE DATAFILE、KEEP、REUSE、文件號操作實戰

     編輯:Oracle 資料庫基礎

Oracle 12c 引入 ALTER DATABASE MOVE DATAFILE 命令,實現數據文件在線重命名、移動,無需離線表空間、無需停機,大幅提升高可用性。本文通過建立測試表空間 TBS_FILE_TO_MOVE,演示四種典型場景:基本重命名、KEEP 保留舊文件、REUSE 覆蓋目標、按文件號操作。

環境準備

CREATE SMALLFILE TABLESPACE TBS_FILE_TO_MOVE
DATAFILE '/u01/app/oracle/oradata/NONCDB/file_to_move.dbf'
SIZE 100M AUTOEXTEND ON NEXT 100M LOGGING
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
SEGMENT SPACE MANAGEMENT AUTO;

驗證初始狀態:

SELECT name, status FROM v$datafile WHERE name LIKE '%file_to_move%';
-- /u01/.../file_to_move.dbf  ONLINE
!ls /u01/app/oracle/oradata/NONCDB/file_to_move*
-- file_to_move.dbf

場景一:基本在線重命名

ALTER DATABASE MOVE DATAFILE
'/u01/app/oracle/oradata/NONCDB/file_to_move.dbf'
TO '/u01/app/oracle/oradata/NONCDB/file_to_move2.dbf';

結果:控制文件與 OS 目錄同步更新為 file_to_move2.dbf,狀態仍為 ONLINE。
對比:舊語法 ALTER DATABASE RENAME FILE 需離線數據文件,否則報 ORA-01121。

場景二:KEEP 關鍵字——保留舊文件副本

ALTER DATABASE MOVE DATAFILE
'/u01/app/oracle/oradata/NONCDB/file_to_move2.dbf'
TO '/u01/app/oracle/oradata/NONCDB/file_to_move1.dbf' KEEP;

效果:

  • 控制文件僅記錄新文件 file_to_move1.dbf(ONLINE)
  • OS 目錄同時存在舊文件 file_to_move2.dbf 與新文件
  • 適用場景:遷移存儲時保留舊副本備份,驗證無誤後手工刪除

場景三:REUSE 關鍵字——覆蓋同名目標文件

ALTER DATABASE MOVE DATAFILE
'/u01/app/oracle/oradata/NONCDB/file_to_move1.dbf'
TO '/u01/app/oracle/oradata/NONCDB/file_to_move2.dbf' REUSE;

因場景二保留了 file_to_move2.dbf,直接 MOVE 會報錯「文件已存在」。REUSE 強制覆蓋,操作完成後 OS 僅剩 file_to_move2.dbf,控制文件同步更新。

場景四:按文件號操作——無需指定完整路徑

SELECT file# FROM v$datafile WHERE name = '/u01/.../file_to_move2.dbf';
-- FILE# = 100

ALTER DATABASE MOVE DATAFILE 100 TO '/u01/app/oracle/oradata/NONCDB/file_to_move1.dbf';

通過 FILE# 直接定位文件,適合腳本化批量操作、避免路徑拼寫錯誤。

關鍵優勢總結

特性12c MOVE DATAFILE傳統 RENAME FILE
在線操作✅ 支持❌ 需 OFFLINE
業務影響零中斷應用報錯/掛起
同步更新控制文件 + OS 同步需手工 OS mv + RENAME
KEEP/REUSE內建支持無
文件號操作支持不支持

注意事項

  • 源文件必須 ONLINE、表空間 READ WRITE。
  • 目標目錄需 Oracle 進程有寫入權限、足夠空間。
  • CDB 環境下需在 CDB$ROOT 或 PDB 中執行,視文件所屬容器而定。
  • 操作期間會產生少量 Redo,Data Guard 環境會自動傳輸到備庫同步執行。

總結

ALTER DATABASE MOVE DATAFILE 是 12c 高可用性的代表性特性,配合 KEEP/REUSE/FILE# 靈活選項,覆蓋從存儲遷移、文件重命名到腳本化運維的全場景需求,徹底告別「停機移文件」時代。

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