數據文件 (.dbf) 通常佔用大量磁盤空間,業務增長常需將其遷移至更大容量的存儲設備或不同掛載點。本文詳細說明歸檔模式與非歸檔模式下的遷移操作流程。
SELECT file_name FROM dba_data_files;
-- 或
SELECT name FROM v$datafile;
記錄需遷移文件的完整路徑與名稱。
優勢:業務可在線操作,僅需短暫離線目標表空間。
ALTER TABLESPACE users OFFLINE NORMAL;
cp /old/path/users01.dbf /new/path/users01.dbf
ALTER TABLESPACE users RENAME DATAFILE
'/old/path/users01.dbf' TO '/new/path/users01.dbf';
ALTER TABLESPACE users ONLINE;
注意:系統/Undo 表空間遷移需關閉數據庫至 MOUNT 狀態執行 ALTER DATABASE RENAME FILE。
必須完全關閉數據庫,冷備份文件後再修改路徑。
-- 1. 確認非歸檔模式
ARCHIVE LOG LIST;
-- Database log mode: No Archive Mode
-- 2. 查看需遷移文件
SELECT name FROM v$datafile;
-- /opt/oracle/test.dbf 需遷移至 /opt/oracle/oradata/conner/test.dbf
-- 3. 關閉數據庫
SHUTDOWN IMMEDIATE;
-- 4. OS 複製文件
! cp /opt/oracle/test.dbf /opt/oracle/oradata/conner/test.dbf
-- 5. 啟動至 MOUNT 狀態
STARTUP MOUNT;
-- 6. 修改文件路徑
ALTER DATABASE RENAME FILE
'/opt/oracle/test.dbf' TO '/opt/oracle/oradata/conner/test.dbf';
-- 7. 打開數據庫
ALTER DATABASE OPEN;
-- 8. 驗證
SELECT name FROM v$datafile;
| 維度 | 歸檔模式 | 非歸檔模式 |
|---|---|---|
| 業務影響 | 僅影響目標表空間訪問 | 全庫停機 |
| 操作狀態 | OPEN / 表空間 OFFLINE | MOUNT |
| 命令對象 | ALTER TABLESPACE RENAME DATAFILE | ALTER DATABASE RENAME FILE |
| 恢復能力 | 可時間點恢復 | 僅能冷備份恢復 |
SELECT file_name FROM dba_data_files; 確認新路徑生效SELECT tablespace_name, status FROM dba_tablespaces; 確認表空間 ONLINEALTER SYSTEM SWITCH LOGFILE; 觸發歸檔驗證寫入正常rsync -avP 或存儲層面的 Clone/Replication 功能,減少業務窗口。