我有一个像这样的脚本(实际上稍微复杂一点,但是显示发生了什么就足够了)。
我将其运行了好几个星期没有问题,但是如果由于某种原因表被锁定,我们将在内存中等待数千个进程,直到表被解锁为止。
很可能该脚本使用了服务器中的所有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
路易斯