oralce无法删除用户,ORA-01940提示 “无法删除当前已连接用户”

本文介绍了解决Oracle中删除用户及其表空间时遇到的问题,提供了两种有效的方法:一是通过锁定用户、查询并杀死相关进程的方式;二是通过关闭并重启数据库来解决连接问题。

重新创建用户,及表空间,删除用户时候,出现错误提示,被删除的目标用户处于连接状态。

删除用户语句:drop user amhdgf cascade;

删除表空间语句:drop tablespace amhdgf including contents and datafiles;

方法1.先锁定用户、然后查询进程号,先杀死对应的进程、再删除对应的用户:

询数据库所有当前连接的用户:select user name, sid, serial# from v$session;从视图中查找,如下图:

杀死 kill 目标用户,语句如下:alter system kill session '69,11660' ;

执行完以后,就可顺利drop掉想要删除的用户,进行重新创建用户了!

如果在drop 后还提示ORA-01940:无法删除当前已链接的用户,说明还有连接的session,可以通过查看session的状态来确定该session是否被kill 了,用如下语句查看:

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

select saddr,sid,serial#,paddr,username,status from v$session where username is not null

结果如下(以我的库为例):

 saddr                     sid           serial#            paddr              username              status

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

564A1E28              513           22974            569638F4        NETBNEW             ACTIVE
564A30DC              514          18183            569688CC        NETBNEW            INACTIVE
564A5644              516           21573            56963340        NETBNEW            INACTIVE
564B6ED0              531           9                   56962D8C        NETBNEW            INACTIVE
564B8184              532          4562               56A1075C        WUZHQ                KILLED

status 为要删除用户的session状态,如果还为inactive,说明没有被kill掉,如果状态为killed,说明已kill。

由此可见,WUZHQ这个用户的session已经被杀死。此时可以安全删除用户。

方法2.shutdown掉数据库,重启数据库后再执行drop命令:

command命令:关闭Oracle数据库/启动Oracle数据库
SQLPLUS命令连接到Oracle数据库后,
SQL> shutdown immediate          //执行关闭Oracle数据库命令
ORA-01031: insufficient privileges      //执行关闭Oracle数据库命令,出现错误‘权限不足’,即当前登录用户权限不足
SQL> conn / as sysdba;           //以 sysdba用户登录Oracle数据库
Connected.                       //显示连接成功
SQL> shutdown immediate           //执行关闭Oracle数据库命令
Database closed.                  //显示关闭Oracle数据库成功
Database dismounted.
ORACLE instance shut down.
SQL> startup                     //执行启动Oracle数据库命令
ORACLE instance started.         //显示启动Oracle数据库成功

关闭Oracle数据库/启动Oracle数据库不同命令的区别
1)正常关闭 shutdown
2) 立即关闭 shutdown immediate
3) 关闭事务 shutdown transactional
4) 强行关闭 shutdown abort,当然谁都不想碰到这种情况


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值