oracle中“无法删除当前已连接的用户”
2013-07-19 13:42
507 查看
oracle将某个库导出后,要删除该用户GBSNEW的库以及数据
用该语句
drop USER GBSNEW CASCADE;
如果此时提示 oracle中用户删除不了,提示“无法删除当前已连接的用户”
则说明该用户有活动的连接
则执行以下语句XXX=GBSNEW
alter user XXX account lock;解锁
Select username,sid,serial# from v$session where username='GBSNEW';查看所有会话
USERNAME SID SERIAL#
1 GBSNEW 146 13953
2 GBSNEW 148 14747
3 GBSNEW 149 255
alter system kill session '146,13953' ;
alter system kill session '148,14747' ;
alter system kill session '149,255' ;
再执行DROP USER GBSNEW CASCADE;
------------------------------------------------------------------------------------------------------------------------------
今天在做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,望大侠们指点。
用该语句
drop USER GBSNEW CASCADE;
如果此时提示 oracle中用户删除不了,提示“无法删除当前已连接的用户”
则说明该用户有活动的连接
则执行以下语句XXX=GBSNEW
alter user XXX account lock;解锁
Select username,sid,serial# from v$session where username='GBSNEW';查看所有会话
USERNAME SID SERIAL#
1 GBSNEW 146 13953
2 GBSNEW 148 14747
3 GBSNEW 149 255
alter system kill session '146,13953' ;
alter system kill session '148,14747' ;
alter system kill session '149,255' ;
再执行DROP USER GBSNEW CASCADE;
------------------------------------------------------------------------------------------------------------------------------
今天在做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,望大侠们指点。
相关文章推荐
- 如何断开所有连接oracle的用户--解决ORA-01940:无法删除当前连接的用户
- oracle无法删除当前已连接的用户
- oracle中用户删除不了,ORA-01940提示 “无法删除当前已连接用户”
- Oracle ORA-01940 无法删除当前已连接用户
- oracle无法删除当前已连接用户
- oracle删除不了用户,提示“无法删除当前已连接的用户”
- Oracle 无法删除当前连接用户
- oracle中用户删除不了,提示“无法删除当前已连接的用户”
- oracle中用户删除不了,提示“无法删除当前已连接的用户”
- Oracle 无法删除当前已连接的用户
- Oracle 无法删除当前连接用户
- Oracle中删除用户和表空间的常见问题(比如:ORA-01940无法删除当前已连接用户的解决方案)
- Oracle无法删除当前连接用户,以及killed的处理
- ORACLE无法删除当前连接用户
- Oracle 无法删除当前已连接的用户
- Oracle中 无法删除当前已经连接的用户 解决方法
- ORA-01940: 无法删除当前已连接的用户(Oracle,转)
- (转)oracle中用户删除不了,ORA-01940提示 “无法删除当前已连接用户”
- Oracle ORA-01940 无法删除当前已连接用户
- ORACLE无法删除当前连接用户