本次依然讲解的是性能优化中的latch,主要是对latch的加深认知
1、latch的位置,从哪才会出现latch
资源的请求和分配
共享池
sql解析,sql重用....
数据缓冲池
数据访问,数据写入磁盘,数据读入内存...
修改数据块
数据段扩展
2、oracle中有哪些latch

3、latch机制

4、latch的获取方式
wait方式--如果无法获取请求的latch,则:
– spin
• 当一个会话无法获得需要的latch时,会继续使用CPU(CPU空转),达到一个间隔后,
再次尝试申请latch,直到达到最大的重试次数。
– sleep
• 当一个会话无法获得需要的latch时,会等待一段时间(sleep),达到一个间隔后,再次
尝试申请latch,如此反复,直到达到最大的重试次数。
� No wait方式--如果无法获取请求的latch,则:
– 不会发生sleep或者spin.
– 转而去获取其它可用的Latch
5、latch争用
share pool 中latch的争用---绑定变量
示例如下:
1)create or replace procedure p1
as
l_cnt number;
begin
for i in 1..10000
loop
execute immediate 'select count(*) from emp where empname=scott '|| i into l_cnt;
end loop;
end;
2) create or replace procedure p2
as
l_cnt number;
begin
for i in 1..10000
loop
select count(*) into l_cnt from emp where empno=7788;
end loop;
end;
3)查看latch争用的情况
select * from v$latchname where name like 'library cache%';
LATCH# NAME HASH
---------- ---------------------------------------------------------------- ----------
337 library cache load lock 2952162927
4)可以利用sql_trace进行追踪




