等待模擬-BUFFER BUSY WAIT

gaopengtttt發表於2013-06-27
create table test_buf(id number,name char(1000))
tablespace test;
begin 
 for idx in 1..100 loop
 insert into test_buf values(idx,'aa');
 end loop;
end;

select dbms_rowid.rowid_relative_fno(rowid),dbms_rowid.rowid_block_number(rowid),count(*) from test_buf group by dbms_rowid.rowid_relative_fno(rowid),dbms_rowid.rowid_block_number(rowid);

DBMS_ROWID.ROWID_RELATIVE_FNO( DBMS_ROWID.ROWID_BLOCK_NUMBER(   COUNT(*)
------------------------------ ------------------------------ ----------
                             6                          23661          7
                             6                          23666          7
                             6                          23670          7
                             6                          23679          7
                             6                          23668          7
                             6                          23663          7
                             6                          23662          7
                             6                          23665          7
                             6                          23680          2
                             6                          23667          7
                             6                          23672          7
                             6                          23660          7
                             6                          23669          7
                             6                          23671          7
                             6                          23664          7
 

create or replace procedure test_buf_pr
 is 
begin 
  for n in 1..1000 loop
      for idx in 2..10 loop
        update test_buf set name='TT'
       where id=10*(idx-1);
        commit;
        end loop;
      end loop;
   end;


var job_no number;
begin 
  for idx in 1..100 loop
      dbms_job.submit(:job_no,'test_buf_pr;');
end loop;
commit;
end;

同時本會話也執行檢視等待事件
execute test_buf_pr
最後可以觀察到這就是UPDATE UPDATE buffer busy wait爭用
select * from dba_hist_active_sess_history a,(select SID from v$mystat where rownum<=1) b where a.session_ID=b.sid and  a.wait_class<>'Idle' order by SAMPLE_TIME desc;
是CLASS=1也就是DATA BLOCK,這個可以透過v$waitstat來檢視。

   

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7728585/viewspace-764948/,如需轉載,請註明出處,否則將追究法律責任。

相關文章