用于检查 Oracle 中的无效对象并构建脚本以编译无效对象的脚本

Posted

技术标签:

【中文标题】用于检查 Oracle 中的无效对象并构建脚本以编译无效对象的脚本【英文标题】:Script to check to Invalid objects in Oracle and build script to compile the invalid objects 【发布时间】:2017-01-19 03:43:28 【问题描述】:

在 Oracle DB 中,在某些情况下,对象(视图/同义词)变得“无效”(无法编译),这增加了我经常维护这些问题的工作量。

我计划在每次部署的脚本开头和结尾都包含一些语句 1. 在部署我的更改之前检查所有无效对象。 2. 部署更改后,再次检查所有无效对象并自动构建脚本以修复无效视图和同义词并执行它。

如果有人可以帮助我构建一个涵盖上述要点的 oracle 脚本,那对我有很大帮助吗?

注意:我没有 DBA ADMIN 访问权限,我使用部署工具来部署脚本

提前非常感谢。 网站

【问题讨论】:

当您说自动修复时-您的意思是重新编译对吗? - 请检查我的答案。 【参考方案1】:

这个脚本会找到无效的对象,

select OWNER, OBJECT_NAME, OBJECT_TYPE, STATUS
from dba_objects
where status != 'VALID'
  and OWNER in ('SCHEMA_1','SCHEMA_2','SCHEMA_3')
order by owner, object_type;

使用以下脚本重新编译给定架构中的所有无效对象。

EXEC DBMS_UTILITY.compile_schema('SCHEMA_1', compile_all => false);

【讨论】:

以上是关于用于检查 Oracle 中的无效对象并构建脚本以编译无效对象的脚本的主要内容,如果未能解决你的问题,请参考以下文章

忽略CSV文件中的无效对象

oracle数据库事件监视器怎么用

如何解决 Oracle Apex 中的无效列错误?

如何使Apache Ignite缓存中的对象无效

如何在 Oracle 10g DB 中重新编译 SYS 用户中的无效 Java 类对象?

核心数据对象无效