主外键造成ORA-00060死锁问题的解决方案

oracle中“ORA-00060: 等待资源时检测到死锁” 或存储过程编译卡死 解决方法 目录 一、概述 二、解决方案 2.1查看那些表被锁住 以下是执行结果截图: ​2.2 查看引起死锁的会话 以下是执行结果截图: ​2.3 查看被阻塞的会话 2.4 释放锁或者杀掉ORACLE进程 以下是执行结果截图: 一、概述 之前在调试存储过程时,出现卡死情况,无法插入数据 报错信息: oracle中“ORA-00060: 等待资源时检测到死锁” 或存储过程编译卡死 解决方法 二、解决方案 2.1查看那些表被锁住 SELECT b.owner,... 阅读详情

在我们项目性能测试过程中出现了ORA-00060死锁,查了一下Oralce的官方文档,该死锁是属于表级死锁。我们的测试场景是不断的提交数据,然后删除数据,虽然涉及到多张表的操作,理论上不可能产生表级死锁。

进一步分析代码和出现死锁的表,发现出现死锁的是一张由主外键关联的表。在代码方面当时为了省事,采用了Oralce主外键的级联删除关系,没有通过代码来控制主外键关系。这个时候,当程序删除主表数据时,由于外键表缺少索引,删除操作由行级锁升级为表级锁,最终导致大量的锁和死锁。

解决方案1:

在外键上加上索引,问题解决。

解决方案2:

取消数据库表中的主外键关联,使用代码实现主外键关系。

考虑到我们项目使用的Hibernate,能够通过配置表之间的关系既能实现主外键关系,代码改动非常小。另外,数据库的主外键关联的强逻辑在将来系统应急方面会带来很多限制。还有就是增加索引增加了数据库的存储容量,对数据维护也有性能损耗。最终我们选择方案2解决问题。


如何处理数据库中的外键 在比较复杂的数据库中,经常要处理表中的外键关系,本人写了一些处理外键的方法,还忘诸位多多指点…… 立即下载

相关推荐

神联动:LSTM+卡尔曼滤波!一区大门轻松开!

近来热度飙升,成为时间序列预测和状态估计等领域的香饽饽,非常好发高区!主要在于:这两者结合,不仅能提高模型预测准确性;还能拓展应用场景,为我们的论文创新提供发挥空间,且当下还在蓝海阶段,还不算卷。具体点说:卡尔曼滤波擅长处理线性状态估计和噪声,能使LSTM更好地适应动态环境的变化,减少噪声干扰,降低预测误差。而LSTM通过捕捉长期依赖关系,擅长处理非线性时间序列,能够弥补卡尔曼滤波在这方面的不足,从而把应用场景从传统的状态估计,延伸到金融预测、工业检测、自动驾驶等任务。

2401_82426425的博客 2208

解决oracle死锁,生产问题,ORA-00060: deadlock detected while waiting for resource,

去生产的log日志查看,发现同一时间点左右,还有一个批量更新同一条数据的慢sql 日志。这个慢sql 的更新和这个死锁的sql 更新互斥了。例如:A线程更新的主键是1,2,3 B线程更新的主键是3,2,1 当批量更新时就可能会死锁,但是排序后,A线程更新的主键是1,2,3 B线程更新的主键是1,2,3 这是就不会产生死锁,测试过。但是通过分析发票,这些方案都是会影响程序的性能,导致性能变慢,还有对代码的修改比较大,有很大的不确定性和风险。在执行批量更新前,先对主键序列号进行排序,然后在进行批量更新。

weixin_43171875的博客 1万+

七星棋牌顶级运营产品全开源修复版源码教程:6端支持,200+子游戏玩法,完整搭建指南(含代码解析)

让您从源码下载到本地运行一步到位!此外,文中还将附带详细代码解析与操作步骤,即便没有开发经验,也能轻松完成二开与定制。数据库是棋牌游戏中极为关键的组成部分,用于存储用户信息、乐豆余额、游戏记录、提现申请等数据。以下是部分核心数据表结构示例,便于存储用户信息与游戏记录。AI模块能够控制游戏中的胜率,常用于调节玩家体验。防沉迷功能旨在限制未成年人游戏时间。的完整搭建流程,特别适合。首先,获取七星棋牌源码。本教程将为您详细讲解。

aa2031171的博客 7769

【oracel死锁】ORA-00060: deadlock detected while waiting for resource

ORA-00060: deadlock detected while waiting for resource

