视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Oracle断开用户连接的方法
2020-11-09 11:52:38 责编:小采
文档


今天在做Oracle数据还原的时候,发觉还原的数据不正确,有重复记录。查询相关资料得知, 在还原之前应把数据库对应的用户删掉,然

今天在做Oracle数据还原的时候,发觉还原的数据不正确,有重复记录。查询相关资料得知, 在还原之前应把数据库对应的用户删掉,然后新建同名的用户并指定对应的表空间、临时空间等,,并授权。但在删除用户的时候又要要求用户处于断开状态,下面就是我做测试时断开用户(tb_test)连接的方法。

每个用户的连接信息都可以在v$session 中查到,如查询tb_test用户的连接信息:

select sid,serial# from v$session where username=‘tb_test';

得到一个进程列表,然后可以用alter system kill session 'sid,serial';来终止会话。

eg.alter system kill session '140,22';

由上图可看出返回可能有多行记录,而要多次执行:alter system kill session 'sid,serial'语句,也可能用游标一次把所有的都结束会话

eg.declare
v_sid v$session.sid%type;
v_serial v$session.serial#%type;

CURSOR killUser is
select sid,serial#,username from v$session where UPPER(username)=UPPER('tb_test');
begin
if killUser%isopen = false then
open killUser ;
end if;
fetch killUser into v_sid,v_serial,v_userName;
while killUser%found loop
execute immediate 'alter system kill session '''||v_sid||','||v_serial||'''';

fetch killUser into v_sid,v_serial,v_userName;
end loop;
close killUser;
end;
/

经过测试,以上的方法可以达到目的,本人刚学oracle,望大侠们指点。

下载本文
显示全文
专题