archive log文件大小与redo log文件大小关系探究(四)

2015-07-23 18:07:58 · 作者: · 浏览: 22
S 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 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大小。