1

我试图清除我的 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

谢谢, 鲢鱼

4

2 回答 2

1

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

您的数据呈现方式:

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. 其他对象依赖对象丢弃 ==> 考虑一下
于 2020-03-10T19:54:13.590 回答
1

如果这些是应用程序对象,那么您应该让开发人员明确告诉您哪些是可以安全删除的。他们应该负责他们的东西的版本控制/配置管理,而不是让你去猜测。

于 2020-03-10T19:43:13.787 回答