select/select 引起的read by other session:
P1 文件号

P2 块号




Select/Select 引发的buffer lock争用,发生在讲相同块载入到内存的过程。我们可以测试了解Select/Select 引发的buffer lock争用怎样发生的,测试方案如下:

1) 创建拥有5W行的BFW_TEST表

2) 多个进程同时对BFW_TEST表执行select

3) 在此过程中,多个进程同时对同一个块获得buffer lock过程中,发生Buffer lock 竞争。

----创建测试表空间:


create tablespace bfw_tbs datafile '/u03/test/bfw_tbs01.dbf' size 50M
autoextend on
extent management local uniform size 1M
segment space management auto;


---表的创建及生成5W行数据
SQL> create table bfw_test(id char(1000)) tablespace bfw_tbs;

表已创建。

SQL> insert into bfw_test select '' from dba_objects where rownum<=50000;

已创建50000行。

SQL> commit;

提交完成。

---对BFW_TEST 表执行Select的Procedure
create or replace procedure bfw_do_select is
begin
for x in (select * from bfw_test) loop
null;
end loop;
end;


----同时在20个会话上执行select
var job_no number;
begin
for idx in 1 .. 20 loop
dbms_job.submit(:job_no,'bfw_do_select;');
end loop;
commit;
end;


NAME p1 p2 p3
1 24-6-14 08.53.05.105 上午 3 control file parallel write 2 3 2 0 -1 0 0
2 24-6-14 08.53.05.105 上午 11 null event 0 0 0 0 -1 0 0
3 24-6-14 08.53.05.105 上午 15 null event 0 0 0 0 -1 0 0
4 24-6-14 08.53.05.105 上午 18 read by other session 6 43030 1 0 76843 6 43030
5 24-6-14 08.53.05.105 上午 19 null event 0 0 0 0 -1 0 0
6 24-6-14 08.53.05.105 上午 22 null event 0 0 0 0 -1 0 0
7 24-6-14 08.53.05.105 上午 24 null event 0 0 0 0 -1 0 0
8 24-6-14 08.53.05.105 上午 26 null event 0 0 0 0 -1 0 0
9 24-6-14 08.53.05.105 上午 30 null event 0 0 0 0 -1 0 0
10 24-6-14 08.53.05.105 上午 32 null event 0 0 0 0 -1 0 0
11 24-6-14 08.53.05.105 上午 34 null event 0 0 0 0 -1 0 0
12 24-6-14 08.53.05.105 上午 38 read by other session 6 39520 1 0 76843 6 39520
13 24-6-14 08.53.05.105 上午 40 read by other session 6 39520 1 0 76843 6 39520
14 24-6-14 08.53.05.105 上午 49 latch free 1610726960 157 0 0 76843 6 38399
15 24-6-14 08.53.05.105 上午 53 read by other session 6 40895 1 0 76843 6 40895
16 24-6-14 08.53.05.105 上午 59 read by other session 6 29319 1 0 76843 6 29319
17 24-6-14 08.53.05.105 上午 63 read by other session 6 29319 1 0 76843 6 29319
18 24-6-14 08.53.05.105 上午 67 read by other session 6 30416 1 0 76843 6 30416
19 24-6-14 08.53.05.105 上午 75 latch free 1610726960 157 0 0 76843 6 20794
20 24-6-14 08.53.05.105 上午 77 read by other session 6 26913 1 0 76843 6 26913
21 24-6-14 08.53.05.105 上午 79 read by other session 6 20981 1 0 76843 6 20981


read by other session:
p1 file#

p2 block#

p3 class#
SQL> select owner,segment_name,segment_type from dba_extents where file_id=6 and 40895 between block_id and block_id+blocks-1;

OWNER SEGMENT_NAME SEGMENT_TYPE
------------------------------ --------------------------------------------------------------------------------- ------------------
TEST BFW_TEST TABLE