li
  当前位置:主页 > 性能优化 > 文章内容
li
Oracle11新特性——在线操作功能增强(三)
来源: http://yangtingkun.itpub.net/  作者: yangtingkun    时间:2008-01-26   阅读:2  
本文章共1718字,分2页,当前第1页,快速翻页:
 

打算写一系列的文章介绍11g的新特性和变化。

11g中在线处理功能得到了很大增强,其中包括在线修改表结构,在线创建或重建索引,建立不可见索引,表增加非空字段,在线DDL以及对象依赖性细化等。

这一篇介绍Oracle对象依赖性判断增强。

Oracle11新特性——在线操作功能增强(一):http://yangtingkun.itpub.net/post/468/400430

Oracle11新特性——在线操作功能增强(二):http://yangtingkun.itpub.net/post/468/401293


在11g之前,Oracle判断依赖性只达到了对象级,也就是说存储过程访问的对象一旦发生了变化,那么Oracle就会将存储过程置为INVALID状态。

Oracle使用这种方法强制存储过程在下次执行之前进行重编译,避免表结构改变后,存储过程没有更新,从而得到错误的结果。

这种方法没有问题,但是有的时候修改往往和关联的存储过程没有关系,但是Oracle并不对这种情况进行判断,这样会造成很多不需要重新编译的存储过程也被置于INVALID状态:

SQL> CREATE TABLE T (ID NUMBER);

表已创建。

SQL> CREATE OR REPLACE PROCEDURE P_TEST AS
2 BEGIN
3 INSERT INTO T (ID) VALUES (1);
4 END;
5 /

过程已创建。

SQL> SELECT OBJECT_NAME, OBJECT_TYPE, STATUS FROM USER_OBJECTS WHERE OBJECT_NAME = 'P_TEST';

OBJECT_NAME OBJECT_TYPE STATUS
------------------------------ ------------------- -------
P_TEST PROCEDURE VALID

SQL> ALTER TABLE T ADD (NAME VARCHAR2(30));

表已更改。

SQL> SELECT OBJECT_NAME, OBJECT_TYPE, STATUS FROM USER_OBJECTS WHERE OBJECT_NAME = 'P_TEST';

OBJECT_NAME OBJECT_TYPE STATUS
------------------------------ ------------------- -------
P_TEST PROCEDURE INVALID

SQL> SELECT * FROM V$VERSION;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production

上面这个简单的例子就说明了这种情况,对于存储过程P_TEST来说,只是访问了TID列,T表新增NAME列,并不会影响存储过程P_TEST。但是在10g及以前版本,Oracle的判断依赖性达不到字段级。

www.ixdba.net


而从11g开始,Oracle细化了依赖性的判断,下面看看在11g中同样的例子:

SQL> CONN YANGTK/yangtk@ORA11G已连接。
SQL> CREATE TABLE T (ID NUMBER);

表已创建。

SQL> CREATE OR REPLACE PROCEDURE P_TEST AS
2 BEGIN
3 INSERT INTO T (ID) VALUES (1);
4 END;
5 /

过程已创建。

SQL> SELECT OBJECT_NAME, OBJECT_TYPE, STATUS FROM USER_OBJECTS WHERE OBJECT_NAME = 'P_TEST';

OBJECT_NAME OBJECT_TYPE STATUS
------------------------------ ------------------- -------
P_TEST PROCEDURE VALID

SQL> ALTER TABLE T ADD (NAME VARCHAR2(30));

表已更改。

SQL> SELECT OBJECT_NAME, OBJECT_TYPE, STATUS FROM USER_OBJECTS WHERE OBJECT_NAME = 'P_TEST';

OBJECT_NAME OBJECT_TYPE STATUS
------------------------------ ------------------- -------
P_TEST PROCEDURE VALID

SQL> SELECT * FROM V$VERSION;

BANNER
-----------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 -



阅读更多内容1 · 2 · 下一页>>


  上一篇: Oracle11新特性——在线操作功能...   下一篇: Oracle11新特性——在线操作功能...
li
 §相关评论  
 热点文章

·Resize datafile导致ASM Crash
·在Oracle10g RAC下新增ASM磁盘
·ORACLE SQL性能优化系列 (一)
·oracle性能调优:管理oracle日志
·oracle RAC环境中系统时钟的调
·why:Rac的心跳线不支持交叉线?
·RAC的VIP及实例依赖关系:版本O
·如何启动DataGuard的备用数据库
·系统表空间IO错误 数据损坏处理
·不幸中的万幸:遭遇ORA-00600 [
·用ORACLE的高级复制实现内外网
li
 编辑推荐
·Resize datafile导致ASM Crash
·在Oracle10g RAC下新增ASM磁盘
·ORACLE SQL性能优化系列 (一)
·oracle性能调优:管理oracle日志
·oracle RAC环境中系统时钟的调
·why:Rac的心跳线不支持交叉线?
·RAC的VIP及实例依赖关系:版本O
·如何启动DataGuard的备用数据库
·系统表空间IO错误 数据损坏处理
·不幸中的万幸:遭遇ORA-00600 [
·用ORACLE的高级复制实现内外网
li
 相关篇章
·Oracle11新特性——在线操作功能...
·Oracle11新特性——PLSQL新特性(...
·Oracle11新特性——PLSQL新特性(...
·Oracle11新特性——PLSQL新特性(...
·Oracle11新特性——PLSQL新特性(...
·Oracle11新特性——PLSQL新特性(...
·Oracle11新特性——PLSQL新特性(...
·Oracle11新特性——PLSQL新特性(...
·Oracle11新特性——PLSQL函数缓存...
·Oracle11新特性——PLSQL函数缓存...
·Oracle11新特性——在线操作功能...
·Oracle11新特性——在线操作功能...
·Oracle11新特性——在线操作功能...
·Oracle11新特性——在线操作功能...
·Oracle11DATA GUARD实时应用加实...
·Oracle11新特性——在线操作功能...
·Oracle11新特性——分区功能增强...
·Oracle11新特性——分区功能增强...
·Oracle11新特性——分区功能增强...
·Oracle11新特性——分区功能增强...
 
li
设为首页 | 关于我们 | 技术服务 | 收藏本站 | 网站地图 | 联系方式 | 本站友情连接