首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 教學

Oracle 12c RAC 移動 MGMTDB 數據文件方法

     編輯:Oracle 教學

Oracle 12c RAC 移動 MGMTDB 數據文件方法

Oracle 12c 引入 MGMTDB (Management Database) 作為 Cluster Health Monitor (CHM) 的數據倉庫,存儲節點 OS 指標歷史數據。MGMTDB 實際是一個單實例 CDB (Container Database),運行在 GI 管理的節點上 (通常為 Hub 節點或第一個節點)。因磁盤空間調整、存儲遷移、性能優化等原因,需移動其數據文件、日志文件、控制文件。本文記錄標準移動流程。

前置知識:MGMTDB 架構定位

  • MGMTDB 由 GI 管理,非用戶業務數據庫,不支持手工創建/刪除/啟停 (由 CRS 控制)。
  • 數據文件默認存放於 OCR 磁盤組 (如 +OCR/_MGMTDB/...),共享存儲上。
  • 實例名固定為 -MGMTDB,服務名 _mgmtdb。
  • 移動操作需在 **GI 環境下、以 grid 用戶/root 執行**,或通過 SRVCTL 管理。

標準移動流程 (以移動至新磁盤組 +DATA2 為例)

1. 確認當前文件分布


# 以 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;

2. 停止 MGMTDB (GI 管理方式)


$ srvctl stop mgmtdb
# 等待實例完全關閉

3. 文件級移動 (ASM 間 / ASM→文件系統)

方案 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;

4. 更新 SPFILE 控制文件路徑


# 以 grid 用戶
$ srvctl modify mgmtdb -spfile '+DATA2/_MGMTDB/PARAMETERFILE/spfile.265.123456'
# 或手動創建 PFILE -> 修改 control_files -> 創建 SPFILE

5. 啟動驗證


$ srvctl start mgmtdb
$ srvctl status mgmtdb
# 確認運行節點、實例狀態

SQL> SELECT name FROM v$datafile;  -- 確認路徑已變更
SQL> SELECT member FROM v$logfile;

關鍵注意事項

  1. 不可手工 SQL*Plus STARTUP/SHUTDOWN MGMTDB,必須用 srvctl,否則 GI 狀態機制混亂導致資源故障。
  2. 移動前備份 SPFILE:asmcmd cp +OCR/_MGMTDB/PARAMETERFILE/spfile... +FRA/backup_spfile_mgmtdb.ora。
  3. 控制文件多路徑冗余:新位置建議配置 2-3 個控制文件副本 (不同磁盤組)。
  4. 日志文件組狀態:移動後檢查 V$LOG 狀態為 CURRENT/ACTIVE/INACTIVE 正常循環。
  5. CHM 采集連續性:移動期間 CHM 采集暫停 (MGMTDB 關閉),接受數據缺口,或規劃維護窗口。
  6. 12c/18c/19c 版本差異:19c MGMTDB 可能部署為 PDB (在 GI 管理的 CDB 內),移動邏輯同理但對象層級不同。

驗證腳本 (移動後必跑)


-- 檢查表空間狀態
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 采集恢復** 三原則,確保診斷基礎設施零中斷可用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved