`
哇哈哈852
  • 浏览: 93824 次
文章分类
社区版块
存档分类
最新评论

Oracle死锁时的处理方法

阅读更多

第一步:尝试在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
  • 大小: 32.8 KB
分享到:
评论

相关推荐

    ORACLE表死锁的解决方法亲测有效!

    本文将深入探讨ORACLE表死锁的成因、检测与解决方法,基于实际测试经验分享有效的解决方案。 ### ORACLE表死锁的成因 死锁通常发生在多个事务同时对同一资源进行互斥访问的情况下。具体而言,当一个事务请求锁定一...

    oracle死锁原因解决办法

    #### 四、解决Oracle死锁的方法 ##### 4.1 优化SQL语句 确保所有事务中的SQL语句按照相同的顺序执行可以减少死锁的机会。此外,还可以通过合并多个SQL语句或者调整SQL语句的执行顺序来避免死锁。 ##### 4.2 调整...

    Oracle对于死锁的处理方法

    Oracle数据库出现死锁的时候可以按照以下处理步骤加以解决: 第一步:尝试在sqlplus中通过sql命令进行删除,如果能够删除成功,则万事大吉!但通常情况下,出现死锁时,想通过命令行或者通过Oracle的管理工具删除有...

    oracle死锁表后处理

    "oracle死锁表后处理" oracle死锁表后处理是指在oracle数据库中处理死锁表...oracle死锁表后处理是指在oracle数据库中处理死锁表的各种方法和技巧,旨在解决oracle数据库中出现的死锁问题,确保数据的一致性和安全性。

    oracle死锁故障分析和诊断解决

    本文将深入探讨Oracle死锁的原因、诊断方法及解决方案。 #### 一、死锁的基本概念 死锁是数据库中两个或更多事务在等待对方释放锁定资源的情况下发生的僵局状态。每个事务都持有某些资源的锁定,并等待其他事务...

    BLOG_Oracle_lhr_Oracle死锁的分类及其模拟.pdf

    【Oracle死锁的分类及其模拟】这篇博客主要探讨了Oracle数据库中的死锁问题,包括死锁的基本概念、分类以及如何进行模拟。以下是该主题的详细解释: **死锁概述** 死锁是数据库系统中常见的问题,它发生在两个或多...

    oracle死锁及连接数监测

    Oracle 死锁及连接数监测 Oracle 死锁监测是指检测 Oracle 数据库中的死锁情况,以避免数据库性能下降和数据不一致的问题。死锁监测可以通过查询系统视图 `V$LOCKED_OBJECT` 来实现,该视图提供了关于当前数据库...

    oracle数据库解决死锁

    * 需要小心地执行解决方法,以免导致更大的问题。 解决Oracle数据库死锁问题需要具备一定的数据库管理知识和PL/SQL编程技能。同时,也需要了解Oracle数据库的工作原理和死锁机理,以便更好地解决死锁问题。

    解决ORACLE死锁问题

    一、数据库死锁的现象 ... 二、死锁的原理 当对于数据库某个表的某一列做更新或删除等操作,执行完毕后该条语句不提 ...三、死锁的定位方法 通过检查数据库表,能够检查出是哪一条语句被死锁,产生死锁的机器是哪一台。

    解决Oracle死锁问题.txt

    编译的存储过程的时候,程序死住,等待一会出现ora-04021错误解决办法。文档中有查询思索的语句,以及杀掉死锁进程的方法。

    解决oracle死锁

    在Oracle数据库系统中,死锁是指两个或多个...综上所述,处理Oracle死锁需要深入了解数据库的内部机制,并结合适当的监控和预防措施。通过有效的诊断和管理,我们可以减少死锁的发生,从而提高数据库的性能和可用性。

    Oracle 死锁问题的排查语句

    Oracle 死锁问题的排查语句 Oracle 死锁是指在数据库中出现的循环等待资源的情形,从而导致数据库性能下降或系统...Oracle 死锁问题的排查语句可以帮助 DBA rapidly 查找和解决死锁问题,提高数据库的性能和稳定性。

    有效关闭Oracle死锁进程,和释放状态为killed的session

    处理Oracle死锁和killed session的过程虽然复杂,但遵循上述步骤可以有效地解决大多数问题。然而,更重要的是采取预防措施,避免死锁的发生。这包括优化SQL查询,减少复杂的事务,使用合适的锁定级别,以及定期监控...

    Oracle查询死锁表

    ### 三、解决Oracle死锁的策略 #### 3.1 识别死锁 一旦发现死锁,首先要做的是确定哪些会话参与了死锁。可以通过查询`v$session_wait`和`v$locked_object`等视图来获取相关信息。 #### 3.2 解除死锁 - **手动终止...

    Oracle表死锁与解锁

    本文将深入探讨Oracle表死锁的原因、检测以及解决方法。 首先,我们需要了解死锁的基本概念。死锁是当两个或更多个事务在执行过程中,因争夺资源而造成的一种相互等待的现象,若无外力干涉它们都无法继续执行。在...

    oracle中关于死锁的处理

    ### Oracle中关于死锁的处理 #### 死锁概述 在Oracle数据库中,死锁是一种常见但必须妥善处理的问题。当两个或多个事务互相等待对方释放资源时就会发生死锁。这种情况下,没有一个事务能够继续执行,直到系统采取...

    教您如何检查oracle死锁

    常见的解决方法包括: 1. **手动干预**:根据死锁报告中的信息,手动回滚其中一个事务,以解除死锁。 2. **调整事务隔离级别**:通过修改应用程序中的事务隔离级别设置,减少死锁的发生概率。 3. **优化SQL语句**:...

    oracle解锁,死锁

    #### 四、Oracle死锁检测与处理 1. **检测死锁**:Oracle数据库能够自动检测死锁,并在检测到死锁后采取措施。默认情况下,Oracle会随机选择一个事务作为受害者并回滚它,从而解决死锁问题。此外,还可以使用`V$...

    杀死oracle死锁进程

    解决Oracle数据库死锁问题,查询出数据库所有死锁,并杀死所有的死锁,解决程序运行问题;

Global site tag (gtag.js) - Google Analytics