首页 > 解决方案 > 是否可以删除具有 Referenced_Owner/Referenced_Name 的无效对象?(dba_dependencies)

问题描述

我试图清除我的 Oracle 18c 数据库中的无效对象。开发人员让我继续删除一些无效对象,但在谷歌搜索之后,我注意到我必须注意其他依赖对象。

如果我删除这些无效对象,它会对引用的对象产生任何影响吗?它也会使那些无效,创建更多无效对象吗?我已经尝试重新编译并得到编译错误。我将它们发送给应用程序所有者(开发人员),他们说我可以删除这些对象。下面我提供了无效对象和引用的对象。我应该如何清除无效对象?

[所有者/对象名称/对象类型]

无效对象

PLAP/TEMP_DIS_CONSTR/PROCEDURE

PLAP/TEMP_DRP_CONSTR_PK/PROCEDURE

PLAP/TEMP_UPDATE_MILESTONE_TABLE/PROCEDURE

无效的对象 -----> 引用的对象

PLAP/TEMP_DIS_CONSTR/PROCEDURE -------> SYS/ALL_CONS_COLUMNS/VIEW

PLAP/TEMP_DIS_CONSTR/PROCEDURE --------> PUBLIC/DBMS_OUTPUT/SYNONYM

PLAP/TEMP_DIS_CONSTR/PROCEDURE --------> SYS/STANDARD/PACKAGE

PLAP/TEMP_DRP_CONSTR_PK/PROCEDURE ------> SYS/STANDARD/PACKAGE

PLAP/TEMP_DRP_CONSTR_PK/PROCEDURE ------> PUBLIC/DBMS_OUTPUT/SYNONYM

PLAP/TEMP_DRP_CONSTR_PK/PROCEDURE ------> PLAP/AOP_CAPABILITY_MILESTONES/TABLE

PLAP/TEMP_UPDATE_MILESTONE_TABLE/PROCEDURE ------> SYS/STANDARD/PACKAGE

PLAP/TEMP_UPDATE_MILESTONE_TABLE/PROCEDURE ------> PLAP/AOP_MILESTONES_SEQ/SEQUENCE

谢谢, 鲢鱼

标签: oraclestored-proceduresdatabase-schemaplsqldeveloperplsql-package

解决方案


您的示例数据和您提出问题的方式有点不一致。

您的数据呈现方式:

PLAP/TEMP_DIS_CONSTR/PROCEDURE -------> SYS/ALL_CONS_COLUMNS/VIEW
PLAP/TEMP_DIS_CONSTR/PROCEDURE -------> PUBLIC/DBMS_OUTPUT/SYNONYM
PLAP/TEMP_DIS_CONSTR/PROCEDURE -------> SYS/STANDARD/PACKAGE
PLAP/TEMP_DRP_CONSTR_PK/PROCEDURE ------> SYS/STANDARD/PACKAGE
PLAP/TEMP_DRP_CONSTR_PK/PROCEDURE ------> PUBLIC/DBMS_OUTPUT/SYNONYM
PLAP/TEMP_DRP_CONSTR_PK/PROCEDURE ------> PLAP/AOP_CAPABILITY_MILESTONES/TABLE
PLAP/TEMP_UPDATE_MILESTONE_TABLE/PROCEDURE ------> SYS/STANDARD/PACKAGE
PLAP/TEMP_UPDATE_MILESTONE_TABLE/PROCEDURE ------> PLAP/AOP_MILESTONES_SEQ/SEQUENCE

看起来您担心要丢弃的对象依赖于其他对象。这很好,这些并不代表担心丢弃这些对象的理由。

但是,如果数据被颠倒了……即,如果其中的行DBA_DEPENDENCIES(REFERENED_OWNER, REFERENCED_NAME, REFERENCED_TYPE)您要删除的对象匹配,那么这是一个潜在的问题,因为这意味着某些内容取决于您要删除的对象。如果您删除该对象,则依赖于它的其他对象将变为无效。

所以,

  1. 要删除的对象取决于其他对象 ==> 很好
  2. 其他对象依赖对象丢弃 ==> 考虑一下

推荐阅读