littleyuyuyu的博客 3562

如何查看在电脑里登陆过的微信帐号的聊天记录

打开微信电脑版,点击左下角 "≡" 菜单 → 选择 "设置"进入 "账号与存储"(旧版为" 文件管理 ")选项卡在 "存储位置"一栏查看当前实际保存路径,可点击" 打开文件夹 " 直接访问查看电脑里登录过的微信账号聊天记录,首选官方客户端直接登录查看,操作简单且安全;若账号已退出,可通过备份恢复功能处理;仅需查看媒体文件时,可定位到FileStorage 文件夹直接访问。无论哪种方式,都需遵守隐私保护原则,并注意聊天记录的加密特性限制。

捷利迅分享的博客 4518

PotPlayer终极画质调校:深入MadVR渲染器设置,让你的显示器发挥100%潜力

本文深入探讨了如何通过MadVR渲染器优化PotPlayer的画质设置,充分发挥高端显卡和显示器的潜力。从色彩空间匹配、色深优化到HDR元数据处理,提供了一套完整的配置指南,帮助用户实现影院级视觉体验。特别适合拥有NVIDIA RTX或AMD RX系列显卡的用户进行精细调校。

weixin_42530458的博客 599

oracle数据库报ORA-00060错误(死锁)的解决办法

重要:最根本还是要找到锁表的原因,比如有定时任务、存储过程等一直调用该表写入数据,此时就算解kill掉所有session后还是会有新的产生,则就需要先把对该表产生影响的定时任务先停掉(有些系统还需重启一下对应的后端模块),停掉后大多数情况session会自动消失,如果没有就通过参考文章kill掉session。【oracle中“ORA-00060: 等待资源时检测到死锁” 或存储过程编译卡死 解决方法 - 优快云 App】解锁步奏参考以下步骤(serial#这字段中间没有空格,参考文章中写错了)

iot_qizu的博客 2176

SAP 接口测试操作-业务顾问

业务顾问测试接口操作

weixin_43657667的博客 5156

ORA-00060:等待资源时检测到死锁

问题现象: 1、在更新A表的某一条记录S1、并且未提交; 2、然后再调用一个含有自治函数(procedure ***(serialno VARCHAR2,boType VARCHAR2) IS PRAGMA AUTONOMOUS_TRANSACTION;)的存储过程或函数,且该被调函数会更新A表的同一条记录S1; 此时会发生Oracle 系统报错“ORA-00060: 等待资源时检测到死锁”...

爱码僧的博客 1万+

RK3568平台(内存篇)DDR定频修改

如果需要DDR定频,则还需要注释掉其他多余的DDR频率,保留一个即可,例如注释掉opp-528000000、opp-1068000000、opp-1560000000,保留opp-2750000000则是定频最大频率。如果回退必须将 dmc_opp_table节点 的其他频率打开,否则系统无法选择到其他频率运行。ddr频点不对,先把ddr变频关掉,关闭后系统就不会一直重启了,以下是修改DDR频点的。rk3588修改定频节点在rk3588s.dtsi 的 dmc: dmc。

weixin_49303682的博客 1620

Python爬虫实战:逆向解析腾讯视频API,高效获取结构化视频信息

首先,我们定义期望获取的数据结构,这有助于数据验证和代码清晰度。python"""腾讯视频信息数据模型"""title: str = Field(..., description="视频标题")vid: str = Field(..., description="视频唯一ID")play_count: Optional[int] = Field(None, description="播放量")

2201_76125261的博客 2378

主外键造成死锁问题的解决方案

在我们项目性能测试过程中出现了ORA-00060死锁,查了一下Oralce的官方文档,该死锁是属于表级死锁。我们的测试场景是不断的提交数据,然后删除数据,虽然涉及到多张表的操作,理论上不可能产生表级死锁。 进一步分析代码和出现死锁的表,发现出现死锁的是一张由主外键关联的表。在代码方面当时为了省事,采用了Oralce主外键的级联删除关系,没有通过代码来控制主外键关系。这个时候,当程序删除主表数据时...

jack_shuai的博客 803

cuRobo 入门教程(一)基于CUDA的机器人运动规划加速库

cuRobo是一款基于CUDA加速的机器人算法库,提供运动学计算、碰撞检测、轨迹优化等功能。该库采用并行优化技术,在GPU上实现高效运算,比现有方案快60倍。cuRobo支持多种机器人模型和环境表示,包含正向/逆向运动学、无碰撞轨迹生成、模型预测控制等核心算法,并可与IsaacSim等仿真平台集成。其特点包括:1) 支持多种碰撞检测方式(长方体/网格/深度图像);2) 提供批量环境处理和实时世界更新;3) 通过CUDA Graphs加速优化迭代;4) 在Jetson Orin等平台实现毫秒级运动规划。安装支

