为什么我的归档文件比我设定的在线日志的大小要小?有几种可能的原因:
1) 你用命令手工切换了
2) 你设定了archive_lag_target参数,导致定期触发的切换
3) 10G后,Oracle的新特性,private redo的出现。由于会话的事务日志是保留在private redo pool里的,这里面的日志只有在提交的时候才会写到public redo pool然后再写到log file里,想象这么一个场景:事务X修改了几条记录,但是迟迟没提交,事务X产生的日志是记录在private redo pool里的。当前日志组是组1,日志组1写满了后切换了,切换后,当前日志组是2,日志组2的start scn是1000,但是private redo pool里的日志的scn肯定是小于这个1000的,如果Oracle切换前,不把这些private redo刷新到日志组1,那么日志组2里就会出现scn小于当前日志组的start scn的情况。这个是不允许的。因此Oracle的工程师,必须要有一个机制保障,在做切换前,日志文件里有足够的空间能够容纳下public redo+private redo pool里面的日志,但是这2个redo pool里面很可能是空的或者是不满的,日志量没有Oracle计算的大,这样就导致了,被归档后的文件总是没有我们设定的在线日志大。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22034023/viewspace-734500/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/22034023/viewspace-734500/