Oracle10g中过程(PROCEDURE )重建的增强
|
在Oracle9i中,即使一个完全相同的过程的重建,Oracle也需要重新编译过程,这个可以从LAST_DDL_TIME看出:
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL> create or replace PROCEDURE pining Procedure created. SQL> select object_name,last_ddl_time from dba_objects where object_name="PINING"; OBJECT_NAME LAST_DDL_TIME SQL> create or replace PROCEDURE pining Procedure created. SQL> select object_name,last_ddl_time from dba_objects where object_name="PINING"; OBJECT_NAME LAST_DDL_TIME 在Oracle10g中,这个LAST_DDL_TIME不再变化,这说明在10g中,当我们执行create or replace PROCEDURE 时,Oracle现在先尝试进行过程检查,如果内容没有变化,则不需要对过程进行重新编译,这可以减少Cache中的Invalidation, 从而可以减少竞争: $ sqlplus eygle/eygle Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> create or replace PROCEDURE pining Procedure created. SQL> alter session set nls_date_format="yyyy-mm-dd hh24:mi:ss"; Session altered. SQL> col object_name for a30 OBJECT_NAME LAST_DDL_TIME SQL> create or replace PROCEDURE pining Procedure created. SQL> select object_name,last_ddl_time from dba_objects where object_name="PINING"; OBJECT_NAME LAST_DDL_TIME 然而这个变化是否有效呢?请看我接下来的另外一个测试... -to be continued .... ----- 源代码网供稿. |
