从Oracle 10g数据库架构中删除连接的用户

Dropping a connected user from an Oracle 10g database schema

是否有比重新启动Oracle数据库服务更好的方法来强制所有用户与Oracle 10g数据库架构断开连接?

我们有几个使用SQL Developer的开发人员连接到单个Oracle 10g服务器上的相同模式。 问题是,当我们要删除架构以重建它时,不可避免地有人仍在连接,并且在有人仍在连接时我们无法删除数据库架构或用户。

同样,我们也不想删除所有与其他模式的连接,因为其他人可能仍然可以连接并使用这些模式进行测试。

有人知道解决此问题的快速方法吗?


要查找会话,作为DBA使用

select sid,serial# from v$session where username = ''

如果要确保仅获取使用SQL Developer的会话,则可以添加and program = 'SQL Developer'。如果只想终止属于特定开发人员的会话,则可以对os_user添加限制

然后用杀死他们

alter system kill session ','

(e.g. alter system kill session '39,1232')

产生现成的kill-statement的查询可能是

select 'alter system kill session ''' || sid || ',' || serial# || ''';' from v$session where username = ''

这将为该用户在每个会话中返回一条kill语句-类似于:

alter system kill session '375,64855';

alter system kill session '346,53146';


使用此查询查找到数据库的现有会话:

1
2
3
4
5
6
7
8
9
SELECT s.inst_id,
       s.sid,
       s.serial#,
       p.spid,
       s.username,
       s.program
FROM   gv$session s
       JOIN gv$process p ON p.addr = s.paddr AND p.inst_id = s.inst_id
WHERE  s.type != 'BACKGROUND';

您会看到类似下面的内容。
Oracle Sessions

然后,使用从以上结果中提取的值运行以下查询。

1
ALTER SYSTEM KILL SESSION '<put above s.sid here>,<put above s.serial# here>';

例如:
ALTER SYSTEM KILL会议'93,943';


我的建议是这个简单的匿名块:

1
2
3
4
5
6
7
8
9
DECLARE
   lc_username   VARCHAR2 (32) := 'user-name-to-kill-here';
BEGIN
   FOR ln_cur IN (SELECT sid, serial# FROM v$session WHERE username = lc_username)
   LOOP
      EXECUTE IMMEDIATE ('ALTER SYSTEM KILL SESSION ''' || ln_cur.sid || ',' || ln_cur.serial# || ''' IMMEDIATE');
   END LOOP;
END;
/

只需使用SQL即可:

1
2
3
disconnect;

conn tiger/scott as sysdba;

在杀死它们之前,请确保更改系统并启用受限会话,否则它们将在完成工作之前迅速重新登录数据库。


只是我的两分钱:最好的方法(但短期内可能不是最快的方法)可能是每个开发人员都可以在自己的数据库实例上工作(有关数据库工作,请参见规则1)。

自从Oracle Database 10g Express Edition以来,在开发人员工作站上安装Oracle变得轻而易举。


您是否尝试过ALTER SYSTEM KILL SESSION?从V $ SESSION获取给定架构中每个会话的SID和SERIAL#,然后执行

ALTER SCHEMA KILL SESSION sid,序列号;


推荐阅读

    linux命令删除用户组?

    linux命令删除用户组?,管理,密码,系统,用户组,用户,概念,命令,文件,管理员,

    linux操作数据库命令?

    linux操作数据库命令?,地址,服务,系统,密码,数据库,工具,名字,首页,命令,参

    纯命令行linux服务器?

    纯命令行linux服务器?,密码,服务,系统,命令,终端,地址,百度,情况,状态,公共,

    linux命令连接数修改?

    linux命令连接数修改?,服务,系统,网络,环境,密码,情况,地址,命令,服务器,表

    重启服务linux命令?

    重启服务linux命令?,网络,系统,服务,设备,工作,标准,名称,工具,命令,管理,Lin

    linux中用户创建命令?

    linux中用户创建命令?,密码,系统,用户,软件,命令,联系方式,管理,信息,用户

    linux删除重复项命令?

    linux删除重复项命令?,数据,系统,工具,电脑,项目,公式,百度,代码,名字,基础,

    linux网口连接命令?

    linux网口连接命令?,网络,系统,地址,密码,检测,软件,情况,分析,电脑,状态,怎

    linux硬链接删除命令?

    linux硬链接删除命令?,数据,系统,不了,时间,名称,链接,文件,档案,地方,设备,l

    linux注销命令用户?

    linux注销命令用户?,系统,服务,密码,地址,工作,命令,状态,工具,信息,基础,lin

    linux交互删除命令?

    linux交互删除命令?,名称,不了,系统,文件夹,命令,通用,文件,目录,指令,方法,l

    linux命令行创建用户?

    linux命令行创建用户?,系统,密码,软件,新增,用户,联系方式,管理,用户名,命

    linux的网络连接命令?

    linux的网络连接命令?,地址,系统,工作,网络,工具,信息,命令,基础,服务,目录,l

    linux系统用户命令?

    linux系统用户命令?,系统,工作,地址,信息,管理,命令,目录,时间,电脑,名称,请

    linux删除无用的命令?

    linux删除无用的命令?,系统,软件,数据,员工,命令,信息,宽松,对比,状态,公司,L

    linux命令行删除网卡?

    linux命令行删除网卡?,地址,网络,系统,工具,信息,设备,名字,管理,服务,网卡,l

    linux数据库升级命令?

    linux数据库升级命令?,系统,信息,时间,最新,网络,名字,地址,管理,简介,传播,l

    linux命令删除字符串?

    linux命令删除字符串?,软件,系统,代码,名称,通用,连续,字符,字符串,命令,空

    linux删除整个命令?

    linux删除整个命令?,命令,文件夹,不了,名称,通用,系统,数据,文件,目录,格式,l

    linux命令所有用户?

    linux命令所有用户?,系统,密码,信息,情况,名称,命令,用户,时间,地址,位置,如