生产中 ADG 库出现告警,检查发现 map 进程异常:
检查 alter 日志,出现:
ORA-19504:failed to create file "+DATAC1/casarch/2_162186_1067953047.arc"
ORA-17502:ksfdcre:4 Failed to create file ...
ORA-15041:diskgroup "DATAC1" space exhausted
ORA-16038:log 21 sequence# 213703 cannot be archived
ORA-19504:failed to create file ""
ORA-00312:online log 21 thread 1:'+DATAC1/xx/ONLINELOG/group_21.958.107215771'
ORA-00312:online log 21 thread 1:'+DATAC1/xxx/ONLINELOG/group_21.959.107215847'
检查 ASM 磁盘空间不足,导致无法归档
检查数据库的归档保留时间:
rman target /
show retention policy;
清理归档日志:
cat clear_arch.sh
~/.bash profile
rman target / nocatalog <<EOF
delete NOPROMPT archivelog until time "sysdate-2";
crosscheck archivelog all;
exit
EOF
nohup sh clear_arch.sh >> /home/oracle/clear_arch.log &
清理归档后,磁盘空间正常.
再次尝试拉起 map 进程:
--启动mrp
ALTER DATABASE recover managed standby database using current logfile disconnect from session;
--查看mrp是否正常
SELECT inst_id,PROCESS, STATUS,SEQUENCE#,BLOCK#,BLOCKS, DELAY_MINS FROM gV$MANAGED_STANDBY where process in ('RFS','MRP0') and SEQUENCE# <>0;
map 进程还是无法正常启动:
ORA-01111:name for datafile 1061:
ORA-01110:data file 1061:
ORA-01157:cannot identify/lock data file 1061 -see DBWR trace file
问题分析:
在备用数据库中创建文件为UNNAMED的原因有很多,此次是因为备库上的磁盘空间不足导致的。
STANDBY_FILE_MANAGEMENT 在启用自动备用文件管理后,将在备用数据库上复制主数据库上的操作系统文件添加和删除。此时,我们在主服务器上添加数据文件,而恢复过程(MRP)正在尝试应用存档,由于该参数设置,它将在$ ORACLE_HOME / dbs中创建一个未命名的文件将导致杀死MRP进程,错误如下所示。
当数据库由OMF管理时,修改路径时也可以使用 new 来代替路径的位置,修改 redo 除外。--这个没有验证
alter database recover managed standby database cancel;
alter system set standby_file_management=manual;
alter database create datafile '/oracle/app/oracle/product/19.0.0.0/db_1/dbs/UNNAMED1061′ as '/+DATAC1/' AS 32760m;
alter system set standby_file_management=auto;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
执行完后,mrp 进程正常拉起,本次问题解决.