ORA-39187: The transportable set is not self-contained, violation list is

文档解释

ORA-39187: The transportable set is not self-contained, violation list is

Cause: The tablespaces specified for this job did not satisfy the closure checking. The list of violations specified each closure violation.

Action: See specific errors for violation and correct the problem or change the tablespaces on the command line and try again.

ORA-39187错误是由于在Oracle的数据库中创建了可移植的集合,但是该集合不是自包含的。该错误通常会引发以下错误:

ORA-39187:语句缺少实例组件。

这里显示的错误反映了创建可移植集合时出现的问题。可移植集合(portable set)是对可执行对象,如视图,存储过程,函数和游标等的组织集合。由于它们未定义为可以维护的单独对象,因此在运行时无法加载和执行它们,而只能在授权的实例中引用它们。

这意味着,如果创建可移植的集合,则还需要一系列支持对象(例如,存储过程,视图,触发器,功能,等),才能使此集合有效。如果缺少其中一个支持对象,那么就会提示上述错误消息。

常见案例

1.如果在创建可移植集合时未在源实例中定义相应的支持对象,则会出现此错误。

2.如果引用的运行时错误对象由于缺少一个支持对象导致失效,则也会出现此错误信息。

3.如果跟踪的运行时对象与授予授权相关,而授权已从目标实例上删除,则在运行时可能会出现此错误。

解决方法:

要解决此错误,首先要做的是查找缺少的支持对象,以及可能导致失效的可移植运行时对象。要做到这一点,可以使用Oracle数据库的对象列表,以及检查ORA-39187所在会话活动状态的trace文件。一旦找到缺失的支持存储,就可以尝试在源实例中定义、部署或移植它们,以便恢复可移植集合。

此外,如果发现运行时的跟踪对象或授权正在导致ORA-39187错误,则需要在目标端系统上进行相应的调整。这些包括:恢复被删除的授权,或在目标数据库上部署和引用可移植运行时,以消除ORA-39187错误。

综上,尽管ORA-39187错误表明可移植集合未能找到所需的支持对象,但可以通过在源和目标实例上定义和引用相关的支持对象来解决该错误。

你可能感兴趣的