BIB*_*IBD 29 oracle session sqlplus kill database-administration
我需要快速(和强制)杀死连接到我的oracle数据库的所有外部会话,而无需管理员和管理员.
我不想只是锁定数据库,让用户优雅地退出.
我该如何编写脚本?
BIB*_*IBD 44
这个答案很大程度上受到对话的影响:http://www.tek-tips.com/viewthread.cfm? qid = 1395151& page = 3
ALTER SYSTEM ENABLE RESTRICTED SESSION;
begin
for x in (
select Sid, Serial#, machine, program
from v$session
where
machine <> 'MyDatabaseServerName'
) loop
execute immediate 'Alter System Kill Session '''|| x.Sid
|| ',' || x.Serial# || ''' IMMEDIATE';
end loop;
end;
Run Code Online (Sandbox Code Playgroud)
我跳过了源自数据库服务器的杀戮会话,以避免杀死Oracle与自身的连接.
小智 7
在杀死会话之前,如果可能的话
ALTER SYSTEM ENABLE RESTRICTED SESSION;
Run Code Online (Sandbox Code Playgroud)
阻止新会话连接.
我一直在使用这样的东西来终止我在共享服务器上的会话。可以删除“where”的第一行以终止所有非“sys”会话:
BEGIN
FOR c IN (
SELECT s.sid, s.serial#
FROM v$session s
WHERE (s.Osuser = 'MyUser' or s.MACHINE = 'MyNtDomain\MyMachineName')
AND s.USERNAME <> 'SYS'
AND s.STATUS <> 'KILLED'
)
LOOP
EXECUTE IMMEDIATE 'alter system kill session ''' || c.sid || ',' || c.serial# || '''';
END LOOP;
END;
Run Code Online (Sandbox Code Playgroud)