? ? 86? ? ? YES A NO
? ? 87? ? ? YES A NO
? ? 88? ? ? YES A NO
? ? 89? ? ? YES A NO
? ? 90? ? ? YES A NO
--查看当前的redo size和redo wastage
SQL> select name,value from v$sysstat where name in('redo size','redo wastage');
NAME? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? VALUE
--------------------- ------------------------------------------ ----------
redo size? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 258664912
redo 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 wastage
SQL> select name,value from v$sysstat where name in('redo size','redo wastage');
NAME? ? ? ? ? VALUE
---------- ------------
redo size? ? 512888704
redo wastage 202172176
--计算insert过程中产生的redo size和redo wastage
SQL> select 512888704-258664912 redo from dual;
? ? ? REDO
----------
?254223792
SQL> select 202172176-86181420 wastage from dual;
? WASTAGE
----------
?115990756
--计算redo wastage的比例
SQL> select 115990756/254223792 from dual;
115990756/254223792
-------------------
.456254527
--查看insert 过程中产生的archive log file
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
91 YES A NO
92 YES A NO
93 YES A NO
94 YES A NO
95 YES A NO
96 YES A NO
97 YES A NO
98 YES A NO
99 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大小。