在 Oracle Data Guard 環境中,主庫重命名資料檔案不會自動傳播至實體備庫,即使 STANDBY_FILE_MANAGEMENT=AUTO 也無效。必須在備庫手動執行對應操作。本文依循官方文件整理標準化流程。
主庫
ALTER TABLESPACE ... RENAME DATAFILE僅更新主庫控制檔。備庫控制檔、資料檔實體名稱、OMF 結構均需手動同步。
SQL> ALTER TABLESPACE tbs_4 OFFLINE;
% mv /disk1/oracle/oradata/payroll/tbs_4.dbf \
/disk1/oracle/oradata/payroll/tbs_x.dbf
SQL> ALTER TABLESPACE tbs_4 RENAME DATAFILE
'/disk1/oracle/oradata/payroll/tbs_4.dbf'
TO '/disk1/oracle/oradata/payroll/tbs_x.dbf';
SQL> ALTER TABLESPACE tbs_4 ONLINE;
SQL> SELECT SEQUENCE#, APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
SQL> SHUTDOWN;
% mv /disk1/oracle/oradata/payroll/tbs_4.dbf \
/disk1/oracle/oradata/payroll/tbs_x.dbf
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE RENAME FILE
'/disk1/oracle/oradata/payroll/tbs_4.dbf'
TO '/disk1/oracle/oradata/payroll/tbs_x.dbf';
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
若略過備庫手動重命名,後續嘗試刷新控制檔或套用 Redo 時將報錯:
ORA-00283: recovery session canceled due to errors
ORA-01157: cannot identify/lock datafile 4 - see DBWR trace file
ORA-01110: datafile 4: '/Disk1/oracle/oradata/payroll/tbs_x.dbf'
| 參數 | 操作階段 | 建議值 |
|---|---|---|
| STANDBY_FILE_MANAGEMENT | 備庫重命名控制檔時 | MANUAL |
| STANDBY_FILE_MANAGEMENT | 日常維護 | AUTO |
| DB_FILE_NAME_CONVERT | 路徑結構不同主備間 | 設定路徑轉換規則 |
BACKUP CONTROLFILE TO TRACE)。