最初由 rollingpig 发布
[B]profile ==> idle_time
或者是script + cronjob
或者是 procudre + dbms_job [/B]
rollingpig帮忙看看我写的procedure错在哪里
CREATE OR REPLACE PROCEDURE "KILL_SESSION_TEST" AS
v_sid varchar2(255);
v_serial varchar2(255);
killer varchar2(1000);
CURSOR cursor_session_info is select sid,serial# from v$session where type!='BACKGROUND' and status='INACTIVE' and last_call_et>2700 and username='ICWEB' and machine='orc';
BEGIN
open cursor_session_info;
loop
fetch cursor_session_info into v_sid,v_serial;
exit when cursor_session_info%notfound;
--dbms_output.PUT_LINE('alter system disconnect session '''||v_sid||','||v_serial||''' post_transaction immediate;');
killer:='alter system disconnect session '''||v_sid||','||v_serial||''' post_transaction immediate;';
dbms_output.PUT_LINE(killer);
execute immediate killer;
--execute immediate 'alter system disconnect session ':v_sid,:v_serial' post_transaction immediate' ;
end loop;
dbms_output.PUT_LINE(cursor_session_info%rowcount||' idle users can be killed!');
close cursor_session_info;
END;
/
下面是执行结果:
SQL> set serveroutput on
SQL> exec kill_session_test
alter system disconnect session '300,54629' post_transaction immediate;
BEGIN kill_session_test; END;
*
第 1 行出现错误:
ORA-00911: 无效字符
ORA-06512: 在 "SYSTEM.KILL_SESSION_TEST", line 14
ORA-06512: 在 line 1
|