Library cache pin/lock 在Oracle 10g的增強

edwardking888發表於2010-04-13

從Oracle 10g開始,以上測試將不會看到同樣的效果,這是因為Oracle 10g對於物件編譯與重建做出了增強。注意以下測試(來自Oracle 10gR2環境):

sys@NEI> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
Session altered.
sys@NEI> select object_name,last_ddl_time from user_objects where object_name='PINING';
OBJECT_NAME          LAST_DDL_TIME
-------------------- -------------------
PINING               2009-12-06 15:09:24
sys@NEI> create or replace PROCEDURE pining
  2  IS
  3  BEGIN
  4          NULL;
  5  END;
  6  /
Procedure created.
sys@NEI> select object_name,last_ddl_time from user_objects where object_name='PINING';
OBJECT_NAME          LAST_DDL_TIME
-------------------- -------------------
PINING               2009-12-06 15:09:24

注意當重新replace一個過程時,Oracle會首先執行檢查,如果程式碼前後完全相同,則replace工作並不會真正進行(因為沒有變化),物件的LAST_DDL_TIME不會改變,這就意味著Latch的競爭可以減少

再來看一下此前的測試在Oracle 10g中的情況如果。
首先在Session 1中執行:

sys@NEI> create or replace PROCEDURE pining
  2  IS
  3  BEGIN
  4  NULL;
  5  END;
  6  /
Procedure created.
sys@NEI> create or replace procedure calling
  2  is
  3  begin
  4  pining;
  5  dbms_lock.sleep(60);
  6  end;
  7  /
Procedure created.
sys@NEI> select object_name,last_ddl_time from dba_objects where object_name in ('PINING','CALLING');
OBJECT_NAME          LAST_DDL_TIME
-------------------- -------------------
PINING               2009-12-06 15:26:58
CALLING              2009-12-06 15:19:38
sys@NEI> set time on
15:31:49 sys@NEI> exec calling;
PL/SQL procedure successfully completed.
15:32:59 sys@NEI>

在Session 1過程中,切換到Session 2執行授權:

sys@NEI> set time on
15:32:00 sys@NEI> grant execute on pining to tq;
Grant succeeded.

可以看到Session 2的授權順利通過,再轉到Session 1:

15:32:59 sys@NEI> select object_name,last_ddl_time from dba_objects where object_name in ('PINING','CALLING');
OBJECT_NAME          LAST_DDL_TIME
-------------------- -------------------
PINING               2009-12-06 15:32:02
CALLING              2009-12-06 15:19:38

注意到物件pining的LAST_DDL_TIME已經變化grant授權已經能夠繞過library cache pin的競爭,這是Oracle 10g的增強

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

相關文章