跟着吕大师(VAGE)揭密隐含参数:_db_writer_coalesce_area_size

        最近在看吕大师的大作《Oracle核心揭密》,马上要上市了,期待中。。。

       这部大作可以与Jonathan Lewis大师的《Oracle Core_ Essential Internals for DBA》相提并论,看了几天收益颇多,哈哈美国有Lewis,中国有VAGE。

     gyj@OCM> select * from v$version;


BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production


gyj@OCM> show parameter mem


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
hi_shared_memory_address             integer     0
memory_max_target                    big integer 0
memory_target                        big integer 0
shared_memory_address                integer     0
gyj@OCM> show parameter sga


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
lock_sga                             boolean     FALSE
pre_page_sga                         boolean     FALSE
sga_max_size                         big integer 372M
sga_target                           big integer 0
gyj@OCM> show parameter db_cache


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_cache_advice                      string      ON
db_cache_size                        big integer 100M


gyj@OCM> show parameter mttr


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
fast_start_mttr_target               integer     0


_db_writer_coalesce_area_size            Size of memory allocated to dbwriter for coalescin 1048576  




gyj@OCM>create table gyj100 (id int,name varchar2(2000));


gyj@OCM> declare
  2   c  number :=0 ;
  3  begin
  4      for i in 1 .. 5000000 loop
  5        insert into gyj100 values(i,'gyj'||i);
  6        c := c+1;
  7        if mod(c,5000)=0 then
  8        commit;
  9       end if;
 10      end loop;
 11  end;
 12  /


PL/SQL procedure successfully completed.


gyj@OCM> select bytes/1024/1024 sz from user_segments where segment_name='GYJ100';


        SZ
----------
       120
       
gyj@OCM> select sid from v$mystat where rownum=1;


       SID
----------
       125     
       
 gyj@OCM> update gyj100 set id=id+0 where rownum<=5000000;


5000000 rows updated.


Elapsed: 00:00:47.50


      
 
 再开一个窗口观察等待事件:      
gyj@OCM> select * from V$SESSION_wait where sid=125;


       SID       SEQ# EVENT                                                            P1TEXT                                                 P1 P1RAW     P2TEXT                                                                   P2 P2RAW            P3TEXT                                 P3 P3RAW             WAIT_CLASS_ID WAIT_CLASS# WAIT_CLASS                                                        WAIT_TIME SECONDS_IN_WAIT STATE              WAIT_TIME_MICRO TIME_REMAINING_MICRO TIME_SINCE_LAST_WAIT_MICRO
---------- ---------- ---------------------------------------------------------------- ---------------------------------------------------------------- ---------- ---------------- ---------------------------------------------------------------- ---------- ---------------- ---------------------------------------------------------------- ---------- ---------------- ------------- ----------- ---------------------------------------------------------------- ---------- --------------- ------------------- --------------- -------------------- --------------------------
       125      45323 log buffer space                                                                                                         0 00                                                                                          0 00                                               0 00           3290255840           2 Configuration                                                            -1               0 WAITED SHORT TIME             4608                                            7446


gyj@OCM> select event,TOTAL_WAITS , TIME_WAITED_MICRO from V$SYSTEM_EVENT where EVENT='db file parallel write';


no rows selected




gyj@OCM> select event,TOTAL_WAITS , TIME_WAITED_MICRO from V$SYSTEM_EVENT where EVENT like 'db file%';


EVENT                                                            TOTAL_WAITS TIME_WAITED_MICRO
---------------------------------------------------------------- ----------- -----------------
db file sequential read                                                91162          37712572
db file scattered read                                                  1830           8543678
db file single write                                                     372           1934286
db file async I/O submit                                                 553          84199251
db file parallel read                                                     67           1863758




始终没看到db file parallel write等待。。。。


在吕大师的指点下:




select event,TOTAL_WAITS , TIME_WAITED_MICRO from V$SYSTEM_EVENT where EVENT='db file async I/O submit';

