library cache pin与PROCEDURE的重建

2016-02-19 14:39 2 1 收藏

生活已是百般艰难,为何不努力一点。下面图老师就给大家分享library cache pin与PROCEDURE的重建,希望可以让热爱学习的朋友们体会到设计的小小的乐趣。

【 tulaoshi.com - 编程语言 】

    前面提到,Oracle10g重建Procedure的处理有所增强,最初看到这个增强的时候,我想这个增强是否可以减少困扰已久的Library Cache的竞争呢?

    我们看一下以下测试,首先在第一个session执行操作:

SQL create or replace PROCEDURE pining
2 IS
3 BEGIN
4 NULL;
5 END;
6 / Procedure created. SQL
SQL alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'; Session altered. SQL create or replace procedure calling
2 is
3 begin
4 pining;
5 dbms_lock.sleep(60);
6 end;
7 / Procedure created. SQL
SQL col object_name for a30
SQL select object_name,last_ddl_time from dba_objects where object_name in ('PINING','CALLING'); OBJECT_NAME LAST_DDL_TIME
------------------------------ -------------------
CALLING 2007-04-02 09:12:57
PINING 2007-04-02 09:12:57 SQL
SQL exec calling;

此时Calling对于Pining的引用将会在Pining的Body上获得共享Pin,此时在另外一个Session执行重建Procedure的操作:

SQL create or replace PROCEDURE pining

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

2 IS
3 BEGIN
4 NULL;
5 END;
6 /

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

这个操作将一直挂起,直到第一个session的操作完成,此时在第三个session可以观察到Library Cache Pin的竞争:

SQL select sid,event from v$session where username='EYGLE'
2 / SID EVENT
---------- ----------------------------------------------------------------
137 library cache pin
139 PL/SQL lock timer
157 SQL*Net message to client
当第一个session执行完成之后,第二个session的操作随之完成,我们可以看到LAST_DDL_TIME并未改变:
SQL exec calling; PL/SQL procedure sUCcessfully completed. SQL
SQL select object_name,last_ddl_time from dba_objects where object_name in ('PINING','CALLING'); OBJECT_NAME LAST_DDL_TIME
------------------------------ -------------------
CALLING 2007-04-02 09:12:57
PINING 2007-04-02 09:12:57
实际上session 2执行了一次无谓的Library Cache Pin,理想的方式应该是,Oracle能够判定之前的Library Cache Pin的模式,假如是共享模式,则可以跳过Pin请求,假如是排他模式,则必须等待,目前的处理并不能从实质上改变竞争。不过并非全无益处,我们发现,对于另一类DDL操作,Oracle完全可以跳过Library Cache Pin的请求,这类操作是Grant,在以前版本中的行为可以参考:
http://www.eygle.com/archives/2004/10/shared_pool-5.Html 在Oracle10g中,Grant授权操作无需再获得Library Cache Pin的排他锁,我们看以下测试:
在Session 1中执行:

09:40:18 SQL drop procedure calling; Procedure dropped.
09:40:18 SQL
09:40:18 SQL drop procedure pining; Procedure dropped. 09:40:18 SQL
09:40:18 SQL create or replace PROCEDURE pining
09:40:18 2 IS
09:40:18 3 BEGIN
09:40:18 4 NULL;
09:40:18 5 END;
09:40:18 6 / Procedure created. 09:40:18 SQL
09:40:18 SQL alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'; Session altered. 09:40:18 SQL create or replace procedure calling
09:40:18 2 is
09:40:18 3 begin
09:40:18 4 pining;
09:40:18 5 dbms_lock.sleep(60);
09:40:18 6 end;
09:40:18 7 / Procedure created. 09:40:18 SQL
09:40:18 SQL col object_name for a30
09:40:18 SQL select object_name,last_ddl_time from dba_objects where object_name in ('PINING','CALLING'); OBJECT_NAME LAST_DDL_TIME
------------------------------ -------------------
CALLING 2007-04-02 09:40:18
PINING 2007-04-02 09:40:18 09:40:18 SQL
09:40:18 SQL exec calling;
在Session 2执行授权:

SQL set time on
09:40:22 SQL grant execute on pining to sys; Grant succeeded. 09:40:22 SQL
我们看到Session 2的授权顺利通过,再转到Session 1:

09:40:18 SQL exec calling; PL/SQL procedure successfully completed. 09:41:18 SQL
09:41:18 SQL select object_name,last_ddl_time from dba_objects where object_name in ('PINING','CALLING'); OBJECT_NAME LAST_DDL_TIME
------------------------------ -------------------
CALLING 2007-04-02 09:40:18
PINING 2007-04-02 09:40:22

我们看到对象PINING的LAST_DDL_TIME已经变化。

看来Grant已经能够绕过了Library Cache Pin的竞争,这是Oracle10g的增强。这个问题最早由网友dqpylf在阅读我的新书《深入浅出Oracle》,在不同版本中测试案例时发现,今天才有时间做一点探究,感谢dqpylf。 -The End-

来源:http://www.tulaoshi.com/n/20160219/1607474.html

延伸阅读
标签: windows系统
Win8如何创建图片密码与Pin码   在微软最新的Win8系统中,用户除了可以使用微软账户密码与普通密码作为开机密码外,还可以使用支持收拾操作的图片密码与更为简单的Pin码。下面就将详细介绍设置图片密码与Pin码的方法。 图片密码是一种帮助用户保护触摸Win8电脑的全新方法。用户可以选择图片并在图片上画出各种手势,以此来创建...
标签: 男人 男人养生
重建男人“雄风”的长期法则 阳痿会给男性朋友造成极大的身心伤害,使他们感到自卑和耻辱,压力及障碍会随之加剧,久之必然导致全身系统功能紊乱或受损,最终影响正常的工作和生活。有病才来治,就已经晚了,医治阳痿预防才是关键。预防”不举“要注意做到消除心理影响,对性知识有充分的了解,充分认识精神因素对...
标签: 网络游戏
公主与绯色婚纱《兵王》重建军乐城     继新手村星之城、空中之城团基地全面重建后,《 兵王 》第二大都市——军乐城也迎来了全新改造计划,主城面积大幅度扩建,场景风貌焕然一新:神秘的地下隧道、巍峨的王室城堡、坚固的高石城墙、精美的大师雕像、宏伟的凯旋之门……处处给你意想不到的惊喜! 骑士与公主时装   ...
标签: 电脑入门
一些用户在使用过程中,一不小心将Spotlight 索引打乱了,那么该如何解决这个问题呢?要想解决这个问题,就要重建Spotlight 索引,下面是手动重建Spotlight 索引的方法。 重建Spotlight 索引的方法: 打开系统偏好设置:点选Spotlight,选择隐私。将 Mac OS X 所在的系统磁盘拖拽进去(或其他所需磁盘) 如果弹出确认框,点选好。现在...
教给你节水节电的金点子 冰箱: 1、不论安置何种型号的冰箱时,冰箱都应置于凉爽通风处,它的背面与墙之间都要留出空隙,这比起紧贴墙面来每天可以节能20%左右。 2、电冰箱开门次数要少,开门动作要快,另外冰箱内的温度调节档应适中,不宜放置强冷,以免冰箱内制冷循环系统加大工作量而增加耗电量。 3、一般食物保鲜效果在8至10摄氏度最...

经验教程

638

收藏

41
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部