一些ORACLE中的进程被杀掉后,状态被置为"killed",但是锁定的资源很长时间不释放,有时实在没办法,只好重启数据库。但是shutdown immediate又怕可能进程杀不掉会一直停留在shutdown immediate,直接shutdown abort又怕损坏数据库。
现在提供一种方法解决这种问题,那就是在ORACLE中杀不掉的,在OS一级再杀。
一些ORACLE中的进程被杀掉后,状态被置为"killed",但是锁定的资源很长时间不释放,有时实在没办法,只好重启数据库。但是shutdown immediate又怕可能进程杀不掉会一直停留在shutdown immediate,直接shutdown abort又怕损坏数据库。
现在提供一种方法解决这种问题,那就是在ORACLE中杀不掉的,在OS一级再杀。
1.下面的语句用来查询哪些对象被锁:
SELECT S.USERNAME,S.OSUSER,S.SID,S.SERIAL#,P.SPID FROM V$SESSION S,V$PROCESS
P WHERE S.PADDR=P.ADDR AND S.USERNAME IS NOT NULL;
2.下面的语句用来杀死一个进程:
alter system kill session 'sid,serial#';
【注】以上两步,可以通过Oracle的管理控制台来执行。
如果出现题目的错误,可以
select a.spid,b.sid,b.serial#,b.username from v$process a,v$session b where a.addr=b.paddr and b.status='KILLED' ;
3.如果利用上面的命令杀死一个进程后,进程状态被置为"killed",但是锁定的资源很长时间没有被释放,那么可以在os一级再杀死相应的进程(线程),首先执行下面的语句获得进程(线程)号:
select spid, osuser, s.program from v$session s,v$process p where
s.paddr=p.addr and s.sid=33 (33就是上面的sid )
4.在OS上杀死这个进程(线程):
1)在unix上,用root身份执行命令:
#kill -9 12345(即第3步查询出的spid)
2)在windows(unix也适用)用orakill杀死线程,orakill是oracle提供的一个可执行命令,语法为:
orakill sid thread
其中:
sid:表示要杀死的进程属于的实例名
thread:是要杀掉的线程号,即第3步查询出的spid。
例:c:>orakill orcl 12345
Ps:这里要注意的是kill OS进程是在服务端操作,而不是你程序所在客户机。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/hproc/archive/2009/11/11/4799072.aspx
分享到:
相关推荐
在Oracle数据库管理与维护过程中,经常会遇到一些棘手的问题,比如某些锁定无法通过常规手段解除。本文将详细介绍如何处理Oracle中那些难以解决的锁定问题,并提供一系列实用的SQL语句及操作步骤。 #### 一、识别...
"杀进程"操作在Oracle中通常涉及`ALTER SYSTEM KILL SESSION`命令。这个命令允许管理员强制终止特定的会话。使用这个命令时,我们需要提供会话的SID和SERIAL#,这正是PB9程序可能提供的信息。在PB9中,可以通过编写...
在Oracle数据库管理过程中,经常会遇到僵死进程的问题,这些问题可能会导致数据库性能下降甚至无法正常运行。本文将详细介绍如何通过SQL查询定位僵死进程,并提供具体的解决方案,帮助解决如无法停库等异常问题。 #...
### Oracle 如何杀掉带锁的进程 在Oracle数据库管理中,经常会出现因某些进程锁定资源而导致其他操作无法正常执行的情况。此时,就需要采取措施来杀掉这些带锁的进程,以确保系统的正常运行。本文将详细介绍如何在...
### Oracle死锁时的进程处理方法 在Oracle数据库管理中,死锁是一个常见的问题,它通常发生在两个或多个事务互相等待对方释放资源的情况。当这种情况发生时,可能会导致应用程序响应变慢甚至完全停止运行。因此,...
本文将探讨如何高效地“杀掉”Oracle的Session,以及这种方法背后的原因和注意事项。 首先,让我们理解为什么需要快速结束Session。常见的原因有以下几点: 1. 当数据库中涉及大量数据的事务导致`shutdown ...
在尝试杀死Session的过程中可能会遇到一些问题,例如`alter system kill session 'sid,serial#'`命令执行失败等。这时可以采取以下步骤: 1. **检查Session状态:** 确认Session的状态是否允许被杀死,以及是否有...
当你采用的是直接连接数据库的方式,也不要用OS系统命令$kill process_num或者$kill -9 process_num来终止用户连接,因为一个用户进程可能产生一个以上的锁,杀OS进程并不能彻底清除锁的问题。 oracle死锁表后处理...
在Oracle数据库管理中,有时会遇到因为某些进程长时间运行导致系统响应变慢的情况。在这种情况下,管理员可能需要采取措施来终止这些进程,即“Kill”进程。本文将详细介绍如何在Oracle环境中有效识别并终止这些进程...
在 ORACLE 数据库中,当我们尝试 kill 一个进程时,可能会出现状态被置为 "KILLED" 但是锁定的资源长时间不释放的情况,这会导致错误提示 ORA-00030: User session ID does not exist 或 ORA-00031: session marked ...
数据库死锁的概念, 所谓死锁,是指两个会话,每个会话都持有另外一个会话想要的资源,因争夺资源而造成...对于锁死的会话,我们可以直接删掉该会话,等事物回滚完成,也可以找出锁死进程的spid,从服务器中删掉该进程。
对于快速shutdown数据库,需要按照特定顺序进行,包括停止监听服务、执行检查点操作、杀掉操作系统进程中与数据库实例相关的进程。 以上内容不仅涵盖了日常运维中对系统监控、性能优化、安全保护等方面的基本操作,...
在Oracle数据库管理过程中,有时会遇到一些长时间占用资源的进程,这些进程可能会导致数据库性能下降甚至某些操作无法执行。通常情况下,如果一个session的状态已经被设置为"killed",但其仍然长时间持有系统资源而...
总结来说,本文介绍的技术知识点主要包括如何利用视图、公共同义词和存储过程来实现普通用户在Oracle数据库中杀掉自己会话的需求。通过将复杂的权限操作封装在一个安全的程序中,既提高了数据库的管理效率,也保证了...
在某些情况下,我们可以尝试先在系统级杀掉非后台Oracle进程,然后再执行shutdown immediate命令。这样可以提高shutdown命令的安全性。在 Oracle8i 里,当数据库失去响应以后,我们可以在操作系统上杀掉用户进程,...
在Oracle数据库管理过程中,锁定是确保数据一致性的重要机制之一。但有时,长时间运行的事务或错误配置的应用程序可能会导致锁定情况无法自动解除,这会严重影响系统的性能甚至导致关键业务流程中断。因此,了解如何...
在Oracle数据库管理中,处理死锁进程和释放状态为killed的session是一项关键技能,尤其对于维护数据库性能和稳定性至关重要。以下将详细阐述如何通过一系列步骤有效地关闭Oracle死锁进程,以及如何释放状态为killed...
### Oracle中关于死锁的处理 #### 死锁概述 在Oracle数据库中,死锁是一种常见但必须妥善处理的问题。当两个或多个事务互相等待对方释放资源时就会发生死锁。这种情况下,没有一个事务能够继续执行,直到系统采取...
解决锁冲突通常包括强制回滚事务、杀死会话进程或者调整应用程序逻辑以减少并发冲突。强制回滚可以通过`ALTER SYSTEM KILL SESSION`命令实现,但这种方法应谨慎使用,因为它可能会影响业务的正常运行。更好的方式是...
### Oracle实例死掉的情况下如何恢复 #### 概述 在Oracle数据库管理中,有时会遇到Oracle实例意外停止或“死亡”的情况。这种情况可能导致数据不可访问,严重时甚至会影响到业务连续性。本文将详细介绍如何在...