WEB开发网
开发学院数据库Oracle library cache pin与PROCEDURE的重建 阅读

library cache pin与PROCEDURE的重建

 2008-12-16 13:05:49 来源:WEB开发网   
核心提示:我们看一下以下测试,首先在第一个session执行操作:SQL> create or replace PROCEDURE pining2 IS3 BEGIN4 NULL;5 END;6 /Procedure created.SQL>SQL> alter session set nls_date_for

我们看一下以下测试,首先在第一个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
2 IS
3 BEGIN
4 NULL;
5 END;
6 /

这个操作将一直挂起,直到第一个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

1 2  下一页

Tags:library cache pin

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接