【问题标题】:How to kill batch job session in Unix?如何在 Unix 中终止批处理作业会话?
【发布时间】:2013-08-14 12:42:24
【问题描述】:

我有 shell 脚本(批处理作业)来从 unix 环境运行 Oracle 包。我没有 oracle 系统访问权限来终止会话..

从 unix 如何终止会话。

在 oracle 中,我使用以下查询杀死但我没有权限。

ALTER 系统 KILL SESSION '2181,52254'

QL 错误:ORA-01031:权限不足

请告诉我如何在 unix 中终止 shell 脚本会话?

【问题讨论】:

    标签: sql unix oracle10g oracle-sqldeveloper


    【解决方案1】:
    ps -aef | grep userID
    

    查找要终止的进程。请注意第二列的进程 ID。

    kill -9 <processID>
    

    【讨论】:

    • 单挑-9就是强杀。明智地使用。 :)
    • 我没有找到确切的会话 ID.. 我只看到下面的列表.. 这是最近的会话.. -bash-3.2$ ps -aef | grep batchadm batchadm 2665 32627 0 07:51 pts/0 00:00:00 ps -aef batchadm 2666 32627 0 07:51 pts/0 00:00:00 grep batchadm root 32622 4255 0 07:49? 00:00:00 sshd: batchadm [priv] batchadm 32626 32622 0 07:49? 00:00:00 sshd: batchadm@pts/0 batchadm 32627 32626 0 07:49 pts/0 00:00:00 -bash
    • 我没有看到 Unix 中的会话,但我仍然可以看到位于 oracle 中的会话.. v$session 表...
    • 这可能有多种原因:您不是进程的所有者或进程正在远程服务器上运行。
    【解决方案2】:

    通过查看v$process.spid 列(不是pid!),您可以将操作系统进程转到kill。您可以通过加入v$process.addr=v$session.paddr 找到 v$process 行。

    当然,您需要在数据库所在的操作系统上执行kill,而不是在数据库的客户端上。您需要操作系统权限;通常在 Unix 上,您需要成为数据库服务器上的 root 或 oracle 用户。

    【讨论】:

      猜你喜欢
      • 2017-04-22
      • 2016-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-11
      • 1970-01-01
      相关资源
      最近更新 更多