问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

oracle不清楚是哪个session,然后删除正在连接的用户

发布网友 发布时间:2022-04-29 03:41

我来回答

2个回答

懂视网 时间:2022-04-07 22:22

1.查询用户的连接状态
Select username,sid,serial# from v$session where username=‘XY1027‘;

USERNAME                              SID    SERIAL#
------------------------------ ---------- ----------
XY1027                                 22          1
XY1027                                142          1

 

2.逐个删除
Alter system kill session‘22,1‘;

 

3.删除用户
drop user xy1027 cascade;

 

4.检查状态

如果在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已经被杀死。此时可以安全删除用户。

【Oracle】删除正在连接的用户

标签:

热心网友 时间:2022-04-07 19:30

  首先,在删除数据库用户时遇到了正在连接的用户,此时无法drop掉。
  那么,是否可以强制断开连接呢?答案似乎是肯定的:
  我们知道,在Oracle数据库中,可以通过kill session的方式来终止一个进程,其基本语法结构为:
  alter system kill session ’sid,serial#’ ;对于kill session 的解释,可以参考:Oracle中Kill session的研究有两个概念必须清楚:v$process的spid与v$session的processv$process
  这个视图提供的信息,都是oracle服务进程的信息,没有客户端程序相关的信息服务进程分两类,一是后台的,一是dedicate/shared serverpid, serial# 这是oracle分配的PID
  spid 这才是操作系统的pid
  program 这是服务进程对应的操作系统进程名
  v$session:
  这个视图主要提供的是一个数据库connect的信息,主要是client端的信息,比如以下字段:
  machine 在哪台机器上
  terminal 使用什么终端
  osuser 操作系统用户是谁
  program 通过什么客户端程序,比如TOAD
  process 操作系统分配给TOAD的进程号
  logon_time 在什么时间
  username 以什么oracle的帐号登录
  command 执行了什么类型的SQL命令
  sql_hash_value SQL语句信息
  有一些是server端的信息:
  paddr 即v$process中的server进程的addr
  server 服务器是dedicate/shared
  还有其它一些信息,可以理解为是client/server共享的信息,主要是针对这个session而言的了解了以上知识,可以通过下面的语句关闭指定用户的所有连接(将...put_line改为exec即可执行):
  [sql] view plain copy print?在CODE上查看代码片派生到我的代码片DECLARE
  U_SID VARCHAR2(50);
  U_SERIALNUMBER VARCHAR2(50);
  U_NAME VARCHAR2(50);
  CURSOR C1 IS
  SELECT TRIM(S.SID), TRIM(S.SERIAL#)
  FROM V$SESSION S, V$PROCESS P
  WHERE S.PADDR = P.ADDR
  AND (S.USERNAME = U_NAME);
  BEGIN
  U_NAME := 'UNIONTEST02';
  OPEN C1;
  LOOP
  FETCH C1
  INTO U_SID, U_SERIALNUMBER;
  EXIT WHEN C1%NOTFOUND;
  DBMS_OUTPUT.PUT_LINE('alter system kill session ' || '''' ||TRIM(U_SID) || ',' || TRIM(U_SERIALNUMBER) ||''';');
  --exec('');
  END LOOP;
  END;
  断开连接后,用户可以被drop掉。
  查看所有用户的连接:
  [sql] view plain copy print?在CODE上查看代码片派生到我的代码片UNIONTEST02为指定的用户
  [sql] view plain copy print?在CODE上查看代码片派生到我的代码片SELECT S.USERNAME,
  S.OSUSER,
  S.PROGRAM,
  S.MACHINE,
  S.SID,
  S.SERIAL#,
  P.SPID,
  'alter system kill session ' || '''' || TRIM(S.SID) || ',' ||TRIM(S.SERIAL#) || ''';'
  FROM V$SESSION S, V$PROCESS P
  WHERE S.PADDR = P.ADDR
  AND S.USERNAME = 'UNIONTEST02';
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
有哪些电视购物频道 时尚购物电视购物起源 时尚购时尚购 (FASHIONGOU) 购物狂电视剧 老式炸串酱料配方,15年炸串店老板倾囊相授!学到就是赚到 炸串的技巧和配方 哔咔哔咔漫画通用账号大全 账号共享 请问2024年推出的AIPC有哪些值得购买?ProArt创162024适合什么样的人群... aigc和aipc区别 aipc与目前市场上的电脑有什么主要区别?个人购买办公使用 索尼zx2搭配pha3,无论数字连接还是模拟连接,都有一个解码器被空置,这样从利用上来讲不会浪费吗 如何通知oracle立即关闭session释放资源 索尼zx1和zx2有什么区别?芯片,解析度什么的? 最后想入手索尼ZX2,用哪款耳机纠结中,大 粪堆上开花打一歇后语 oracle数据库 用户session Kill不掉 求解,索尼walkman支持什么视频格式 怎样从入门到高手?(象棋) 如何迅速杀掉数据库里inactive的会话 鲜花插到牛屎上歇后语 sony黑砖搭配IE800怎么样 如何使用PL/SQL Developer查看和杀掉session 象棋怎样从入门到高手? 一朵鲜花插在牛粪上还有什么歇后语 会选择索尼大法Walkman听音乐吗 oracle如何关掉一个用户的session 请问各位,索尼黑砖nw-wm1a的音质会比iPhoneXs好吗?如果耳机用的是威士顿w80 医生会主动加你吗? 如何杀掉Oracle中的会话 索尼大法好,过气网红SONY NW-ZX2 无损播放器 买不买 节约用水倡议书格式是什么? 带牛的歇后语 奥图码hd30+家用投影仪全高清1080p怎么样 索尼D100和ZX2哪个好 oracle kill session 后 飞傲x7与索尼zx2比,怎么样? 怎么练成象棋高手? 1080p的3d投影机选哪个好呢?奥图码的hd33不知如何? 索尼zx2加pha3是否能播放dsd256文件?自带播放器和海贝都显示不支持,多年*信徒感觉被坑 歇后语 一朵鲜花插在牛粪上下一句是什么 索尼zx2和小米mix2s哪个好 怎样能速成中国象棋高手? 幻痛里VS的Walkman是什么型号的 鲜花插在牛粪上是成语吗 中国象棋从菜鸟到高手最好从开局学起还是残局学起比较好 歇后语15个 23岁单身女孩做梦怀孕快临产,但折腾两天没生出来,后检查发现是没怀孕,只是肚子大了 有关节约用水的倡议书 家用投影仪哪个好?要能看1080P电影,能投影100寸的 做梦梦见自己怀孕快生了,暗示不好吗