`

Oracle下面的死锁处理

阅读更多
今天在操作数据库的时候某个表的数据的时候,更新数据就会卡在那边。不论是用sqldeveloper或则是sqlplus,但是操作其它表的操作确很快。

那个表格产生锁的原因找到了,在2011年10月19号晚上网络上看到一篇文章讲外键没有设置索引所引发表的死锁问题。

看一下那个死锁的表,确实那个表格上面有5个外键,有可能是这个引发的原因。但是如果特意去操作那些有外键的表,但是又不会产生死锁,可能取决于资源的操作量。

解决表死锁的方法

方法一:最简单的方法是数据库重启,在linux终端,oracle用户登录。

export ORACLE_SID=所要重启的数据库的SID

sqlplus / as sysdba

shutdown immediate

startup;

表的死锁就解决了。但是很多时候数据库是不能够重启的。



方法二:查询死锁对象的linux进程编号,删除相关的进程

SQL> col OS_USER_NAME format a10;
SQL> col process format a10;
SQL> select * from v$locked_object;

    XIDUSN    XIDSLOT     XIDSQN   OBJECT_ID    SESSION_ID      ORACLE_USE      OS_USER_NA     PROCESS    LOCKED_MODE
----------
         0          0                    0              88523          130                           SYS                  oracle                   7643                 3


SQL> quit
#kill 7643

现在虽然不用重启,但是还是会经常死锁。

方法三:给字表的外键加索引

想要彻底解决上面表外键引发的死锁的解决方法是,给子标的外键加索引,就可以。

总结:在碰到锁问题的时候除了查数据库锁对象之外最好也要会先分析一下,自己的表的设计结构。如果会去查看trace.log是最好的。马上知道问题。

0
0
分享到:
评论

相关推荐

    Oracle 死锁处理

    在Oracle中,死锁的处理和预防是数据库管理的重要方面,尤其在高并发环境中。下面将详细讨论Oracle死锁的原因、具体分析、示例以及解决办法。 1. **死锁原因分析** - 行级锁:Oracle数据库使用行级锁来支持并发...

    教您如何检查oracle死锁

    例如,在执行更新或者保存操作时,系统界面卡住,既不显示任何提示也不继续处理,这往往意味着数据库中出现了死锁。 #### 二、Oracle死锁的原理 为了更好地理解Oracle死锁,我们需要先了解其基本原理。在Oracle...

    查出、删除死锁对象

    在Oracle数据库中处理死锁问题是确保系统稳定性和性能的关键。通过使用上述提供的SQL查询语句,可以有效地检测和解决死锁问题。值得注意的是,在实际操作之前,应确保充分理解死锁的根本原因,并尽可能避免未来再次...

    Oracle删除死锁进程的方法

    下面将详细介绍如何在Oracle中找到并删除这些死锁进程。 首先,我们需要找出哪些进程正处于死锁状态。这可以通过查询`v$locked_object`视图来实现。`v$locked_object`包含了所有当前被锁定的对象信息,包括对象名、...

    ORACLE 异常错误处理

    ### ORACLE 异常错误处理详解 #### 一、异常处理概述 在ORACLE数据库的开发过程中,无论是多么复杂的业务逻辑还是简单的数据操作,都不可避免地会遇到各种异常情况。有效的异常处理机制不仅可以帮助开发者更好地...

    Oracle Exception汇总(自定义Oracle异常)

    下面,我们将深入探讨一些常见的Oracle异常及其解决策略。 1. **NO_DATA_FOUND** (ORA-01403): 当执行`SELECT INTO`语句时,如果没有返回任何数据,系统会抛出此异常。为了避免程序中断,可以使用`EXCEPTION WHEN ...

    ORACLE 异常处理总结.doc

    预定义异常是Oracle系统自动引发的,例如违反唯一性约束(ORA-0001)、超时错误(ORA-0051)或事务死锁(ORA-061)。这些异常通常与数据库操作相关,开发者无需显式定义,只需要在异常处理部分捕获并处理它们。 非...

    SQL死锁,删除失败解决办法

    #### 三、SQL死锁处理方法 1. **避免嵌套事务**:尽量减少事务之间的嵌套调用,避免一个事务长时间占用资源导致其他事务等待。 2. **优化锁模式**:根据业务需求选择合适的锁模式,比如读取时不加锁、读取共享锁等...

    oracle课件

    4. 事务处理与并发控制:理解事务的概念,学习如何控制事务的提交和回滚,以及Oracle的锁定机制和死锁处理。 5. 性能优化:通过实验了解SQL查询优化,使用 Explain Plan 分析查询执行计划,调整索引和表分区,以及...

    SQL Server和Oracel中的锁和死锁

    下面将详细讨论这两个数据库系统中的锁机制以及如何处理死锁。 首先,锁是用来保证数据的一致性和完整性的重要工具。在SQL Server中,有多种类型的锁,包括共享锁(Shared Locks)、排他锁(Exclusive Locks)、...

    oracle精华集锦

    8. **并发控制**:Oracle的锁定机制和死锁处理,包括行级锁、表级锁和多版本并发控制(MVCC),在多用户环境下确保数据的一致性。 9. **数据库设计**:遵循正常化原则进行数据库设计,理解第一、第二、第三范式以及...

    Oracle问题解决大全

    下面,我们将深入探讨Oracle数据库可能遇到的问题以及如何解决它们。 1. **性能优化**:Oracle数据库性能问题是常见的挑战,包括慢查询、CPU占用过高和I/O瓶颈等。可以通过调整SQL语句、创建索引、优化表结构、合理...

    oracle编程艺术代码

    5. 实例:由Oracle进程和SGA(System Global Area)组成,负责处理数据库的内存管理和I/O操作。 二、Oracle编程艺术 Oracle编程艺术涵盖了SQL、PL/SQL、数据库设计与优化等多个方面。通过源码,我们可以学习到: 1...

    oracle例题oracle例题

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统,它在企业级数据存储、管理和处理方面具有极高的性能和稳定性。Oracle例题通常涵盖SQL查询、数据库设计、存储过程、触发器、索引、并发控制、备份恢复等多个...

    日积月累-oracle笔记

    在Oracle数据库中,数据的高效加载对于大规模数据处理至关重要。有几种方法可以实现数据的快速加载: 1. **直接路径插入**:使用`INSERT /*+APPEND*/`语句,可以将数据直接写入数据文件,绕过Oracle的标准缓冲区,...

    Oracle BPEL

    为了更好地理解Oracle BPEL Process Manager的应用场景,下面通过一个具体的案例来展示其在实际项目中的作用: ##### 案例:订单处理系统 假设有一个电子商务平台需要处理大量的在线订单。通过使用Oracle BPEL ...

    查看数据库死锁SQL

    下面将详细介绍如何利用特定的SQL脚本来查看MySQL数据库中的死锁情况。 #### 脚本功能概述 根据提供的SQL脚本内容,我们可以看出该脚本主要用于查询MySQL数据库中出现死锁的情况,并获取相关信息,包括但不限于...

    Oracle学习word文档和PPT

    1. 锁机制:理解Oracle中的行级锁、表级锁和多版本并发控制(MVCC),以及死锁的概念和处理。 2. 事务管理:掌握ACID特性,理解提交、回滚和保存点的概念。 通过Word文档,你可以详细阅读Oracle的理论知识,而PPT...

    oracle初学者必知的100个问题

    下面,我们将详细介绍Oracle初学者可能会面临的一些常见问题及其解决方法。 1. 什么是Oracle数据库? Oracle数据库是一款关系型数据库管理系统,由美国Oracle公司开发。它支持多种操作系统平台,拥有强大的数据处理...

    oracle日志分析工具LogMiner使用.

    下面是对 LogMiner 的详细介绍和使用方法。 一、LogMiner 的架构 LogMiner 的架构主要包括三个部分:日志挖掘器(LogMiner)、日志分析器(Log Analyzer)和日志报告器(Log Reporter)。日志挖掘器负责从日志文件...

Global site tag (gtag.js) - Google Analytics