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

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

这个用户没了

相关推荐
SelectDB16 分钟前
抖音集团 实时数据仓库:Apache Doris / SelectDB 的技术能力与实践
数据库
不会代码的小猴24 分钟前
C++新增关键字
开发语言·c++·笔记
SelectDB24 分钟前
网易 日志与时序数据分析:Apache Doris / SelectDB 的技术能力与实践
数据库
yaoxin52112327 分钟前
497. Java 反射 - 使用反射读取注解
java·开发语言·python
2019一路前行38 分钟前
Python 函数式编程
开发语言·python
weixin_539446781 小时前
Navicat Premium 17报缺少ODBC驱动
数据库
哦虎!1 小时前
【数据库】事务
java·数据库·mysql
冯汉栩2 小时前
Swift Control View,Label渐变颜色(源码)
开发语言·ios·swift
倔强的石头_2 小时前
时序数据库的难题不只在写入速度
数据库
从小就看凹凸曼^o^3 小时前
Python基础5 - 字典与集合:(1)字典
开发语言·python