课题_ORACLE编译失效对象小结_oracle学习心得体会

其他工作总结 时间:2020-02-27 11:04:56 收藏本文下载本文
【www.daodoc.com - 其他工作总结】

课题_ORACLE编译失效对象小结由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“oracle学习心得体会”。

ORACLE编译失效对象小结

在日常数据库维护过程中,我们会发现数据库中一些对象(包Package、存储过程Procedure、函数Function、视图View、同义词.....)会失效,呈现无效状态(INVALID)。有时候需要定期检查数据库中存在哪些失效对象,对于存在异常的对象需要重新编译,有些自动失效的对象,一般会在下次调用的时候,会被重新编译,所以这些不需要人工干预。那么为什么对象突然会失效呢?又如何快速、高效的编译失效对象呢?哪些失效的对象不需要我们去重新编译呢?

数据库对象失效原因

数据库对象失效的原因很多,下面大致归纳了一些常见的原因(有些漏掉的,希望大家补充): 1: 当被引用对象的结构变更时,都会使得相关的依赖对象转变为INVALID状态。

数据库中的对象(存储过程,函数,包,视图,触发器),它们往往需要直接或者间接的引用其它对象,对象的依赖包括直接和间接二种,其中直接依赖是指存储对象直接依赖于被引用对象,而间接依赖是指对象间接依赖于被引用对象

要查看被引用的对象,可以通过下面SQL查看

select * from dba_dependencies where name='&objectname';

select * from all_dependencies where name='&objectname';

select * from user_dependencies where name='&objectname';举个简单例子,视图V_TEST引用了表TEST,TEST表修改了表结构时,会导致视图V_TEST变为无效对象。

SQL> CREATE TABLE TEST(ID NUMBER(10));

Table created.SQL> CREATE VIEW V_TEST AS SELECT * FROM TEST;

View created.SQL> SELECT OBJECT_NAME, STATUS FROM DBA_OBJECTS WHERE OBJECT_NAME='V_TEST';

OBJECT_NAME STATUS

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

V_TEST VALID

--修改表结构,增加一个字段NAME后,视图V_TEST变为无效

SQL> ALTER TABLE TEST ADD NAME VARCHAR(12);

Table altered.SQL> SELECT OBJECT_NAME, STATUS FROM DBA_OBJECTS WHERE OBJECT_NAME='V_TEST';

OBJECT_NAME STATUS

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

V_TEST INVALID

--查询视图V_TEST后,数据库会重新编译视图

SQL> SELECT * FROM V_TEST;

no rows selected

SQL> SELECT OBJECT_NAME, STATUS FROM DBA_OBJECTS WHERE OBJECT_NAME='V_TEST';

OBJECT_NAME STATUS

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

V_TEST VALID

其实不管视图,像存储过程,函数、包等,如果代码本身没有什么错误,只是引用的对象发生了变化。也会失效。但并不影响调用,因为ORACLE在调用时会自动重新编译的,如果其它对象变化后导致编译有错误。这时调用时重新编译后也是错误并处于失效状态,所以调用会出错。2:发布SQL脚本时(包、存储过程、函数等),没有充分测试,编译时出错,这时对象变为无效。3: 数据库升级、迁移时,出现大量无效对象(本质原因,个人臆测归结为原因1)。

4: 诸如此类各种情况:例如,Oracle 会自动维护分区索引,对于全局索引,如果在对分区表操作时,没有指定update index,则会导致全局索引失效,需要重建。

编译失效对象的方法统计失效的对象:

select owner, object_type, status, count(*)

from dba_objects

where status='INVALID'

group by owner, object_type, status

order by owner, object_type

查看具体失效对象

col owner for a20;

col object_name for a32;

col object_type for a16

col status for a8

select owner, object_name, object_type, status

from dba_objects

where status='INVALID'

order by 1, 2,3;

oracle数据库索引失效

oracle数据库索引失效(整理10篇)由网友“Shiina”投稿提供,下面小编为大家整理过的oracle数据库索引失效,欢迎阅读与借鉴!篇1:oracle数据库索引失效 这篇文章主要介绍了oracle数......

ORACLE审计小结

1、什么是审计 审计(Audit)用于监视用户所执行的数据库操作,并且Oracle会将审计跟踪结果存放到OS文件(默认位置为$ORACLE_BASE/admin /$ORACLE_SID/adump/)或数据库(存储在system......

oracle知识小结

Tnsnames.ora: listener_rac=(Description= (ADDRESS=(protocol=TCP)(HOST=)(PORT=1521)) (ADDRESS=(protocol=TCP)(HOST=)(PORT=1521)) ) Listener_racdb1=(Description= (......

编译原理各章小结

1.编译程序是一个翻译程序,将高级语言的源程序翻译成低级语言的程序。2.整个编译过程可以划分为五个阶段以及编译各阶段的任务;另外还有两个处理过程。3.不会有很多人会从事设......

Oracle JOB 用法小结

Oracle JOB 用法小结时间:2004-10-20 08:00来源:中国网管联盟 作者:BitsCN整理 点击:24528次一、设置初始化参数 job_queue_proceessql> alter system set job_queue_procee......

下载课题_ORACLE编译失效对象小结word格式文档
下载课题_ORACLE编译失效对象小结.doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

热门文章
点击下载本文