Oracle 12c 引入 MGMTDB (Management Database) 作為 Cluster Health Monitor (CHM) 的數據倉庫,存儲節點 OS 指標歷史數據。MGMTDB 實際是一個單實例 CDB (Container Database),運行在 GI 管理的節點上 (通常為 Hub 節點或第一個節點)。因磁盤空間調整、存儲遷移、性能優化等原因,需移動其數據文件、日志文件、控制文件。本文記錄標準移動流程。
+OCR/_MGMTDB/...),共享存儲上。-MGMTDB,服務名 _mgmtdb。
# 以 grid 用戶
$ srvctl config mgmtdb
Database unique name: _mgmtdb
Database name:
Oracle home: /u01/app/12.1.0/grid
Spfile: +OCR/_MGMTDB/PARAMETERFILE/spfile.265.123456
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Type: Management
$ sqlplus / as sysdba
SQL> SELECT name FROM v$datafile;
SQL> SELECT member FROM v$logfile;
SQL> SELECT name FROM v$controlfile;
$ srvctl stop mgmtdb
# 等待實例完全關閉
方案 A:ASM 命令行 cp (推薦,在線可行但此處已停庫)
asmcmd cp +OCR/_MGMTDB/DATAFILE/sysaux.260.123456 +DATA2/_MGMTDB/DATAFILE/sysaux.260.123456
asmcmd cp +OCR/_MGMTDB/DATAFILE/system.259.123456 +DATA2/_MGMTDB/DATAFILE/system.259.123456
... 所有數據文件、日志文件、控制文件
方案 B:RMAN 備份還原 (跨存儲類型/跨主機)
RMAN> BACKUP AS COPY DATABASE FORMAT '+DATA2/_MGMTDB/%U';
RMAN> RESTORE CONTROLFILE FROM '+DATA2/_MGMTDB/controlfile.bak';
RMAN> CATALOG START WITH '+DATA2/_MGMTDB/';
RMAN> SWITCH DATABASE TO COPY;
# 以 grid 用戶
$ srvctl modify mgmtdb -spfile '+DATA2/_MGMTDB/PARAMETERFILE/spfile.265.123456'
# 或手動創建 PFILE -> 修改 control_files -> 創建 SPFILE
$ srvctl start mgmtdb
$ srvctl status mgmtdb
# 確認運行節點、實例狀態
SQL> SELECT name FROM v$datafile; -- 確認路徑已變更
SQL> SELECT member FROM v$logfile;
srvctl,否則 GI 狀態機制混亂導致資源故障。asmcmd cp +OCR/_MGMTDB/PARAMETERFILE/spfile... +FRA/backup_spfile_mgmtdb.ora。V$LOG 狀態為 CURRENT/ACTIVE/INACTIVE 正常循環。
-- 檢查表空間狀態
SELECT tablespace_name, status FROM dba_tablespaces;
-- 檢查數據文件在線
SELECT file_name, status FROM dba_data_files;
-- 檢查 CHM 采集恢復
$ oclumon dumpnodeview -allnodes -last "0:10:00" -- 最近 10 分鐘應有數據
MGMTDB 雖非業務庫,但承載著 RAC 穩定性的「黑盒記憶」。移動操作雖簡單,但**必須遵循 SRVCTL 生命周期管理、保持控制文件冗余、驗證 CHM 采集恢復** 三原則,確保診斷基礎設施零中斷可用。