杀掉所有Oracle的用户进程

本文介绍了解决Oracle死锁进程的方法,包括使用SQL语句获取进程信息,并在不同操作系统上(Windows和Linux)杀死指定的Oracle进程。此外还提供了批量终止所有Oracle用户进程的脚本。

 如何谋杀掉Oracle会话进程

       有一些死锁进程,用alter system kill session 'sid, serial#';杀掉回话后,异常退出无法释放进程,需要在系统级别kill。

执行下面的语句获得进程(线程)号:
select spid, osuser, s.program  from v$session s, v$process p

 where s.paddr = p.addr  and s.sid = &sid;

 在操作系统级别kill:Windows > orakill <sid> spid

                                  Linux # kill -9 spid

杀掉所有的Oracle用户进程

a、windows的环境,执行如下SQL,并把结果存成.bat的文件,比如kill.bat, 执行一下kill.bat就可以了。

select 'orakill '||sid||' '||spid as thread from sys.v_$process p, sys.v_$session s

where sid > 10 and p.addr = s.paddr ;

 

b、 Unix的环境相对来说就简单多了,执行如下的命令就可以了

$ ps -ef|grep $ORACLE_SID|grep -v ora_|grep LOCAL=NO|awk '{print $2}'|xargs kill

或者:#kill  -9 'ps -ef|grep oracle |grep -v grep |awk '{print $2}''

           #ps -ef|grep oracle |grep -v grep |cut -c 9-15|xargs kill -9

然后你再shutdown immediate就很快的了。

 

### 终止Oracle数据库中的进程Oracle数据库中,终止进程通常涉及两种情况:**终止会话(Session)** 和 **终止操作系统级别的进程(Process)**。这两种操作的目的不同,适用场景也有所区别。 #### 终止会话(Session) 当某个数据库会话出现异常或占用资源过多时,可以通过SQL语句终止该会话。这不会影响整个实例的运行,仅对特定用户连接生效。可以使用 `ALTER SYSTEM KILL SESSION` 命令来终止会话,其语法如下: ```sql ALTER SYSTEM KILL SESSION 'sid,serial#'; ``` 其中 `sid` 是会话标识符,`serial#` 是会话的序列号。这两个值可以从 `v$session` 视图中查询获得。例如: ```sql SELECT sid, serial#, username, status FROM v$session WHERE status = 'ACTIVE'; ``` 执行上述命令后,Oracle将标记该会话为“正在终止”,并在适当时机清理相关资源。需要注意的是,某些长时间运行的事务可能需要一定时间才能完全终止[^4]。 #### 终止操作系统级别的进程(Process) 如果数据库无法通过SQL命令正常终止会话,或者服务器进程本身出现问题,可以考虑直接在操作系统层面终止进程。在UNIX/Linux系统中,可以使用 `kill` 命令终止Oracle相关的进程。首先需要识别目标进程的操作系统ID(SPID),它可以从 `v$process` 和 `v$session` 视图中获取: ```sql SELECT p.spid, s.sid, s.serial#, s.username FROM v$process p JOIN v$session s ON p.addr = s.paddr; ``` 获取到 SPID 后,可以在命令行中使用以下命令终止进程: ```bash kill -9 <spid> ``` 此方法适用于紧急情况下强制终止进程的情况,但应谨慎使用,因为不当操作可能导致数据库处于不一致状态。一旦进程非正常终止,Oracle系统会自动检测并释放其占用的资源,确保系统的完整性和一致性[^2]。 #### 自动清理机制 当服务器进程非正常终止时,Oracle内部的后台进程(如SMON)会负责清理未完成的事务和释放资源。例如,SMON(System Monitor Process)会周期性地检查是否有死事务,并进行回滚处理,以保证数据库的一致性与稳定性[^3]。 ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值