1.场景
中行某RAC12C数据库,mgmtdb 目录的trace alert.log 报错:
GIMR_DSCREP_10(3):ORA-1654:unable to extend index SYS.I_OBJ1 by 8 in tablespace SYSTEM[GIMR_DSCREP_10]
2.分析
(1)起初以为是SYSTEM表空间满,检查SYSTEM表空间发现表空间剩余很多空闲空间。
所以这里不是因为SYSTEM表空间满导致的。
(2)重建索引
sqlplus / as sysdba
alter index sys.i_obj1 rebuild online;
报错:ORA-00701:无法变更热启动数据库所需的对象。
说明无法重建这个索引。
(3)检查索引的状态。
select owner,index_name,index_type,table_owner,table_name,tablespace_name,
status from dba_indexes where index_name='I_OBJ1';
SYS|I_OBJ1|NORMAL|SYS|OBJ$|SYSTEM|VALID
可以发现索引状态正常。
3.检查集群
su - grid
asmcmd lsdg
发现MGMT 磁盘满。
4.MGMT分析
MGMTDB 是12C的的新特性,里面是一个独立的PDB数据库.它里面也有SYSTEM表空间。
并且使用的是MGMT 磁盘组。所以这里的无法扩展索引是因为MGMT磁盘组满导致的。
su - grid
export ORACLE_SID=MGMTDB
sqlplus / as sysdba
select pdb_name from dba_pdbs whre pdb_name!='PDB$SEED';
--查出PDB的名称。
alter session set container=PDB_NAME; --上面查询出的PDB名称。
srvctl config mgmtdb
5.禁用MGMTDB
--查看状态
srvctl status cha
srvctl status mgmtdb
srvctl status mgmtlsnr
--停止
srvctl stop cha
srvctl stop mgmtdb
srvctl stop mgmtlsnr
--禁用
srvctl disable mgmtdb
srvctl disable mgmtlsnr
6.总结
安装MGMTDB ,如果MGMT磁盘满也会导致alert日志报错:数据库的SYSTEM表空间满。
MGMTDB是用于管理集群的PDB;是一个独立的数据库。
参考
DOC:2177879.1
DOC:1589394.1