墨墨导读:某客户执行一个Select全表扫,产生大量Redo,需要分析原因。一般延迟块清除导致Select产生Redo,但这个案例中并不是延迟块清除的原因。
分析过程
1、在SELECT执行前保存该session的v$sesstat数据
select ses.sid, sn.name, ses.valuefrom v$sesstat ses, v$statname snwhere sn.statistic# = ses.statistic#and ses.sid in (2657)and value>0;
2、执行产生REDO的SELECT
可以看到
Statistics---------------------------------------------------------- 0 recursive calls 0 db block gets 864313 consistent gets 805988 physical reads 23,439,672 redo size <<<< 535 bytes sent via SQL*Net to client 520 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 1

本文通过实战案例分析了Oracle数据库中,由于DB_LOST_WRITE_PROTECT参数设置导致Select操作产生大量Redo的现象。文章详细介绍了分析过程,包括在SELECT执行前后对比v$sesstat数据,发现redo size主要由lost write detection引起。作者指出,当参数设置为TYPICAL或FULL时,此行为是预期的,目的是确保写丢失检测。文章最后提供了相关文档链接和数据库维护的经验分享。
最低0.47元/天 解锁文章
111

被折叠的 条评论
为什么被折叠?



