`

ORACLE杀掉没有释放的的sql进程

阅读更多
如何完全杀掉带锁的进程并释放资源
Oracle数据库管理人员经常会遇到这样的问题:状态已被置为"killed"的进程长时间锁定系统资源不释放。通常的做法是重启数据库,但这样就以为着数据库服务的中断。这里介绍另外一种好用方便的方法: 在操作系统级强行杀掉那些进程。

1.下面的语句用来查询哪些对象被锁:

SQL> col object_name for a30
SQL> col machine for a20
SQL> select object_name,machine,s.sid,s.serial#
from v$locked_object l,dba_objects o ,v$session s
where l.object_id = o.object_id and l.session_id=s.sid;

2.下面的语句用来杀死一个进程:

SQL> alter system kill session '42,21993';   (其中24,111分别是上面查询出的sid,serial#)
可以用如下查询批量得到上面类似的语句:
SQL> select 'alter system kill session '''||s.sid||','||s.serial#||'''; '
from v$locked_object l,dba_objects o ,v$session s
where l.object_id = o.object_id and l.session_id=s.sid;

3.如果利用上面的命令杀死一个进程后,进程状态被置为 "killed", 但是锁定的资源很长时间没有被释放,那么可以在os一级再杀死相应的进程(线程),首先获得进程(线程)号:
SQL> select spid, osuser, s.program
from v$session s,v$process p
where s.paddr=p.addr and s.sid=#sid;   (#sid是上面的sid)

4.在操作系统中杀掉相应的进程(线程):

1)在Linux上,用root身份执行命令:
$ kill -9 12345   (12345是第3步查询出的spid)

2)在windows 用orakill杀死线程,orakill是oracle提供的一个可执行命令,语法为:orakill sid thread
sid:表示要杀死的进程属于的实例名
thread:是要杀掉的线程号,即第3步查询出的spid
例:
c:\> orakill orcl 12345
完全可以写一个组合查询的存储过程来自动执行上述四步操作,方便地杀光所有不自动释放资源的进程,但一般情况下不推荐这样做,毕竟在系统中用root用户kill进程本身就是带有一定风险的!
分享到:
评论

相关推荐

    如何解决Oracle杀死死锁进程

    解决 Oracle 杀死死锁进程 Oracle 杀死死锁进程是数据库管理员经常遇到的问题,本文将介绍解决 Oracle 杀死死锁进程的方法。 在 Oracle 中,死锁是指两个或多个会话在等待对方释放资源,从而导致互相阻塞的情况。...

    ORACLE如何杀掉带锁的进程.txt

    ### Oracle 如何杀掉带锁的进程 在Oracle数据库管理中,经常会出现因某些进程锁定资源而导致其他操作无法正常执行的情况。此时,就需要采取措施来杀掉这些带锁的进程,以确保系统的正常运行。本文将详细介绍如何在...

    如何快速的杀掉Oracle的Session

    本文将探讨如何高效地“杀掉”Oracle的Session,以及这种方法背后的原因和注意事项。 首先,让我们理解为什么需要快速结束Session。常见的原因有以下几点: 1. 当数据库中涉及大量数据的事务导致`shutdown ...

    Windows环境中Kill掉Oracle线程

    因此,需要找到一种方法仅仅 Kill 掉有问题的用户进程而不用关闭整个 Oracle 实例。 Oracle 提供了一个名叫 Orakill 的工具,可以在 Windows 环境下强制 Kill 掉一个线程。Orakill 的使用方法如下:在 Dos 提示符...

    处理oracle中杀不掉的锁.txt

    - `<thread>`是要杀掉的线程号,即第三步查询出的`spid`。 - 示例命令: ```bash c:> orakill orcl 12345 ``` 通过以上步骤,我们可以有效地处理Oracle数据库中难以解除的锁定情况。这些方法不仅适用于日常...

    快速杀死oracle的session

    ### 快速杀死Oracle的Session方法详解 在Oracle数据库管理中,有时会遇到需要迅速终止某个或某些Session的情况。这通常发生在系统响应缓慢、需要紧急关闭特定进程时,或者是在执行`shutdown immediate`命令但发现...

    清除Oracle中长时间持锁的session

    在Oracle数据库管理过程中,有时会遇到一些长时间占用资源的进程,这些进程可能会导致数据库性能下降甚至某些操作无法执行。通常情况下,如果一个session的状态已经被设置为"killed",但其仍然长时间持有系统资源而...

    Oracle实例死掉的情况下如何恢复

    ### Oracle实例死掉的情况下如何恢复 #### 概述 在Oracle数据库管理中,有时会遇到Oracle实例意外停止或“死亡”的情况。这种情况可能导致数据不可访问,严重时甚至会影响到业务连续性。本文将详细介绍如何在...

    oracle基础教程

    4.2 如何杀掉吊死session 51 4.3 如何修改字符集 51 4.4 如何追加表空间 51 4.5 如何加大表的maxextents值 52 4.6 如何查询无效对象 52 4.7 怎样分析SQL语句是否用到索引 52 4.8 怎样判断是否存在回滚段竞争 53 4.9 ...

    oracle查看被锁的表和被锁的进程以及杀掉这个进程

    本篇将详细介绍如何在Oracle环境中查看被锁的表、被锁的进程,以及如何安全地杀掉这些进程。 1. **查看被锁的表** 使用以下SQL查询可以列出当前被锁的表及其相关信息: ```sql SELECT p.spid, a.serial#, c....

    oracle死锁表后处理

    我们可以使用以下SQL语句杀掉长期没有释放的非正常的锁: ``` alter system kill session 'sid,serial#'; ``` 如果出现了锁的问题,某个DML操作可能等待很久没有反应。当你采用的是直接连接数据库的方式,也不要用OS...

    oracle常用sql

    - 如果通过上述方法仍然无法解锁,可以在操作系统层面杀掉Oracle的进程: ```bash kill -9 spid ``` 其中`spid`是Oracle进程的ID。 #### 三、用户和权限管理 ##### 3.1 查看所有用户 Oracle提供了多个视图来查询...

    讲解Oracle数据库中结束死锁进程的一般方法

    Oracle数据库中的死锁是数据库管理中常见的问题,它发生在两个或多个事务之间,每个事务都在等待对方释放资源,导致相互等待而无法继续执行。本篇将深入讲解如何在Oracle数据库中识别和解决死锁,以及提供避免死锁的...

    如何安全快速的批量删除Oracle数据库外部会话session

    根据Oracle官方文档,这个命令并不真正“杀死”会话,而是将其标记为终止状态,随后由后台进程PMON来清理。使用`IMMEDIATE`选项可以强制回滚当前事务、释放会话锁,并立即返回控制权。例如,你可以运行以下命令来...

    查询oracle锁

    在Windows环境下,可以使用如下SQL语句生成杀掉特定会话(例如 SID=104)的命令: ```sql SELECT 'orakill ' || (SELECT instance_name FROM v$instance) || ' ' || p.spid || ';' killsql FROM v$process p, v$...

    Oracle数据库日常运维及应急故障处理手册

    对于快速shutdown数据库,需要按照特定顺序进行,包括停止监听服务、执行检查点操作、杀掉操作系统进程中与数据库实例相关的进程。 以上内容不仅涵盖了日常运维中对系统监控、性能优化、安全保护等方面的基本操作,...

    oracle 会话 死锁 执行sql 执行job的方法

    - 杀掉会话有两种方式:通过`V$PROCESS.PID`结合操作系统命令杀掉进程,或使用`ALTER SYSTEM DISCONNECT SESSION`命令优雅地终止会话。 7. **查看SQL执行进度**: - 使用`V$SESSION_LONGOPS`视图可以监控长时间...

    重启oracle服务,删除session

    杀掉所有会话(session) 接下来需要终止所有活跃的会话,以防止在重启服务时出现异常情况。 ``` ps -ef | grep $ORACLE_SID | grep -v ora_ | grep LOCAL=NO | awk '{print $2}' | xargs kill ``` 此命令会列出所有...

    oracle RAC查看blocking的脚本

    该脚本可能用于找出导致阻塞的会话并执行相应的操作,例如杀掉(kill)阻塞其他会话的SQL语句。 3. **oblkill_local**: 类似于`oblkill`,这个脚本可能是针对本地节点的阻塞检查工具。在RAC环境下,每个节点可能有...

Global site tag (gtag.js) - Google Analytics