首页 > 数据库 >oracle select语句造成锁行的问题

oracle select语句造成锁行的问题

时间:2024-04-24 09:45:05浏览次数:24  
标签:语句 聚族 非聚族 锁行 索引 添加 oracle select

1、select * from 表 where  code in (1,2,3);

2、update 表 set code  =  4 where code = 1;

以上两步是平时可能用到的写法,先查询在修改(理解我意思就行)。

如果在高并发的情况下,这种情况更容易发生。

select语句使用非聚族索引查询,会对非聚族索引添加共享锁,由于非聚族索引上没有select的全部数据列。查询产量表时,需要对产量表数据添加共享锁,需要等待Update语句更新完产量表后释放排他锁。即Select等待Update释放锁。

此时产量表上的Update语句更新的时候,会在聚族索引上做定位,添加排他锁和修改非聚族索引的信息,问题就出在修改非聚族索引信息的时候,需要对非聚族做索引添加排他锁。此时select语句已经在聚族索引上面添加了共享锁,需要释放后才能被添加排他锁。即update语句需要等待select语句是否锁。

这样死锁就形成了。

 

标签:语句,聚族,非聚族,锁行,索引,添加,oracle,select
From: https://www.cnblogs.com/xxfcode/p/18154389

相关文章

  • cls_oracle_logs.sh脚本遭遇TNS-12508错误浅析
    cls_oracle_logs.sh脚本的输出日志中有TNS-12508错误,具体如下所示........................................................................LSNRCTL> Current Listener is gspLSNRCTL> Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=gsp)))TNS-12508: TNS:......
  • oracle RAC加盘踢盘
    环境:OS:Centos7db:12CR2 1.主机层面加盘虚拟机加盘需要停掉数据库和主句,生产环境之间划分lun给到主机,不需要重启.multipath-ll找到新加磁盘的UUID 2.配置多路径每个节点上都要操作[root@rac02~]#more/etc/multipath.confblacklist{devnode"^sda"}defa......
  • Oracle数据库出现WARNING: too many parse errors告警的分析思路
    Oracle数据库的告警日志中出WARNING:toomanyparseerrors这些告警信息的话,如果遇到这个问题,我们应该如何分析呢?下面简单聊一下如何分析这个错误。该告警信息其实是12.2版本中的一个特性增强。在以前的Oracle版本中,数据库出现了解析错误时,数据库的alert日志中不会有任何相关的......
  • Oracle OCR,Vote disk故障恢复方案
     Oracle OCR,Votedisk故障恢复方案 1  概述OCR/Votedisk磁盘组故障场景恢复操作方案。测试版本:11.2.0.4.0适用于以下场景:操作维护OCR/Votedisk对应的磁盘组,提前备份了OCR文件信息,以便存在回退维护的空间。由于某些原因导致OCR/Votedisk的磁盘组丢失从而......
  • TIMESTAMP WITH TIME ZONE in PG and Oracle
    BothOracleandPostgreSQLsupporttheTIMESTAMPWITHTIMEZONEdatatype,buttherearesomedifferencesinhowtheyhandleandstoretimezoneinformation.Storage:Oracle:InOracle,TIMESTAMPWITHTIMEZONEvaluesarestoredinUTCinternally.Thet......
  • ORACLE定时器,执行周期设定
    对于DBA来说,数据库Job再熟悉不过了,因为经常要数据库定时的自动执行一些脚本,或做数据库备份,或做数据的提炼,或做数据库的性能优化,包括重建索引等等的工作。但是,Oracle定时器Job时间的处理上,千变万化,今天我把比较常用写法汇总如下:在总结之前,先把Job的参数一一说明一下:job参数是由Su......
  • oracle 修改密码不过期
    1.以sysdba身份进入sqlplus模式 2.查看用户密码的有效期设置一般默认的配置文件是DEFAULTSELECT*FROMdba_profilesWHEREprofile='DEFAULT'ANDresource_name='PASSWORD_LIFE_TIME';3.将密码有效期修改成“无限期”ALTERPROFILEDEFAULTLIMITPASSWORD_LIFE_TIM......
  • Oracle JDK 和 OpenJDK 有什么区别?
    OpenJDK是Sun在2006年末把Java开源而形成的项目,这里的“开源”是通常意义上的源码开放形式,即源码是可被复用的,例如IcedTea、UltraViolet都是从OpenJDK源码衍生出的发行版。OracleJDK采用了商业实现,而OpenJDK使用的是开源的FreeType。当然,“相同”是建立在两者共有的组件基础上的,O......
  • [转帖]Oracle 败了、谷歌赢了:Java API 版权案最终裁决
    https://zhuanlan.zhihu.com/p/362496136 周一,最高法院在Oracle围绕移动操作系统Android中所用软件的一起旷日持久的版权诉讼中判谷歌胜诉。法院的判决为6比2。大法官AmyConeyBarrett没有参与此案。该案涉及谷歌用于构建Android的12000行代码,这些代码是从SunMicrosy......
  • Google和Oracle关于Java的知识产权诉讼
    Google和Oracle关于Java的知识产权诉讼背景Oracle收购SUN之后立即对Oracle展开了诉讼.经历了多级法院的上诉和驳回.2021.4.5美国联邦最高法院判断.Google不侵权.无需赔偿Oracle提起的80亿美金的诉讼但是专利官司在美国科技史上影响很大.AMD跟Intel的关于x86......