`
JamesQian
  • 浏览: 55426 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

oracle lock

 
阅读更多

1.oracle的session可以有多个connection跟数据库进行连接,每个connection都可以开启transaction.oracle会提前检测到dead lock。如果一旦发生这样的错,oracle驱动会有错误给调用者。死锁的例子session1在执行DML语句时开启事务。过程是update记录A,然后记录B。事务没有提交。然后session2在请求的时候也开启了事务,过程是先update记录B,然后记录A。在某个恰当的时机,两个session的事务都没办法完成提交。会都在等待别transation释放资源。A上面存在行级锁,在B没有更新完毕且提交后,A上面的行级锁不会释放。同时B上面的行级锁已经被session2所拥有。所以session1无法拿到B的行级锁,因为无法完成update。对session2而言也是一样的道理。

2.解决的办法是update A B记录的时候,对于不同的session我们需要对记录数据的顺序有提前的约定。比如符合某种基于关键词的排序。这样去update时就不会出现死锁的现象。假设session1先开始updateA,此时session2只能等待,因为他的顺序也是也update记录A。等session1全部update完毕释放掉锁之后session2才能更新。这样就不会发生死锁的问题。

3.对于表建外键约束时,如果没有对子表相关的外键进行索引。这样的话每次update子表就会去全表扫描父表。且同时是锁定整个父表的(表级别的锁)。这种做法非常耗性能。通常的做法:1.不要在数据库端建立这种显式的主外键关系,依靠app端cover这种关系。2.如果建立必须要对外键建索引。

分享到:
评论

相关推荐

    oracle lock and isolation at

    在Oracle中,锁(Lock)和隔离级别(Isolation Level)是确保多用户环境下数据一致性和完整性的关键组成部分。本篇文章将深入探讨这两个概念及其在实际应用中的重要性。 一、Oracle锁机制 1. **锁定类型**: - **...

    lock_table.rar_Table_lock table_oracle lock table

    在Oracle数据库系统中,"lock table" 是一个重要的管理功能,用于控制多个用户对特定表的并发访问。当一个用户对表执行修改操作(如INSERT、UPDATE或DELETE)时,Oracle会自动对表施加锁,以防止其他用户在同一时间...

    oracle-lock

    - Oracle提供了一个PL/SQL包DBMS_LOCK,用于在PL/SQL环境中显式地创建和管理锁。例如,你可以使用`DBMS_LOCK.ALLOCATE_UNIQUE`分配一个锁,然后使用`DBMS_LOCK.REQUEST`请求锁,最后用`DBMS_LOCK.RELEASE`释放锁。 ...

    oracle 锁

    Oracle提供了死锁检测和恢复机制,可以通过`DBMS_LOCK`包或设置参数`deadlock_timeout`来管理。 6. **锁定工具和视图**: - `V$SESSION` 和 `V$LOCK` 视图:用于查看当前会话的锁定信息和系统级别的锁定情况。 - ...

    [Oracle] 浅谈Lock与Latch

    在Oracle数据库系统中,Lock和Latch是两种重要的并发控制机制,它们确保了多用户环境下的数据一致性与安全性。本文将深入探讨Lock与Latch的异同,帮助读者更好地理解和解决可能出现的并发问题。 首先,让我们来看看...

    彻底搞清楚library cache lock的成因和解决方法

    ### 彻底理解 Oracle 中 Library Cache Lock 的成因与解决办法 #### 一、引言 在日常数据库管理工作中,经常会遇到一些让人头疼的问题,比如会话挂起(hang)。其中一个常见的情况是当用户尝试执行某些操作时,比如...

    oracle Session与lock 解除

    ### Oracle Session与Lock解除 在Oracle数据库环境中,锁机制是一种重要的资源管理手段,它能够确保数据的一致性和并发性处理。锁(Lock)是数据库管理系统为了控制多个用户对同一数据资源的同时访问而采取的一种...

    Oracle中的Latch和Lock.pdf

    Oracle数据库是一种广泛使用的大型关系型数据库管理系统,它在处理并发事务时采用了一种称为“Latch”和“Lock”的并发控制机制。Latch(闩锁)和Lock(锁定)都是Oracle用来确保数据一致性、防止数据冲突的关键组件...

    oracle--lock.zip_oracle

    在`oracle_lock.txt`文件中,可能包含具体的表锁问题实例和解决方案,例如如何处理死锁,如何通过SQL查询定位锁冲突,以及如何避免不必要的锁等待。 综上所述,理解并熟练掌握Oracle的表锁机制对于优化数据库性能、...

    在分布式事务中实现基于Oracle PLSQL UL LOCK的悲观离线锁

    本文将深入探讨如何在分布式事务中实现基于Oracle PL/SQL的Ultra Lock(悲观离线锁)机制。 Ultra Lock是一种加强型的锁定策略,用于在高并发环境下提供更精确的并发控制。 Oracle PL/SQL是一种强大的编程语言,它...

    library cache lock等待事件处理

    在Oracle数据库管理与性能优化的过程中,遇到“library cache lock”等待事件是常见的问题之一,它直接影响到系统的响应时间和整体性能。本文将深入解析这一事件,包括其产生原因、诊断方法以及可能的解决策略。 ##...

    library cache pin lock解决办法

    针对oracle性能问题中的library cache pin lock,给出解决方案。

    ORACLE关于锁和V$LOCK的分析.docx

    ORACLE 锁机制和 V$LOCK 视图分析 Oracle 数据库为了实现并发操作,使用了锁机制来控制对数据的访问。锁机制是 Oracle 数据库并发控制的核心机制之一。锁机制能够有效地防止多个用户同时访问同一个数据项,避免了...

    PB连ORACLE10免客户端

    标题中的“PB连ORACLE10免客户端”指的是使用PowerBuilder(PB)12.5连接Oracle 10g数据库时,不需安装完整的Oracle客户端软件,而是采用一种轻量级或者精简的方式进行连接。这种方法可以减少系统资源的占用,简化...

    Oracle学习笔记 Oracle学习笔记

    根据提供的信息,我们可以总结出以下Oracle数据库学习的关键知识点: ### Oracle 学习笔记概览 在Oracle学习过程中,掌握基础的命令与权限管理是至关重要的。以下内容将围绕Oracle数据库的基础操作、用户管理以及...

Global site tag (gtag.js) - Google Analytics