症状
在大量insert操作过程中,发现插入执行缓慢,后台IO也没有达到瓶颈,查看ASH 会话等待事件发现大量的latch:undo global data等待事件。

问题分析
latch:undo global data 说明此时会话在对可用undo段进行争用,且不得不到未废弃的undo段里去窃用,总得来说是可用undo不够。
针对undo的可用值主要由下面几个点来决定:
1)undo表空间大小,注意RAC环境每个节点的undo表空间是独占的,如实例1使用 UNDOTBS1,实例2 使用UNDOTBS2,要给undo表空间添加数据文件时建议同步给每个undo表空间(UNDOTBS1,UNDOTBS2…)添加。
2) _undo_autotune : undo自动调优参数,TRUE为自动调优,根据undo大小调整undo保留时间
3) undo_retention : undo保留时间,单位秒,当_undo_autotune参数设置为true时该参数无效,_undo_autotune设置为false时根据该参数值保留undo时间,超过该时间的undo内容状态为EXPIRED,可拿来重用。
解决方案
因为本次作业为单次迁移作业,有大量的insert插入,之前测试是在单机环境,测试人员在添加undo表空间数据文件时只给UNDOTBS1添加了数据文件,这次换到RAC环境也是如此,UNDOTBS2 表空间还是只有一个数据文件,而迁移业务又正好运行在节点2上,导致undo不够用,在给UNDOTBS2 添加了3个数据文件后 latch:undo global data 消除,业务插入速度明显加快。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




