Grid管理仓库 (GIMR/MGMTDB) 迁移重建实战指南
适用场景 :需要将 Oracle GI 管理仓库 (MGMTDB) 迁移至另一个 ASM 磁盘组
适用版本:本文以 12.1.0.2 为例,仅适用于12.1.0.2
一、前言
某客户MGMTDB数据库空间占了OCR磁盘组的大量空间,目前OCR磁盘组无法扩展,根据现状,制定的方案是将MGMTDB数据库重建到其他磁盘组。
二、操作前必读
2.1 重要警告
⚠️ 此操作不会保留MGMTDB数据库的历史数据!
如需备份现有数据,请在 grid 用户下任意节点执行:
bash
$ <GI_HOME>/bin/oclumon dumpnodeview -allnodes -v > <backup-file>
与客户沟通,MGMTDB中的数据不重要,无需备份、保留,直接重建即可。
2.2 关键原则
- 不要手动停止
ora.mgmtlsnr或ora.mgmtdb资源,否则会导致后续删除步骤失败 - 操作涉及
root和grid两个用户,注意切换 - 12.1.0.2 版本需要将 MGMTDB 重建为 CDB (容器数据库),并创建对应的 PDB
三、详细操作步骤
步骤 1:确认当前环境信息
以 grid 用户登录,确认 MGMTDB 实例和 PDB 状态:
bash
su - grid
# 查看 MGMTDB 实例进程
ps -ef | grep smon | grep MGMTDB
# 设置环境变量并登录
export ORACLE_SID=-MGMTDB
sqlplus / as sysdba
# 查看 PDB 状态,记录 PDB_NAME(后续创建时需要用到)
SQL> show pdbs;
同时通过以下命令确认 MGMTDB 运行在哪个节点:
bash
srvctl status mgmtdb
步骤 2:停止并禁用 ora.crf 资源
以 root 用户在每个节点上执行:
bash
cd /u01/app/12.1.0.2.0/grid/bin
# 停止 ora.crf
./crsctl stop res ora.crf -init
# 禁用 ora.crf,防止自动重启
./crsctl modify res ora.crf -attr ENABLED=0 -init
# 确认资源状态
./crsctl stat res -t -init
ora.crf资源依赖 MGMTDB,必须先停掉才能安全删除数据库。
步骤 3:删除现有的 -MGMTDB
以 grid 用户 在 MGMTDB 实际运行的节点上执行:
bash
cd $ORACLE_HOME/bin
# 静默删除管理数据库
./dbca -silent -deleteDatabase -sourceDB -MGMTDB
删除过程约需几分钟,最后会提示查看日志文件。
如果 MGMTDB 无法正常启动导致 dbca 失败,可手动清理:
- 使用 OS 命令删除 MGMTDB 相关物理文件
- 清除
oratab中的条目 - 使用
srvctl remove mgmtdb移除资源注册
步骤 4:重建 MGMTDB (仅适用于12.1.0.2)
以 grid 用户 在任意节点执行。12.1.0.2 版本必须创建为 容器数据库 (CDB):
存储在 ASM 磁盘组
bash
cd /u01/app/12.1.0.2.0/grid/bin
./dbca -silent -createDatabase \
-sid -MGMTDB \
-createAsContainerDatabase true \
-templateName MGMTSeed_Database.dbc \
-gdbName _mgmtdb \
-storageType ASM \
-diskGroupName +FRD \
-datafileJarLocation $ORACLE_HOME/assistants/dbca/templates \
-characterset AL32UTF8 \
-autoGeneratePasswords \
-skipUserTemplateCheck
💡 建议 :建议将该磁盘组的
compatible.asm和compatible.rdbms属性均设置为12.1。
步骤 5:创建 PDB
重建后的 MGMTDB 是 CDB,需要为集群创建一个对应的 PDB。
首先确认集群名称:
bash
cemutlo -n
注意 :集群名称中的连字符 - 必须替换为下划线 _。
然后执行 PDB 创建:
bash
dbca -silent -createPluggableDatabase \
-sourceDB -MGMTDB \
-pdbName <CLUSTER_NAME> \
-createPDBFrom RMANBACKUP \
-PDBBackUpfile $ORACLE_HOME/assistants/dbca/templates/mgmtseed_pdb.dfb \
-PDBMetadataFile $ORACLE_HOME/assistants/dbca/templates/mgmtseed_pdb.xml \
-createAsClone true
创建完成后,建议再次登录 SQL*Plus 确认 PDB 状态:
bash
export ORACLE_SID=-MGMTDB
sqlplus / as sysdba
SQL> show pdbs;
步骤 6:验证与配置
确认 MGMTDB 运行节点:
bash
srvctl status MGMTDB
在 MGMTDB 运行的节点上,执行安全配置脚本:
bash
$ <GI_HOME>/bin/mgmtca
执行无报错即表示管理数据库配置成功。
步骤 7:启用并启动 ora.crf
以 root 用户 在每个节点恢复 ora.crf 资源:
bash
cd /u01/app/12.1.0.2.0/grid/bin
# 启用资源
./crsctl modify res ora.crf -attr ENABLED=1 -init
# 启动资源
./crsctl start res ora.crf -init