如何取消卡死进程sqlplus

时间:2018-08-27 18:51:08

标签: sqlplus

我有一个像这样的脚本(实际上稍微复杂一点,但是显示发生了什么就足够了)。

我将其运行了好几个星期没有问题,但是如果由于某种原因表被锁定,我们将在内存中等待数千个进程,直到表被解锁为止。

很可能该脚本使用了服务器中的所有PID,并且服务器被阻塞,没有人可以连接。

我需要一种方法在一段时间(5秒?)后取消这些过程,但是我不知道这是否可能。

此外,我既不是DBA也不是root用户,所以我需要以普通用户身份进行操作。

有什么主意吗?

谢谢!

#!/bin/ksh

while true 
do 

# one new connection each time
$ORACLE_HOME/bin/sqlplus -s << LABEL1
    Myuser/Mypassword@Mysid

DECLARE
    CURS_STRING VARCHAR2 (1536);

BEGIN
    CURS_STRING := 'INSERT INTO MyTable (MyField) values ' || chr(39) || 'A' || chr(39) || ''; 
    execute immediate CURS_STRING;

    --   Count rows updated
    i := sql%rowcount;

    if (i <> 0) then
        commit;
    else
        rollback;
    end if;

EXCEPTION 
    WHEN others THEN
    rollback;
end;
/
LABEL1
#end loop
done

路易斯

0 个答案:

没有答案