[quote=引用 40 楼 liuzhijian2008x 的回复:] alert日志没有其他错,数据库也没有明显异常的话,bug的可能性比较小。我觉得还是业务量变大了,处理增删改的逻辑增加了,比如这个update 都这么多个版本了。你可以做个这个update语句单个语句一两个小时内的awr报告看看一两个小时执行多少次,是不是业务正常量。关键你之前得awr没有,不好对比。 还有一种就是定时任务啥的维护数据少加了条件,比如我们之前处理一个表数据,循环处理一个update 因为字段大部分都是空的,感觉都是全表扫描(加了条件也是全表),影响不大,就没有加where条件,结果导致归档日志产生超多,性能也慢。
SELECT t.SQL_ID,count(*) FROM v$active_session_history t where t.event like '%Log file switch%' and t.SAMPLE_TIME>sysdate -1 group by sql_id order by count(*) desc;
alert日志没有其他错,数据库也没有明显异常的话,bug的可能性比较小。我觉得还是业务量变大了,处理增删改的逻辑增加了,比如这个update 都这么多个版本了。你可以做个这个update语句单个语句一两个小时内的awr报告看看一两个小时执行多少次,是不是业务正常量。关键你之前得awr没有,不好对比。 还有一种就是定时任务啥的维护数据少加了条件,比如我们之前处理一个表数据,循环处理一个update 因为字段大部分都是空的,感觉都是全表扫描(加了条件也是全表),影响不大,就没有加where条件,结果导致归档日志产生超多,性能也慢。
看看这两个sql及涉及的表? 如果alert日志里面还经常报 检查点未完成 。可以考虑加大redo log 及增加redo组数。
[quote=引用 30 楼 liuzhijian2008x 的回复:] 看alert日志有比较多的检查点未完成,日志切换相关的。你看下这个sql能查到可疑的sql不 SELECT t.SQL_ID,count(*) FROM v$active_session_history t where t.event like '%Log file switch%' group by sql_id order by count(*) desc;
看alert日志有比较多的检查点未完成,日志切换相关的。你看下这个sql能查到可疑的sql不 SELECT t.SQL_ID,count(*) FROM v$active_session_history t where t.event like '%Log file switch%' group by sql_id order by count(*) desc;
[quote=引用 26 楼 karderax 的回复:] 似乎感觉是这个造成的,这个执行次数将近10倍的完整SQL如下: update seg$ set type#=:4, blocks=:5, extents=:6, minexts=:7, maxexts=:8, extsize=:9, extpct=:10, user#=:11, iniexts=:12, lists=decode(:13, 65535, NULL, :13), groups=decode(:14, 65535, NULL, :14), cachehint=:15, hwmincr=:16, spare1=DECODE(:17, 0, NULL, :17), scanhint=:18, bitmapranges=:19 where ts#=:1 and file#=:2 and block#=:3 什么情况会导致这个SQL暴涨呢?
似乎感觉是这个造成的,这个执行次数将近10倍的完整SQL如下: update seg$ set type#=:4, blocks=:5, extents=:6, minexts=:7, maxexts=:8, extsize=:9, extpct=:10, user#=:11, iniexts=:12, lists=decode(:13, 65535, NULL, :13), groups=decode(:14, 65535, NULL, :14), cachehint=:15, hwmincr=:16, spare1=DECODE(:17, 0, NULL, :17), scanhint=:18, bitmapranges=:19 where ts#=:1 and file#=:2 and block#=:3 什么情况会导致这个SQL暴涨呢?
[quote=引用 19 楼 karderax 的回复:] [quote=引用 17 楼 liuzhijian2008x 的回复:] [quote=引用 16 楼 karderax 的回复:] [quote=引用 14 楼 liuzhijian2008x 的回复:] 把awr报告附上来看看吧
[quote=引用 20 楼 karderax 的回复:] [quote=引用 18 楼 minsic78 的回复:] 无论update还是insert、delete,都要记redo,这和他们涉及到的表数据量多少没有什么关系,只要DML频繁,哪怕是只更新一条记录,也可以产生大量redo
[quote=引用 17 楼 liuzhijian2008x 的回复:] [quote=引用 16 楼 karderax 的回复:] [quote=引用 14 楼 liuzhijian2008x 的回复:] 把awr报告附上来看看吧
无论update还是insert、delete,都要记redo,这和他们涉及到的表数据量多少没有什么关系,只要DML频繁,哪怕是只更新一条记录,也可以产生大量redo
17,377
社区成员
95,127
社区内容
加载中
试试用AI创作助手写篇文章吧