Heim  >  Artikel  >  Datenbank  >  Oracle 断开用户连接的方法

Oracle 断开用户连接的方法

WBOY
WBOYOriginal
2016-06-07 17:06:331330Durchsuche

今天在做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,望大侠们指点。

linux

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn