適用於資料量大 (TB 級)、無法容忍長時間匯出匯入、目標機器目錄結構不同 (如 /oracle → /u01/oracle) 的場景。
$ORACLE_BASE=/oracle, $ORACLE_HOME=/oracle/product/9.2.0, SID=oraLinux$ORACLE_BASE=/u01/oracle, $ORACLE_HOME=/u01/oracle/product/9.2.0, 同 SID$ORACLE_HOME/dbs/init<SID>.ora (或 spfile) 至目標同路徑,修改路徑參數。SQL> CREATE PFILE FROM SPFILE; 生成 init<SID>.ora。SQL> SHUTDOWN IMMEDIATE;| 檔案類型 | 來源範例路徑 | 備註 |
|---|---|---|
| Datafiles | /oracle/oradata/oraLinux/*.dbf | 含 SYSTEM, SYSAUX, USERS, UNDO... 排除暫存檔 (temp*.dbf) |
| Online Redo Logs | /oracle/oradata/oraLinux/redo*.log | 必須複製 |
| Archived Redo Logs | /oracle/oradata/oraLinux/archive/*.arc | 若啟用歸檔模式 |
| Control Files | /oracle/oradata/oraLinux/control*.ctl | 所有控制檔 |
| Parameter File | $ORACLE_HOME/dbs/init<SID>.ora | 步驟 2 產生 |
| Password File | $ORACLE_HOME/dbs/orapw<SID> | 若使用密碼檔驗證 |
| Listener.ora | $ORACLE_HOME/network/admin/listener.ora | 可選,目標重建亦可 |
| Admin 目錄 | $ORACLE_BASE/admin/oraLinux/* | bdump, udump, cdump, pfile... 可選,目標手建亦可 |
$ORACLE_BASE。init<SID>.ora 內所有舊路徑 (/oracle) 批次替換為新路徑 (/u01/oracle)。SQL> STARTUP MOUNT PFILE='/u01/oracle/product/9.2.0/dbs/init<SID>.ora';
-- 或 CREATE SPFILE FROM PFILE; 後 STARTUP MOUNT;
SQL> ALTER DATABASE RENAME FILE '/oracle/oradata/oraLinux/system01.dbf' TO '/u01/oracle/oradata/oraLinux/system01.dbf';
-- 對所有 datafile, redo log 逐一執行,建議用 SPOOL 產生腳本
SQL> ALTER DATABASE OPEN;SQL> ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/oracle/oradata/oraLinux/temp01.dbf' SIZE 20M;listener.ora、/etc/oratab、驗證服務自動註冊、備份新控制檔。oracle:dba,權限 640/660。