我需要在ODI中杀死会话,但它会告诉:
ODI-5001:代理内部无法停止会话DIMENSI account_Physical_SESS(8991):无法从其他进程停止内部代理上的会话运行。
当我看到&尝试执行它的代码并花费很长时间也不会停止:
DROP TABLE I $ _Customer;
是否有任何解决方案,而不是重新启动数据库。
答案 0 :(得分:1)
我猜您正在使用 LKM 从不同的数据库导入数据,然后查询将卡在源数据库中,您可以直接删除 I$ 表并将该步骤标记为失败并从创建 I$ 步骤重新启动作业, 我们在我们的项目中使用相同的过程,它按预期工作
答案 1 :(得分:0)
如果会话似乎挂起,则可以打开会话级节点(顶级节点)并将状态设置为'错误'
一两分钟后,代理人将放弃会话,图标将从“正在运行”图标变为“错误”图标。
答案 2 :(得分:0)
此错误表示会话是使用本地代理启动的。您从ODI Studio启动了会话,此ODI Studio是实际执行查询的客户端。这是一个内部代理。
只能在“操作员”窗口中完全管理正在外部代理上执行的会话。其他人只能从启动它们的ODI Studio终止。
有两种可能性:
alter system kill session 'sid,serial' immediate
。答案 3 :(得分:0)
根据您的数据库,会话很有可能会在数据库级别继续,即使操作员会告诉您失败了也是如此。在这种情况下,您还必须终止数据库会话。
您以前似乎遇到过这个问题,因为挂起一个悬挂表通常意味着另一个进程正在访问该表。
除了Naeel的帖子(也假设使用Oracle):v $ sql中的action字段可以帮助您找到启动数据库进程的ODI进程的会话/会话重试运行/步骤。如果这一切听起来怪异,请问您dba。