ORA-01940 无法删除当前连接的用户

-----------------------------------------------------------------------

---- bayaim

---- 2024年8月20日15:37:53

------------------------------------------------------------------------

问题背景:

  想删除用户下所有的对象


1、问题现象:

执行命令,删除用户:
drop user ECOLOGY cascade;

报错:
ora01940 无法删除当前连接的用户

 

2、解决办法:

复制代码
-- 查看用户的sid和serial
select username,sid,serial#,program from v$session where username='ECOLOGY';

-- 如果用户已连接数的较少,可以手动删除
alter system kill session '385,29016';


-- 如果用户已连接数的较多,可以批量删除
select 'alter system kill session ''' || sid || ',' || serial# || ''';'
from
(
SELECT SE.sid, SE.serial#, SUBSTR(SE.machine, 1, 30) MACH
FROM v$session SE, v$sqlarea SQ, v$process PR
WHERE SE.paddr = PR.ADDR(+)
AND SE.sql_address = SQ.address(+)
AND SE.USERNAME like '%ECOLOGY%'
);

---查询的批量删除命令结果如下
alter system kill session '10,503';
alter system kill session '1144,964';
alter system kill session '1151,17866';
alter system kill session '1153,32599';
……


-- 在服务器上,使用sys链接数据库,再次删除用户
drop user ECOLOGY cascade;

  测试结果:
  1、如果数据库的对象较多,删除会很久
  2、不如 DBCA 删库


-- 查看用户session的状态,验证结果
select saddr,sid,serial#,paddr,username,status from v$session
where username is not null and username='ECOLOGY';
复制代码

 

posted @   上帝_BayaiM  阅读(35)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示