00002解除死锁
尝试在sqlplus中通过sql命令进行删除,如果能够删除成功,则万事大吉!但通常情况下,出现死锁时,想通过命令行或者通过oracle的管理工具删除有死锁的session,oracle只会将该session标记为killed,但无法清除掉,往往需要通过第二步在操作系统层级进行删除!
Connected to Oracle9i Enterprise Edition Release 9.2.0.1.0
Connected as quik
SQL> select xidusn, object_id, session_id, locked_mode from v$locked_object; --查死锁的对象,获取其SESSION_ID
XIDUSN OBJECT_ID SESSION_ID LOCKED_MODE
---------- ---------- ---------- -----------
10 30724 29 3
10 30649 29 3
SQL> select username,sid,serial# from v$session where sid=29; --根据上步获取到的sid查看其serial#号
USERNAME SID SERIAL#
------------------------------ ---------- ----------
QUIK 29 57107
SQL> alter system kill session '29,57107'; --删除进程,如已经删除过,则会报ora-00031的错误;否则oracle会将该session标记为killed状态,等待一段时间看能否会自动消失,如长时间消失不掉,则需要做后续步骤
alter system kill session '29,57107'
ORA-00031: session marked for kill
SQL> select pro.spid from v$session ses,v$process pro where ses.sid=29 and ses.paddr=pro.addr; --查看spid号,以便在操作系统中根据该进程号删除进程
SPID
------------
2273286
第二步:进入操作系统进行删除进程,本示例的操作系统是IBM aix。
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.
C:\Documents and Settings\Administrator>telnet 10.73.52.7 --通过telnet远程登陆到数据库服务器
AIX Version 5
(C) Copyrights by IBM and by others 1982, 2005.
login: root --录入用户名
root's Password: --录入密码
*******************************************************************************
* *
* *
* Welcome to AIX Version 5.3! *
* *
* *
* Please see the README file in /usr/lpp/bos for information pertinent to *
* this release of the AIX Operating System. *
* *
* *
*******************************************************************************
Last unsuccessful login: Fri Apr 23 14:42:57 BEIDT 2010 on /dev/pts/1 from 10.73
.52.254
Last login: Fri Apr 23 15:27:50 BEIDT 2010 on /dev/pts/2 from 10.73.52.254
# ps -ef|grep 2273286 --查看进程详情
root 2289864 2494636 0 17:07:15 pts/1 0:00 grep 2273286
oracle 2273286 1 0 14:38:24 - 0:21 oracleQUIK (LOCAL=NO)
# kill -9 2273286 --删除进程,小心操作,别写错进程号,如果oracle的关键进程被删,数据库会崩溃的!
# ps -ef|grep 2273286 --再次查看
root 2289864 2494636 0 17:07:15 pts/1 0:00 grep 2273286
For Windows, at the DOS Prompt: orakill sid spid
For UNIX at the command line> kill –9 spid
-------------------------查询语句
select xidusn, object_id, session_id, locked_mode from v$locked_object;
select username,sid,serial# from v$session where sid=59;
alter system kill session '59,296';
分享到:
相关推荐
### Oracle如何解除死锁 在Oracle数据库环境中,死锁是一种常见的问题,特别是在高并发的应用场景下更为常见。死锁是指两个或多个事务在执行过程中,因争夺资源而造成的一种僵局现象,在这种状态下,每个事务都在...
sqlserver 解除死锁,网络上看到的很实用分享给大一起用
解除死锁有多种策略,包括预防、避免、检测和恢复。预防死锁的目标是在系统运行前就阻止死锁的发生,例如,通过一次性分配所有资源或禁止循环等待。避免死锁则是在资源分配时进行静态或动态的预测,以防止出现死锁...
本篇文章将详细介绍如何在DB2中检测和解决死锁,特别是针对标题中提到的"db2解除死锁"的情况。 首先,我们需要了解如何开启DB2的死锁监控。在DB2环境中,可以使用`db2 update monitor switches using lock on`命令...
7. **解除死锁策略**:实验采用的策略是最小代价解除死锁,即撤销占用资源最多的进程,尽可能减少对系统的影响。如果一次撤销无法解除死锁,将继续撤销下一个占用资源多的进程。 通过这个实验,学生可以深入理解...
本次实验的目的在于深入理解死锁产生的原因,并掌握检测及解除死锁的有效手段。通过实验,能够更深刻地认识到在系统中如何有效地处理死锁问题,从而提高系统的稳定性和可靠性。 #### 实验内容概述 实验主要分为两...
实验中的算法虽然不完全等同于银行家算法,但采用了类似的思想,通过动态调整资源分配,来检测和解除死锁。 总之,这个实验报告深入探讨了操作系统中的死锁问题,通过C语言实现的程序模拟了死锁检测和解除的过程,...
4. **解除死锁**:一旦发现死锁,就需要采取一定的措施解除它,常见的方法包括撤销或挂起某些进程等。 #### 四、代码解读 提供的部分代码示例,虽然不是完整的可运行代码,但可以看出其试图实现的是死锁检测与解除...
实验代码使用 C 语言编写,包括输入初始资源状况、检测死锁和解除死锁等模块。实验代码的主要部分如下: ```c #include #define M 4 // 进程数 #define N 3 // 资源种类数 int available[3]={0,0,0}; // 可用资源...
例如,使用Banker's Algorithm可以安全地解除死锁。 在实际操作中,操作系统通常会结合预防、避免和检测解除策略,以更全面地处理死锁问题。例如,Linux使用了资源分配的预防策略,并且内核包含了死锁检测和解除的...
死锁、操作系统、资源分配图及死锁定理、预防死锁、避免死锁、检测与解除死锁 死锁是计算机科学中的一种特殊情况,即当多个进程或线程在等待资源时,形成了一个循环等待的关系,使得每个进程或线程都在等待其他进程...
解除死锁的方法通常包括撤销进程、资源剥夺和等待进程的超时策略。在银行家算法中,如果发现有进程无法继续执行,那么可以尝试撤销部分进程并归还其资源,以便其他进程可以继续。在C++实现中,这可能涉及到回滚某些...
在SQL Server数据库管理系统中,死锁是常见的并发问题,它发生在两个或多个事务相互等待对方释放资源,导致它们都无法继续执行。"SQLServer自动杀死死锁进程"这一话题旨在探讨如何配置SQL Server来自动检测并解决...
同时,子站也需要配置相应的硬件,以便在主站发出解除死锁指令时能够及时响应。这样,即使个别子站出现程序异常,也能迅速恢复整个系统的通信功能,避免因死锁导致的大范围故障。 总的来说,RS-485总线的死锁检测与...
解除死锁是指撤销或挂起一些进程,以解除死锁。 解决死锁的方法还可以通过资源分配策略来实现。资源分配策略可以分为预防死锁、避免死锁、检测死锁和解除死锁四种。预防死锁的方法有两种:摒弃“请求和保持”条件和...
检测和解除死锁是操作系统中一个重要的任务。本文将详细介绍死锁的检测和解除的 C 语言代码。 死锁检测 死锁检测的主要思想是,建立一个数组结构,用于存储孤立的进程(没有占用资源的进程)。然后,根据死锁原理...
实验结果表明,我们的程序可以正确地检测和解除死锁,确保系统的安全运行。 五、死锁检测算法: 在本实验中,我们使用了银行家算法来检测死锁。银行家算法是一种常用的死锁检测算法,它可以检测系统中是否存在死锁...
死锁的检测与解除汇编.pdf 本文档介绍了操作系统中死锁的检测与解除算法。死锁是指在系统中,两个或两个以上的进程在竞争资源时,因彼此等待对方释放...该算法可以有效地检测和解除死锁,提高系统的安全性和稳定性。
处理死锁的基本方法有四种:预防死锁、避免死锁、检测死锁和解除死锁。预防死锁是通过设置某些限制条件,去破坏死锁四个必要条件中的一个或多个,来防止死锁。避免死锁是指不事先采取限制,而是在资源的动态分配过程...