- List item
今天给客户做Oracle例行数据库健康巡检,过程中检出一些备份异常,分享如下。
排查问题:
- 打开DP备份软件,随即弹出如下提示:
- 登录DP,查看备份情况:发现从10/6开始,DP备份就没有完全成功,部分文件备份失败:
Oracle Recovery Backup Catalog “Oracle8” 一直备份失败:
- 查看DP日志:
[138:742] 备份规范 “Oracle8 mcsreportdb_arc_del”、备份组 “Default” 的 备份 会话 “2024/10/12-7” 存在错误;
说明:在备份、复制或合并会话期间检测到错误。
10/6以来持续报错。
进一步查看log发现是由于内存不够,导致进程DW00不能正常启动,从而Oracle Export utility failed:
ORA-39014: One or more workers have prematurely exited.
ORA-39029: worker 1 with process name “DW00” prematurely terminated
ORA-31671: Worker process DW00 had an unhandled exception.
ORA-04031: unable to allocate 13224 bytes of shared memory (“shared pool”,“unknown object”,“KTSL subheap”,“ktsl_load_disp-2”)
问题大概锁定:SGA分配太小。
4. 登录DB服务器,进一步确认:
由于是利用backup catalog DB管理数据库备份,所以需要进入catalog目录:
egrep -i ORA- log.xml:发现满屏unable to allocate 13224 bytes of shared memory
tail -n 2000 log.xml | grep ORA-04031:
5. 利用adrci工具检查:
解决问题:
- 查看catalog DB所在服务器的内存,发现很足:
- 登录catalog DB:查看SGA:
sqlplus / as sysdba
show parameter instance
show parameter mem
show parameter sga
128G内存的物理机尽然只给sga 5G啊啊啊啊啊,崩溃了有木有。
- 调整SGA:注意需重启DB才能生效。
- 确认问题得以解决:再打开DP软件已经没有了日志提示,备份也正常了。问题得以解决。
总结:
- SGA大小设置不合理是常见的DB故障;
- DB整个系统一定要及时定期做健康巡检,包括实例、存储、rac/asm,备份等全系统。
码字不易,宝贵经验分享不易,请各位支持原创,转载注明出处,多多关注作者,后续不定期分享DB核心知识和排障案例及经验、性能调优等。