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

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

这个用户没了

相关推荐
xxjj998a41 分钟前
Laravel6.x核心特性全解析
数据库·mysql·adb
m0_748554818 小时前
golang如何实现用户订阅偏好管理_golang用户订阅偏好管理实现总结
jvm·数据库·python
weixin_520649878 小时前
WinForm数据展示组件ListView
c#
早日退休!!!9 小时前
《数据结构选型指南》笔记
数据结构·数据库·oracle
xcLeigh9 小时前
KES数据库性能优化实战
数据库·sql·性能优化·sql优化·数据性能
阿正呀9 小时前
Redis怎样实现本地缓存的高效失效通知
jvm·数据库·python
yoyo_zzm9 小时前
Laravel9.x新特性全解析
数据库·mysql·nginx
九转成圣9 小时前
Java 性能优化实战:如何将海量扁平数据高效转化为类目字典树?
java·开发语言·json
SmartRadio9 小时前
ESP32-S3 双模式切换实现:兼顾手机_路由器连接与WiFi长距离通信
开发语言·网络·智能手机·esp32·长距离wifi
2501_901200539 小时前
mysql如何设置InnoDB引擎参数_优化innodb_buffer_pool
jvm·数据库·python