Oracle 10g中过程PROCEDURE重建的增强

dcba上周有了一个新的发现,在Oracle10g中,当重建一个存储过程时,Oracle的行为和以前有所不同。

在Oracle9i中,即使一个完全相同的过程的重建,Oracle也需要重新编译过程,这个可以从LAST_DDL_TIME看出:

[oracle@jumper oracle]$ sqlplus eygle/eygle

SQL*Plus: Release 9.2.0.4.0 - Production on Sat Mar 31 17:52:55 2007

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

Connected to:

Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production

With the Partitioning option

JServer Release 9.2.0.4.0 - Production

SQL> create or replace PROCEDURE pining

2 IS

3 BEGIN

4 NULL;

5 END;

6 /

Procedure created.

SQL> select object_name,last_ddl_time from dba_objects where object_name='PINING';

OBJECT_NAME LAST_DDL_TIME

------------------------------ -------------------

PINING 2007-03-31 17:52:58

SQL> create or replace PROCEDURE pining

2 IS

3 BEGIN

4 NULL;

5 END;

6 /

Procedure created.

SQL> select object_name,last_ddl_time from dba_objects where object_name='PINING';

OBJECT_NAME LAST_DDL_TIME

------------------------------ -------------------

PINING 2007-03-31 17:54:35

在Oracle10g中,这个LAST_DDL_TIME不再变化,这说明在10g中,当我们执行create or replace PROCEDURE 时,Oracle现在先尝试进行过程检查,如果内容没有变化,则不需要对过程进行重新编译,这可以减少Cache中的Invalidation,从而可以减少竞争:

$ sqlplus eygle/eygle

更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/

SQL*Plus: Release 10.2.0.1.0 - Production on Sat Mar 31 17:44:46 2007

Copyright (c) 1982, 2005, Oracle. All rights reserved.

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production

With the Partitioning, OLAP and Data Mining options

SQL> create or replace PROCEDURE pining

2 IS

3 BEGIN

4 NULL;

5 END;

6 /

Procedure created.

SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

Session altered.

SQL> col object_name for a30

SQL> select object_name,last_ddl_time from dba_objects where object_name='PINING';

OBJECT_NAME LAST_DDL_TIME

------------------------------ -------------------

PINING 2007-03-31 17:45:25

SQL> create or replace PROCEDURE pining

2 IS

3 BEGIN

4 NULL;

5 END;

6 /

Procedure created.

SQL> select object_name,last_ddl_time from dba_objects where object_name='PINING';

OBJECT_NAME LAST_DDL_TIME

------------------------------ -------------------

PINING 2007-03-31 17:45:25

作者:51cto博客 Oracle小混子

时间: 2024-12-29 03:21:24

Oracle 10g中过程PROCEDURE重建的增强的相关文章

Oracle10g中过程(PROCEDURE )重建的增强

在Oracle9i中,即使一个完全相同的过程的重建,Oracle也需要重新编译过程,这个可以从LAST_DDL_TIME看出: [oracle@jumper oracle]$ sqlplus eygle/eygle SQL*Plus: Release 9.2.0.4.0 - Production on Sat Mar 31 17:52:55 2007 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. Connec

如何在Oracle 10g中通过网络连接导入数据

历史上,Oracle的导入及导出功能曾采用磁盘文件作为卸载和再装载数据库的存储中介.对于较大的数据库这样"交换文件"的方式是个大问题.因为过大文件将会超过操作系统对文件大小的限制,使得导出不能实现. 一些有创新精神的数据管理员使用文件压缩功能,例如UNIX中的压缩功能,以获得交换文件的最大容量.后来版本中的导入及导出功能允许使用多种交换文件以减少限制. 在Oracle 10g中,Data Pump版的导入功能能从其他数据库实例中直接导入,从而完全删除交换文件. 第一步是定义一个数据库链

Oracle 10G 中的回收站

