SQL> select group#,bytes/1024/1024 "size(M)" from v$log; GROUP# size(M)---------- ---------- 1 50 2 50 3 50--建立测试表SQL> create table darren(id number,item varchar2(2));Table created.--查看当前归档的情况SQL> select SEQUENCE#,ARCHIVED,status,COMPRESSED from v$archived_log;SEQUENCE# ARC S COM ---------- --- - --- 81 YES A NO 82 YES A NO 83 YES A NO 84 YES A NO 85 YES A NO 86 YES A NO 87 YES A NO 88 YES A NO 89 YES A NO 90 YES A NO--查看当前的redo size和redo wastageSQL> select name,value from v$sysstat where name in("redo size","redo wastage");NAME VALUE--------------------- ------------------------------------------ ----------redo size 258664912redo wastage 86181420--向测试表插入数据,产生redo记录begin for i in 1..500000 loop insert into darren values(1,"aa"); commit; end loop;end;--切换一起日志,将insert过程中产生的redo文件全部归档SQL> alter system archive log current;System altered.--查看现在的redo size和redo wastageSQL> select name,value from v$sysstat where name in("redo size","redo wastage");NAME VALUE---------- ------------redo size 512888704redo wastage 202172176--计算insert过程中产生的redo size和redo wastageSQL> select 512888704-258664912 redo from dual; REDO---------- 254223792SQL> select 202172176-86181420 wastage from dual; WASTAGE---------- 115990756--计算redo wastage的比例SQL> select 115990756/254223792 from dual;115990756/254223792-------------------.456254527--查看insert 过程中产生的archive log fileSQL> select SEQUENCE#,ARCHIVED,status,COMPRESSED from v$archived_log; SEQUENCE# ARC S COM---------- --- - ---81 YES A NO82 YES A NO83 YES A NO84 YES A NO85 YES A NO86 YES A NO87 YES A NO88 YES A NO89 YES A NO90 YES A NO91 YES A NO92 YES A NO93 YES A NO94 YES A NO95 YES A NO96 YES A NO97 YES A NO98 YES A NO99 YES A NO从91号归档开始为本次insert操作产生的归档 --查看归档文件大小[oracle@oracle11g archive]$ ls -trl-rw-r----- 1 oracle oinstall 49917440 Oct 23 13:49 orcl_1_91_851966182.arc -rw-r----- 1 oracle oinstall 49257472 Oct 23 13:49 orcl_1_92_851966182.arc -rw-r----- 1 oracle oinstall 49896448 Oct 23 13:50 orcl_1_93_851966182.arc -rw-r----- 1 oracle oinstall 44149760 Oct 23 13:50 orcl_1_94_851966182.arc -rw-r----- 1 oracle oinstall 49917440 Oct 23 13:50 orcl_1_95_851966182.arc -rw-r----- 1 oracle oinstall 44199936 Oct 23 13:50 orcl_1_96_851966182.arc -rw-r----- 1 oracle oinstall 46582784 Oct 23 13:51 orcl_1_97_851966182.arc -rw-r----- 1 oracle oinstall 48513536 Oct 23 13:51 orcl_1_98_851966182.arc -rw-r----- 1 oracle oinstall 13312 Oct 23 13:51 orcl_1_99_851966182.arc根据实验数据显示,redo wastage的比例约为46%,redo log大小为50M,忽略文件末尾的空白影响,如果归档时丢弃redo wastage产生的日志文件中间的空白,那么,归档文件的大小约为50*1024*1024*46%=24117248字节。从实验数据看,归档日志都远大于24117248字节(不考虑99号日志,该日志为手动切换产生)。结论:归档时不会丢弃由于redo wastage产生的redo log file中间的空白。另外再说明一点,由于某些BUG的存在,会出现redo log切换非常频繁,产生的归档都远小于redo log file的大小,所以,在观察到redo log切换频繁的时候,要关注下归档日志的大小,如归归档日志远小于redo log file大小,这时造成redo log频繁切换的原因可能不是大量的事务,这时要综合考虑,不要贸然加大redo log file大小。更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12本文永久更新链接地址