ODI-5001无法在ODI中杀死会话

时间:2016-10-03 03:04:16

标签: oracle session

我需要在ODI中杀死会话,但它会告诉:

ODI-5001:代理内部无法停止会话DIMENSI account_Physical_SESS(8991):无法从其他进程停止内部代理上的会话运行。

当我看到&尝试执行它的代码并花费很长时间也不会停止:

DROP TABLE I $ _Customer;

是否有任何解决方案,而不是重新启动数据库。

4 个答案:

答案 0 :(得分:1)

我猜您正在使用 LKM 从不同的数据库导入数据,然后查询将卡在源数据库中,您可以直接删除 I$ 表并将该步骤标记为失败并从创建 I$ 步骤重新启动作业, 我们在我们的项目中使用相同的过程,它按预期工作

答案 1 :(得分:0)

如果会话似乎挂起,则可以打开会话级节点(顶级节点)并将状态设置为'错误'

一两分钟后,代理人将放弃会话,图标将从“正在运行”图标变为“错误”图标。

答案 2 :(得分:0)

此错误表示会话是使用本地代理启动的。您从ODI Studio启动了会话,此ODI Studio是实际执行查询的客户端。这是一个内部代理。

只能在“操作员”窗口中完全管理正在外部代理上执行的会话。其他人只能从启动它们的ODI Studio终止。

有两种可能性:

  1. 转到执行会话的工作站(启动会话)并尝试从那里停止会话。如果ODI Studio挂起,您可能会终止其进程。 (可能之后有必要进行清洁陈旧会议)
  2. 也可以从数据库端执行alter system kill session 'sid,serial' immediate

答案 3 :(得分:0)

根据您的数据库,会话很有可能会在数据库级别继续,即使操作员会告诉您失败了也是如此。在这种情况下,您还必须终止数据库会话。

您以前似乎遇到过这个问题,因为挂起一个悬挂表通常意味着另一个进程正在访问该表。

除了Naeel的帖子(也假设使用Oracle):v $ sql中的action字段可以帮助您找到启动数据库进程的ODI进程的会话/会话重试运行/步骤。如果这一切听起来怪异,请问您dba。