在Oracle 10G中,引入了一个回收站(Recycle Bin)的概念. 回收站,从原理上来说就是一个数据字典表,放置用户Drop掉的数据库对象信息.用户进行Drop操作的对象并没有被数据库删除,仍然会占用空间.除非是由于用户手工进行Purge或者因为存储空间不够而被数据库清掉.数据库有了这样的功能,能够减少很多不必要的麻烦.常常看到开发人员误把表删除,急急忙忙找DBA来想办法的情况,相信,随着10G的大范围应用,这种情形应该比较少见了. DBA管理上的相关信息可以从USER_recycle

Oracle 10G 中的"回收站"

oracle Oracle 10G 中的"回收站" by Fenng http://www.DBAnotes.net 在Oracle 10G中,引入了一个回收站(Recycle Bin)的概念. 回收站,从原理上来说就是一个数据字典表,放置用户Drop掉的数据库对象信息.用户进行Drop操作的对象并没有被数据库删除,仍然会占用空间.除非是由于用户手工进行Purge或者因为存储空间不够而被数据库清掉.数据库有了这样的功能,能够减少很多不必要的麻烦.常常看到开发人员误把表删除,急急忙忙找D

Oracle 10g中可以通过列方式指定HINT

看优化文档的时候发现,指定索引的HINT还可以通过列方式. 在9i和以前的版本,索引提示的格式为/*+ index(table_alias) */或/*+ index(table_alias index_name) */,但是在10g中不仅可以通过索引名称来确定HINT的索引,还可以通过指定列名的方式. SQL> select * from v$version; BANNER ------------------------------------------------------------

Oracle 10g中用RMAN恢复数据库功能增强

我们知道在Oracle 10g R2以前的版本中,如果使用RMAN恢复数据库,临时表空间的临时文件是不会自动恢复的. 这曾经引发了一系列的麻烦,很多DBA在恢复完成之后忘记添加临时文件,经常到应用出错时才能发现. 从Oracle 10g R2开始,使用RMAN恢复数据库之后,Oracle会自动重新创建临时文件,由于临时文件是Sparse File,所以创建会非常迅速,通常你不会感觉得到. 以下是我曾经恢复的一段日志,其中记录了Oracle的恢复处理过程: Thu Sep 14 22:52:06

在Oracle 10g中如何获得索引建议

  racle 10g的最优秀功能之一是顾问框架(Advisory Framework),它是一个优化顾问集合,可帮助您充分利用数据库.其中的一个顾问--SQL访问顾问(Access Advisor)--建议对模式中的索引和物化视图进行改变来提高性能. 但是,由于顾问框架(Advisory Framework)被一般化,以支持各种不同的顾问,因此导航DBMS_ADVISOR包中的所有存储过程和函数会十分繁琐.一个CREATE_TASK过程初始化一个新的优化任务,一个SET_TASK_PARAME

在Oracle 10g中如何获得索引

Oracle 10g的最优秀功能之一是顾问框架(Advisory Framework),它是一个优化顾问集合,可帮助您充分利用数据库.其中的一个顾问--SQL访问顾问(Access Advisor)--建议对模式中的索引和物化视图进行改变来提高性能. 但是,由于顾问框架(Advisory Framework)被一般化,以支持各种不同的顾问,因此导航DBMS_ADVISOR包中的所有存储过程和函数会十分繁琐.一个CREATE_TASK过程初始化一个新的优化任务,一个SET_TASK_PARAMET

oracle 10g中使用Sqlplus工具以SYSDBA登陆数据库

前两天在ITPUB上看到一个帖子,提到如何用最快的方法以SYSDBA登陆数据库. 有人给出的方法是sqlplus直接回车,然后在提示用户名时输入/ as sysdba: [oracle@yans1 ~]$ sqlplus SQL*Plus: Release10.2.0.3.0 - Production on星期六8月8 22:01:47 2009 Copyright (c) 1982, 2006, Oracle.  All Rights Reserved. Enter user-name: /