Oracle数据库删除用户时提示用户存在连接

在开发或测试的Oracle数据库中,为了模拟真实环境的首次安装,我们常常会不断的创建和删除数据库用户,有时候在删除数据库用户的时候会遇到提示用户存在连接,如何处理?

所属分类 数据库

相关标签 Oracle连接删除

删除错误提示

在版本交付周期中,无论是自测还是SDV测试过程中需要把数据库的用户和表清理干净重新创建,以保证与客户现场环境首次安装完全一致。

但实际删除Orcale用户时提示:

cannot drop a user that is currently connected
-- 提示存在用户通过此账号连接
SQL> drop user MEBUGSDB cascade;
drop user MEBUGSDB cascade 
*ERROR at line 1:
ORA-01940: cannot drop a user that is currently connected 

实际自己检查外部连接的都是断开的,比如PLSQL、SQLPlus、WebAPP等。

那只能用一些非常规手段了...emmm

出现无法删除用户并提示已有连接时,先查询这个用户当前还在连接的sessionID。

-- SELECT SID,SERIAL# FROM V$SESSION WHERE USERNAME="MEBUGSDB"; 
SQL> SELECT SID,SERIAL# FROM V$SESSION WHERE USERNAME="MEBUGSDB"; 
SID        SERIAL#
---------- ----------
136        1807

如上所示,我们发现有一个连接通过此用户与数据库保持连接状态。

通过命令Kill掉这个session(连接线程)可能会有多个线程,注意全部Kill掉即可。

-- ALTER SYSTEM KILL SESSION "136,1807";
SQL> ALTER SYSTEM KILL SESSION "136,1807";
System altered.
SQL> drop user MEBUGSDB cascade; 
User dropped. 

删除成功,处理完毕。

结尾小结

删除用户处理方式并不复杂。

执行强制删除连接前需要确认是否已经与所有使用该数据库用户的小伙伴们均沟通完毕,避免产生数据丢失。

那么在实际过程为什么我们已经确认各个应用业务已经关闭或暂停还是会存在连接呢?

这里针对JAVA的Tomcat容器单独说明下情况。

Tomcat容器ShutDown

关闭JAVA的Tomcat容器我们一般都是执行bin目录下的shutdown.sh脚本。

实际上仅仅执行该脚本后,容器确实无法访问,但是应用并没有完全关闭掉。

如果通过ps查询进程就会发现,该路径下的java程序依旧是启动的。

最终我们需要通过kill -9 PID的方式完全关闭。

这其中原因一般都是项目应用中可能使用了线程池一类的东西导致。

Tomcat的shutdown.sh脚本并不能同步关闭应用启动的一些后台线程。

米虫

做一个有理想的米虫,伪全栈程序猿,乐观主义者,坚信一切都是最好的安排!

本站由个人原创、收集或整理,如涉及侵权请联系删除

本站内容支持转发,希望贵方携带转载信息和原文链接

本站具有时效性,不提供有效、可用和准确等相关保证

本站不提供免费技术支持,暂不推荐您使用案例商业化

发表观点

提示

昵称

邮箱

QQ

网址

当前还没有观点发布,欢迎您留下足迹!

同类其他

数据库

Linux下Oracle数据库配置日志目录及统一迁移

很多运维人员习惯采用默认安装的方式安装Oracle数据库,而Oracle日志默认放置在/opt目录下,绝大多数Linux环境的大磁盘往往挂载在/home,因此经常会出现磁盘空间不足的情况,采用本文配置可指定并迁移日志

Oracle数据库基础实用维护命令集

Linux系统下的Oracle数据库实用常用的维护命令整理,本文内容偏向运维,主要包含:基础启动重启、表空间维护、数据库角色与用户维护、字符集配置等,并给出各类场景的实例语句

ORA-00257: archiver error. Connect internal only, until freed.

登录Oracle报错 ORA-00257: archiver error. Connect internal only, until freed. 由于归档日志(archive log)已满引起的。

Oracle存储过程Procedure基础语法

存储过程是个好东西,WEB工程在架构阶段会设计很多存储过程,后续在架构中开发需求的时候,反而会直接写SQL完成各项诉求。所以说,这玩意儿略微有那么一点点伪高端。

Oracle数据库MERGE INTO语句条件入库

Oracle 9i版本引入MERGE INTO语句,其主要用于实现条件入库能力,用于解决对于已有数据更新升级的情况,即可实现不存在数据则插入,存在数据则更新的分支判断形式的更新能力

MongoDB通过$lookup实现多表连接查询

对于数据库而言,多表连接操作可以算的上是基本操作,在 MongoDB 通过 $lookup 聚合查询可以实现多表左连接查询,在后续的版本中 $lookup 得到了一系列的增强,实现更为复杂的关联查询

选择个人头像

昵称

邮箱

QQ

网址

评论提示

  • 头像:系统为您提供了12个头像自由选择,初次打开随机为你选择一个
  • 邮箱:可选提交邮箱,该信息不会外泄,或将上线管理员回复邮件通知
  • 网址:可选提交网址,评论区该地址将以外链的形式展示在您的昵称上
  • 记忆:浏览器将记忆您已选择或填写过得信息,下次评论无需重复输入
  • 审核:提供一个和谐友善的评论环境,本站所有评论需要经过人工审核