2506_90492529的博客 1924

从trc查找死锁的问题

今天alert日志报ORA-00060的死锁错误,查看trc文件: *** 2013-09-29 01:03:47.762 *** SERVICE NAME:(SYS$USERS) 2013-09-29 01:03:47.744 *** SESSION ID:(997.178) 2013-09-29 01:03:47.744 DEADLOCK DETECTED ( ORA-00060 ) ...

844604778 280

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

oracle trc 死锁,从trc查找死锁的问题

今天alert日志报ORA-00060的死锁错误,查看trc文件:*** 2013-09-29 01:03:47.762*** SERVICE NAME:(SYS$USERS) 2013-09-29 01:03:47.744*** SESSION ID:(997.178) 2013-09-29 01:03:47.744DEADLOCK DETECTED ( ORA-00060 )[Transact...

weixin_36319219的博客 582

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

oracle外键死锁,Oracle外键不加索引引起死锁示例

--创建一个表,此表作为子表create table fk_t as select *from user_objects;delete from fk_t where object_id is null;commit;--创建一个表,此表作为父表create table pk_t as select *from user_objects;delete from pk_t where object_...

weixin_35338559的博客 220

ORA-00060死锁的产生及解决

死锁是数据库经常发生的问题,数据库一般不会无缘无故产生死锁,死锁通常都是由于我们应用程序的设计本身造成的。 会话1: -- 创建一个测试表,插入两行 18:03:48 create" style="word-wrap:break-word; text-decoration:none; color:rgb(142,3,0)">SCOTT@wailon>create table tab_dl

fenyu8的专栏 4万+

Oracle检查死锁表、语句、解决死锁问题 ORA-00060: 等待资源时检测到死锁

Oracle检查死锁表、语句、解决死锁问题 ORA-00060: 等待资源时检测到死锁

小蜗牛的博客 1643

Linux ora-00060,困扰许久的一个ORA-00060错误解决

这段时间应用一直被一个诡异的ORA-00060的错误所困扰,众所周知,造成ORA-00060的原因是由于应用逻辑,而非Oracle数据库自己,之所以说诡异(“诡异”可能不准确,只能说这种场景,以前碰见的少,并未刻意关注),是因为这次不是常见的,由于读取数据顺序有交叉,导致ORA-00060,关于读取数据顺序错误,导致ORA-00060的错误场景,可以参考《ORA-00060的示例与若干场景》(ht...

weixin_35084134的博客 5630

Oracle数据库 ORA-00060 错误分析和解决

Oracle数据库 ORA-00060 错误分析和解决

chenoracle的博客 1996

oracle中“ORA-00060: 等待资源时检测到死锁 解决方法

ORA-00060:等待资源时检测到死锁

小猿猴 1万+

ORA-00060 deadlock(转帖)

死锁的几种情况:一.ORA-00060 deadlock detECted while wAIting for rESource. Cause: Your session and another session are wai...

csqm87956的博客 2285

【Java】Lock锁的细节内容-ORA-00060: 等待资源时检测到死锁

代码中如何正确使用Lock锁

weixin_42369773的博客 1481

oracle ORA-00060: 等待资源时检测到死锁

一般情况下,多个进程或线程同事对数据表进行编辑或新增的时候,会造成资源争抢,处于数据库的自我保护机制,有时候会产生锁表现象,例如:某种场景下会提示以上死锁问题。 解决方式如下:可尝试 检查数据库对象与被锁定对象联合查询被锁定的表 1.select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_objects a,dba_objects b where a.object_id=b.object_id; 查看引起死锁的会话

liaoningwangkai的博客 1万+

案例分析:你造吗?有个ORA-60死锁的解决方案

关注↑↑↑我们获得更多精彩内容!问题综述1这段时间应用一直被一个诡异的 ORA-00060 的错误所困扰,众所周知,造成 ORA-00060 的原因是由于应用逻辑,而非 ...

Enmotech的博客 767
上一篇: Oralce如何修改间隔分区
下一篇: 通过Rest实现文件下载
gavinloo
博客等级 码龄21年 48粉丝 53原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值