控制檔損壞會導致資料庫掛點。若僅建立單一 ASM 磁碟組,ASM 預設僅建立一個控制檔,風險極高。本文示範如何在 ASM 中配置三個控制檔並使用直觀命名。
SQL> SHOW PARAMETER control_files;
SQL> SHOW PARAMETER db_create_file_dest; -- 假設為 +DATA
SQL> ALTER SYSTEM RESET CONTROL_FILES SCOPE=SPFILE SID='*';
SQL> STARTUP NOMOUNT;
RMAN> RESTORE CONTROLFILE FROM '/home/oracle/control01.ctl';
-- 輸出檔名如 +DATA/test/controlfile/current.1623.640347437
SQL> ALTER DATABASE MOUNT;
SQL> ALTER DATABASE BACKUP CONTROLFILE TO '+DATA/test/controlfile/control01.ctl';
SQL> ALTER SYSTEM SET CONTROL_FILES='+DATA/test/controlfile/control01.ctl' SCOPE=SPFILE;
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP NOMOUNT;
SQL> ALTER DATABASE MOUNT;
SQL> ALTER DATABASE BACKUP CONTROLFILE TO '+DATA/test/controlfile/control02.ctl';
SQL> ALTER DATABASE BACKUP CONTROLFILE TO '+DATA/test/controlfile/control03.ctl';
SQL> ALTER SYSTEM SET CONTROL_FILES=
'+DATA/test/controlfile/control01.ctl',
'+DATA/test/controlfile/control02.ctl',
'+DATA/test/controlfile/control03.ctl' SCOPE=SPFILE;
SQL> STARTUP NOMOUNT;
SQL> ALTER DATABASE MOUNT;
ASMCMD> ls
control01.ctl
control02.ctl
control03.ctl
current.1623.640347437
...
ASM 內部仍以系統命名方式儲存,上述具名檔案實為別名連結,滿足多重控制檔的高可用需求。