gpt4 book ai didi

linux - 使用 shell 脚本为 oracle db 杀死长时间运行的多个 session

转载 作者:太空宇宙 更新时间:2023-11-04 12:24:25 25 4
gpt4 key购买 nike

我正在处理 shell 脚本,当一条语句被识别为长时间运行时,我们必须在操作系统上获取 PID,确保它不是程序的主进程。(例如:Oracle)。检查 top 并终止匹配的进程,稍后我们可以使用脚本检查数据库是否仍然存在长时间运行的 session 。 kill掉特定的长时间运行的程序PID后,shell脚本需要向用户发送邮件信息。

[oracle@jumbox ]$ps au |grep oracle | awk 'print {$2}' |uniq
10020
15678
17345
18736
18856

我的问题是我没有在 top 命令中看到上述任何进程,那么我应该如何验证脚本中这些不存在的进程?或者是否有更好的衬垫或代码片段可以做到这一点?非常感谢任何建议。

谢谢

最佳答案

从服务器终止 session 是非常危险的,它可能会导致数据不明确甚至表中的行不可读。最好通过在 v$session View 中检查相同的内容来终止长时间运行的 session 。您可以在此处检查 session 是否处于非事件状态或正在等待另一个 session 完成。

要终止 session ,请使用 alter system kill session 'sid,serial#' immediate;,其中 sid 和 serial# 可以在 v$session View 中找到。要获取 session 的服务器 PID,您可以使用以下查询查询 v$processv$session View :

SELECT s.sid, s.serial#, s.username, p.spid, s.machine, p.terminal
FROM v$session s, v$process p
WHERE s.paddr = p.addr;

关于linux - 使用 shell 脚本为 oracle db 杀死长时间运行的多个 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45180864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com