昨晚,在生产库truncate了一个68gb的超大日志表。
根据各种资料显示,截断表操作只是降低segment的hwm,理应在瞬间完成。
那为什么我的truncate操作要花这么久的时间?
原因应该是这样的,由于系统是实时生产系统,并且这个表insert操作很频繁,据估计至少10条/s。
所以在data buffer cache中缓存有大量需要dbwn写入数据文件的“脏数据”。
很明显,在truncate之前,buffer cache中的数据要被处理。
由于生产库是9i,所以怀疑数据库还是在truncate之前老老实实地将脏数据写入了数据文件,然后再降低的hwm。
不知道11g是不是这样的。
当然,这只是我的猜测。