1 问题描述:
核心数据库alert日志报错
检查及处理过程 ADG检查及恢复
复制
检查alert日志
数据库闪回区使用100%。
检查闪回区存放的数据都是归档日志文件。
处理过程
1、Rman target /
delete noprompt archivelog until time ‘sysdate-3’;
SQL> show parameter recover
NAME TYPE VALUE
db_recovery_file_dest string /u01/app/oracle/fast_recovery_
area/datastore/coredb
db_recovery_file_dest_size big integer 1800G
db_unrecoverable_scn_tracking boolean TRUE
recovery_parallelism integer 0
SQL> alter system set db_recovery_file_dest_size=2000G;
SQL> SELECT * FROM V$FLASH_RECOVERY_AREA_USAGE;
FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
CONTROL FILE 0 0 0
REDO LOG 0 0 0
ARCHIVED LOG 72.31 0 1935
BACKUP PIECE .01 0 1
IMAGE COPY 0 0 0
FLASHBACK LOG 0 0 0
FOREIGN ARCHIVED LOG 0 0 0
3、 恢复adg
将主数据库的归档日志copy 到adg数据库(32584归档)
Rman target /
Catalog start with ‘/home/oracle/bak/1_32584***.arch’;
然后观察日志自动恢复
检查数据库的日志归档生成量
归档日志在6.4号和6.5号突增。
检查为什么没有删除归档,检查发现.1 adg 同步异常,adg因空间不足导致同步异常
/arch当归档空间不足的时候,会造成归档文件写错误,但是该文件仍保留而归档出现坏块无法恢复,在读取的时候会出现因为文件已经损坏而出现对失败,出现gap,因为该文件已经存在又无法自动修复(并且存在空间问题adg在尝试几次重启应用日志后无法恢复则会停止应用),需要手工介入修复,这样会导致adg同步延迟变大。而因为adg 的延迟导致主库在删除归档的时候在不加force 强制删除的情况下,是不会删除未传送到adg端的归档日志的。从而造成生产数据库的文件没有删除将闪回区撑满.
因此这就会造成源数据库的归档空间使用率高。
检查为什么产生大量的归档日志
检查归档时间段内的awr报告,可以发现数据库有大量的dml操作,这会产生大量的归档。上述的操作都会产生大量的归档.比如下面:
DELETE FROM MONITOR_LIST.T_ACCUITYGWL_SDFS_PUSH D WHERE D.ID = :B2 AND D.VERSION = :B1
INSERT INTO MONITOR_LIST.T_ACCUITYGWL_SDFS_PUSH B SELECT * FROM T_ACCUITYGWL_SDFS A WHERE A.ID IN ( SELECT ID FROM MONITOR_LIST.T_ACCUITYGWL_ENTITY_PUSH P1 WHERE P1.UNIONID = TRIM(:B1 ) ) AND A.VERSION IN ( SELECT VERSION FROM MONITOR_LIST.T_ACCUITYGWL_ENTITY_PUSH P2 WHERE P2.UNIONID = TRIM(:B1 ) )
数据变更量比较大的段如下
- 建议
1、 增加对adg的延迟状态的监控
2、 调整生产数据库的的 db_recovery_file_dest_size
3、 对adg的arch目录扩容 建议再次增加400G。