DROP USER c##xyt CASCADE > ORA-01940: 无法删除当前连接的用户

多创建了一个用户,想要给它删除掉

一 上执行过程,确实删除成功了

sql 复制代码
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> DROP USER c##xyt CASCADE;
DROP USER c##xyt CASCADE
*
第 1 行出现错误:
ORA-01940: 无法删除当前连接的用户


SQL> select saddr,sid,serial#,paddr,username,status from v$session where username = 'c##xyt';

未选定行

SQL> ALTER USER C##XYT account LOCK;

用户已更改。

SQL> select saddr,sid,serial#,paddr,username,status from v$session where username = 'c##xyt';

未选定行

SQL> select saddr,sid,serial#,paddr,username,status from v$session where username = 'C##XYT';

SADDR                   SID    SERIAL# PADDR
---------------- ---------- ---------- ----------------
USERNAME                       STATUS
------------------------------ --------
00007FF838443EA0          3      36748 00007FF8352B70C0
C##XYT                         INACTIVE

00007FF83643B740        185      50332 00007FF8373A4D08
C##XYT                         INACTIVE

00007FF83850AD70        395      15275 00007FF8384087D0
C##XYT                         INACTIVE


SQL> alter system kill session '3,36748';

系统已更改。

SQL> alter system kill session '185,50332';

系统已更改。

SQL> alter system kill session '395,15275';

系统已更改。

SQL> DROP USER C##XYT CASCADE;

用户已删除。

SQL>

二 步骤解析

2.1 锁定账户

将要删除的用户给锁定掉

sql 复制代码
SQL> ALTER USER C##XYT account LOCK;

用户已更改。

2.2 查询待连接用户的进程号

sql 复制代码
SQL> select saddr,sid,serial#,paddr,username,status from v$session where username = 'C##XYT';

正常来说都会有进程的,没有可能是因为

2.3 根据进程号kill掉进程

sql 复制代码
SQL> alter system kill session '3,36748';

系统已更改。

SQL> alter system kill session '185,50332';

系统已更改。

SQL> alter system kill session '395,15275';

系统已更改。

2.4 级联删除掉用户

sql 复制代码
SQL> DROP USER C##XYT CASCADE;

用户已删除。

三 注意事项

oracle似乎要考虑大小写,比方说,我上头第一次查进程号时,查不到

sql 复制代码
SQL> select saddr,sid,serial#,paddr,username,status from v$session where username = 'c##xyt';

未选定行

SQL> select saddr,sid,serial#,paddr,username,status from v$session where username = 'C##XYT';

SADDR                   SID    SERIAL# PADDR
---------------- ---------- ---------- ----------------
USERNAME                       STATUS
------------------------------ --------
00007FF838443EA0          3      36748 00007FF8352B70C0
C##XYT                         INACTIVE

00007FF83643B740        185      50332 00007FF8373A4D08
C##XYT                         INACTIVE

00007FF83850AD70        395      15275 00007FF8384087D0
C##XYT                         INACTIVE

如果仍有不明白,可以私信讨论

这个用户没了

相关推荐
2501_944424121 小时前
Flutter for OpenHarmony游戏集合App实战之连连看路径连线
android·开发语言·前端·javascript·flutter·游戏·php
C系语言1 小时前
python用pip生成requirements.txt
开发语言·python·pip
燃于AC之乐1 小时前
深入解剖STL Vector:从底层原理到核心接口的灵活运用
开发语言·c++·迭代器·stl·vector·源码分析·底层原理
聆风吟º8 小时前
Oracle到KingbaseES数据库迁移:全流程实战指南与避坑总结
数据库·oracle·数据库迁移·kingbasees
哈__8 小时前
Oracle至KingbaseES数据库迁移全攻略:痛点拆解、配置实操与问题排查
数据库·oracle
星火开发设计8 小时前
C++ 数组:一维数组的定义、遍历与常见操作
java·开发语言·数据结构·c++·学习·数组·知识
TTGGGFF9 小时前
控制系统建模仿真(一):掌握控制系统设计的 MAD 流程与 MATLAB 基础运算
开发语言·matlab
JZC_xiaozhong9 小时前
电商ERP如何同步订单数据到MySQL?集成方案解析
数据库·mysql·数据分析·etl工程师·嵌入式实时数据库·电商erp集成·数据集成与应用集成
消失的旧时光-19439 小时前
第四篇(实战): 订单表索引设计实战:从慢 SQL 到毫秒级
java·数据库·sql
2501_944424129 小时前
Flutter for OpenHarmony游戏集合App实战之贪吃蛇食物生成
android·开发语言·flutter·游戏·harmonyos