数据库对象失效原因 数据库对象失效的原因很多,下面大致归纳了一些常见的原因:1: 当被引用对象的结构变更时,都会使得相关的依赖对象转变为INVALID状态。数据库中的对象(存储过程,函数,包,视图,触发器),它们往往需要直接或者间接的引用其它对象,对象的依赖包括直接和间接二种,其中直接依赖是指存储对 ...
转载
2021-07-17 14:22:00
255阅读
数据库对象失效的原因很多,下面大致归纳了一些常见的原因 1: 当被引用对象的结构变更时,都会使得相关的依赖对象转变为INVALID状态。 数据库中的对象(存储过程,函数,包,视图,触发器),它们往往需要直接或者间接的引用其它对象, 对象的依赖包括直接和间接二种,其中直接依赖是指存储对象直接依赖于被引
原创
2021-05-28 16:50:32
348阅读
在日常数据库维护过程中,我们会发现数据库中一些对象(包Package、存储过程`
原创
2021-08-22 12:32:13
551阅读
一、 起源开发A在从库查询视图遇到报错:执行的SQL为: select * from V_TEST_JOIN
具体错误信息为:java.sql.SQLSyntaxErrorException:
ORA-04045: 在重新编译/重新验证 V_TEST_JOIN 时出错
ORA-16000: 数据库或可插入数据库是以只读访问方式打开的二、 报错原因及处理方法1. 报错原因视图V_TEST_JOI
原创
2023-05-06 10:18:36
2074阅读
近期对数据库进行巡检,发现数据库业务用户(非 SYS/Public)下存在失效对象。对失效对象进行分析,主要包括失效的视图、物化视图、函数、包、触发器等。 思考: 基于以下原因,建议对失效对象进行处理: 1、通过失效的对象,可能能够反推发现业务软件问题(业务系统功能太多,可能存在测试不充分的问题); ...
转载
2021-05-12 21:12:36
510阅读
2评论
昨天看有个帖子说到的失效对象重新编译的问题,然后发现自己公司里也出现莫名其妙的失效对象。 SQL code --创建自动编译失效过程事务记录表declare tabcnt integer := 0;begin select count(*) into tabcnt from dba_tables where table_name='RECOMPILE_LOG'; if tabcnt...
原创
2021-07-21 11:57:01
672阅读
原因由于有 null 值,导致无效,使用 nvl解决 select vipaccountno from vip1 where vipaccountno not in( select nvl(vipaccountno ,'x') from b1); 建议使用 minus select vipaccou ...
转载
2021-08-27 11:13:00
358阅读
2评论
查看当前无效对象
select *
from dba_objects t
where t.status = 'INVALID' order by 1;
编译无效对象:
有两种方式:
1、执行sql查询结果:
select 'alter '||object_type||' '||owner||'.'||object_name||' compile;'
from dba_objec
原创
2021-09-16 14:52:57
7392阅读
https://blog.csdn.net/weixin_39534833/article/details/148547110?spm=1001.2014.3001.5502 1.2.1 . 逻辑失效逻辑失效是索引本身并没有真正失效,只是由于写法的问题导致索引用不上,比如对SQL的条件列进行运算,类似select * from t where upper(name)=‘ABC’等,这时在name列
SELECT * FROM ALL_DEPENDENCIES WHERE REFERENCED_NAME='AAA';
转载
精选
2012-12-28 14:49:58
950阅读
每次数据库升级之后,都需要对库中的对象进行重新编译一下。下面整理出了一个脚本,只需要执行一下就能批量编译这些失效的对象。需要注意的是:因权限问题,最好是选择sys用户来执行这个脚本,如是plsql developer中执行,记得选择“ALL USERS” [oracle@oracle ~]$&n
原创
2017-11-19 16:11:49
1469阅读
在数据库升级、打补丁或者imp全库时可能会碰到对象失效的情况,这里提供了三种办法重新编译:一、单个对象逐一编译select'alter '||object_type||' '||'"'||owner||'"'||'.'||object_name||' compile;' from dba_objects where status
转载
精选
2014-03-24 11:35:46
987阅读
如果两个或以上索引具有相同的等级,你可以强制命令ORACLE优化器使用其中的一个(通过它,检索出的记录数量少) . 举例: SELECT ENAME FROM EMP WHERE EMPNO = 7935 AND DEPTNO + 0 = 10 /*DEPTNO上的索引将失效*/ AND EMP_T
转载
2019-07-03 10:39:00
1165阅读
2评论
Oracle 索引的目标是避免全表扫描,提高查询效率,但有些时候却适得其反。例如一张表中有上百万条数据,对某个字段加了索引,但是查询时性能并没有什么提高,这可能是 oracle 索引失效造成的。oracle 索引有一些限制条件,如果你违反了这些索引限制条件,那么即使你已经加了索引,oracle还是会执行一次全表扫描,查询的性能不会比不加索引有所提高,反而可能由于数据库维护索引的系统开销
转载
2022-06-30 15:41:46
1223阅读
like 'a%'不会 ,like ‘%a’或者 ‘%a%’会导致索引失效
转载
2016-01-23 16:18:00
251阅读
2评论
在pdb refresh迁移过程中,由于Oracle 19c高低版本间,架建时部署组件的差异,有可能会导致某些组件失效;此时,需要根据实际场景,进行组件清理,比如:XDB修复,ORDIM删除,JAVAVM删除,SDO删除等。
在具体执行以下步骤时,请将pdb1替换成实际的pdb名称。1、XDB修复sys.validate_context、XDB.dbms_xdbt,是清理context组件残留的
原创
2024-04-30 14:31:43
235阅读
1、IN操作符
用IN操作符写出来的SQL直观简单、易于理解。但是在where条件中使用IN操作符是低效的。例如下面这条查询语句:
转载
2023-07-17 22:34:45
189阅读