今天在操作数据库的时候某个表的数据的时候,更新数据就会卡在那边。不论是用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是最好的。马上知道问题。
分享到:
相关推荐
在Oracle中,死锁的处理和预防是数据库管理的重要方面,尤其在高并发环境中。下面将详细讨论Oracle死锁的原因、具体分析、示例以及解决办法。 1. **死锁原因分析** - 行级锁:Oracle数据库使用行级锁来支持并发...
例如,在执行更新或者保存操作时,系统界面卡住,既不显示任何提示也不继续处理,这往往意味着数据库中出现了死锁。 #### 二、Oracle死锁的原理 为了更好地理解Oracle死锁,我们需要先了解其基本原理。在Oracle...
在Oracle数据库中处理死锁问题是确保系统稳定性和性能的关键。通过使用上述提供的SQL查询语句,可以有效地检测和解决死锁问题。值得注意的是,在实际操作之前,应确保充分理解死锁的根本原因,并尽可能避免未来再次...
下面将详细介绍如何在Oracle中找到并删除这些死锁进程。 首先,我们需要找出哪些进程正处于死锁状态。这可以通过查询`v$locked_object`视图来实现。`v$locked_object`包含了所有当前被锁定的对象信息,包括对象名、...
### ORACLE 异常错误处理详解 #### 一、异常处理概述 在ORACLE数据库的开发过程中,无论是多么复杂的业务逻辑还是简单的数据操作,都不可避免地会遇到各种异常情况。有效的异常处理机制不仅可以帮助开发者更好地...
下面,我们将深入探讨一些常见的Oracle异常及其解决策略。 1. **NO_DATA_FOUND** (ORA-01403): 当执行`SELECT INTO`语句时,如果没有返回任何数据,系统会抛出此异常。为了避免程序中断,可以使用`EXCEPTION WHEN ...
预定义异常是Oracle系统自动引发的,例如违反唯一性约束(ORA-0001)、超时错误(ORA-0051)或事务死锁(ORA-061)。这些异常通常与数据库操作相关,开发者无需显式定义,只需要在异常处理部分捕获并处理它们。 非...
#### 三、SQL死锁处理方法 1. **避免嵌套事务**:尽量减少事务之间的嵌套调用,避免一个事务长时间占用资源导致其他事务等待。 2. **优化锁模式**:根据业务需求选择合适的锁模式,比如读取时不加锁、读取共享锁等...
4. 事务处理与并发控制:理解事务的概念,学习如何控制事务的提交和回滚,以及Oracle的锁定机制和死锁处理。 5. 性能优化:通过实验了解SQL查询优化,使用 Explain Plan 分析查询执行计划,调整索引和表分区,以及...
下面将详细讨论这两个数据库系统中的锁机制以及如何处理死锁。 首先,锁是用来保证数据的一致性和完整性的重要工具。在SQL Server中,有多种类型的锁,包括共享锁(Shared Locks)、排他锁(Exclusive Locks)、...
8. **并发控制**:Oracle的锁定机制和死锁处理,包括行级锁、表级锁和多版本并发控制(MVCC),在多用户环境下确保数据的一致性。 9. **数据库设计**:遵循正常化原则进行数据库设计,理解第一、第二、第三范式以及...
下面,我们将深入探讨Oracle数据库可能遇到的问题以及如何解决它们。 1. **性能优化**:Oracle数据库性能问题是常见的挑战,包括慢查询、CPU占用过高和I/O瓶颈等。可以通过调整SQL语句、创建索引、优化表结构、合理...
5. 实例:由Oracle进程和SGA(System Global Area)组成,负责处理数据库的内存管理和I/O操作。 二、Oracle编程艺术 Oracle编程艺术涵盖了SQL、PL/SQL、数据库设计与优化等多个方面。通过源码,我们可以学习到: 1...
在Oracle数据库中,数据的高效加载对于大规模数据处理至关重要。有几种方法可以实现数据的快速加载: 1. **直接路径插入**:使用`INSERT /*+APPEND*/`语句,可以将数据直接写入数据文件,绕过Oracle的标准缓冲区,...
为了更好地理解Oracle BPEL Process Manager的应用场景,下面通过一个具体的案例来展示其在实际项目中的作用: ##### 案例:订单处理系统 假设有一个电子商务平台需要处理大量的在线订单。通过使用Oracle BPEL ...
下面是对 LogMiner 的详细介绍和使用方法。 一、LogMiner 的架构 LogMiner 的架构主要包括三个部分:日志挖掘器(LogMiner)、日志分析器(Log Analyzer)和日志报告器(Log Reporter)。日志挖掘器负责从日志文件...
下面将详细介绍如何利用特定的SQL脚本来查看MySQL数据库中的死锁情况。 #### 脚本功能概述 根据提供的SQL脚本内容,我们可以看出该脚本主要用于查询MySQL数据库中出现死锁的情况,并获取相关信息,包括但不限于...
1. 锁机制:理解Oracle中的行级锁、表级锁和多版本并发控制(MVCC),以及死锁的概念和处理。 2. 事务管理:掌握ACID特性,理解提交、回滚和保存点的概念。 通过Word文档,你可以详细阅读Oracle的理论知识,而PPT...
下面,我们将详细介绍Oracle初学者可能会面临的一些常见问题及其解决方法。 1. 什么是Oracle数据库? Oracle数据库是一款关系型数据库管理系统,由美国Oracle公司开发。它支持多种操作系统平台,拥有强大的数据处理...
下面我们将深入探讨Oracle分区表和锁的应用。 一、Oracle分区表 1. **分区概念**:Oracle分区表是将一个大表逻辑上划分为多个较小的部分,每个部分称为一个分区。每个分区都有自己的索引和维护操作,这使得对大...