MOS上有篇文章
'db file async I/O submit' when FILESYSTEMIO_OPTIONS=NONE [ID 1274737.1] 
'db file async I/O submit' should be treated as 'db file parallel write' in previous releases. 


**********************************************************************

                  在吕大的指点下,开始测试:
**********************************************************************

第一把:
参数:_db_writer_coalesce_area_size=1048576  


sys@OCM> select event,TOTAL_WAITS , TIME_WAITED_MICRO from V$SYSTEM_EVENT where EVENT='db file async I/O submit';


EVENT                                                            TOTAL_WAITS TIME_WAITED_MICRO
---------------------------------------------------------------- ----------- -----------------
db file async I/O submit                                                1944          88188121
gyj@OCM> set timing on;
gyj@OCM> update gyj100 set id=id+0 where rownum<=5000000;


5000000 rows updated.


Elapsed: 00:00:46.10
sys@OCM> select event,TOTAL_WAITS , TIME_WAITED_MICRO from V$SYSTEM_EVENT where EVENT='db file async I/O submit';


EVENT                                                            TOTAL_WAITS TIME_WAITED_MICRO
---------------------------------------------------------------- ----------- -----------------
db file async I/O submit                                                2222         128007271


sys@OCM> select (2222-1944)/46||'次/秒' from dual;


(2222-1944)/46
--------------
    6.04347826次/秒


第二把测试,修改参数:
sys@OCM> alter system set "_db_writer_coalesce_area_size"=8048576 scope=spfile;


System altered.


sys@OCM> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
sys@OCM> startup
ORACLE instance started.


Total System Global Area  388354048 bytes
Fixed Size                  2228584 bytes
Variable Size             276827800 bytes
Database Buffers          104857600 bytes
Redo Buffers                4440064 bytes
Database mounted.
Database opened.


sys@OCM> select event,TOTAL_WAITS , TIME_WAITED_MICRO from V$SYSTEM_EVENT where EVENT='db file async I/O submit';




no rows selected


gyj@OCM> update gyj100 set id=id+0 where rownum<=5000000;


5000000 rows updated.


Elapsed: 00:00:16.34


sys@OCM> select event,TOTAL_WAITS , TIME_WAITED_MICRO from V$SYSTEM_EVENT where EVENT='db file async I/O submit';




EVENT                                                            TOTAL_WAITS TIME_WAITED_MICRO
---------------------------------------------------------------- ----------- -----------------
db file async I/O submit                                                  31          15256544


sys@OCM> select 31/16||'次/秒' from dual;


     31/16
----------
    1.9375次/秒
 


再测一把,把参数改回去:_db_writer_coalesce_area_size=1048576 
sys@OCM> alter system set "_db_writer_coalesce_area_size"=1048576 scope=spfile;


System altered.


sys@OCM> startup force;
ORACLE instance started.


Total System Global Area  388354048 bytes
Fixed Size                  2228584 bytes
Variable Size             276827800 bytes
Database Buffers          104857600 bytes
Redo Buffers                4440064 bytes
Database mounted.
Database opened.


sys@OCM> select event,TOTAL_WAITS , TIME_WAITED_MICRO from V$SYSTEM_EVENT where EVENT='db file async I/O submit';




no rows selected


gyj@OCM> update gyj100 set id=id+0 where rownum<=5000000;


5000000 rows updated.


Elapsed: 00:00:48.49


sys@OCM> sys@OCM> select event,TOTAL_WAITS , TIME_WAITED_MICRO from V$SYSTEM_EVENT where EVENT='db file async I/O submit';




EVENT                                                            TOTAL_WAITS TIME_WAITED_MICRO
---------------------------------------------------------------- ----------- -----------------
db file async I/O submit                                                 282          40353435




sys@OCM> select 282/48||'次/秒' from dual;


    282/48
----------
     5.875次/秒
     
     
 果然把参数db_writer_coalesce_area_size改大起作用了:
 参数:_db_writer_coalesce_area_size=1048576, 产生db file async I/O submit等待6次/秒
 参数:_db_writer_coalesce_area_size=8048576,产生db file async I/O submit等待2次/秒
 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值