解决Oracle死锁问题

增加人员信息即死锁,排查过程如下(表名字为A001):

1、根据表查询死锁进程ID

select b.owner,b.object_name,a.session_id,a.locked_mode

from v$locked_object a,dba_objects b

where b.object_id = a.object_id and object_name='A080'

其中locked_mode:

"1":Select。

"2":Select for update,Lock For Update,Lock Row Share

"3":Insert, Update, Delete, Lock Row Exclusive

"4":Create Index, Lock Share

locked_mode为2,3,4不影响DML(insert,delete,update,select)操作, 但DDL(alter,drop等)操作会提示ora-00054:"resource busy and acquire with NOWAIT specified"

"5"::Lock Share Row Exclusive

"6":Alter table, Drop table, Drop Index, Truncate table, Lock Exclusive

2、根据ID查询进程具体信息

select b.username,b.sid,b.serial#,logon_time

from v$session b

where sid='9'

这时可以杀进程

ALTER SYSTEM KILL SESSION '9,5' IMMEDIATE;

3、查死锁语句

SELECT s.sid, s.serial#, s.username, s.sql_id, s.sql_child_number, s.program, t.used_ublk

FROM vsession s, vtransaction t

WHERE s.saddr = t.ses_addr and sid='579'

不见得能查出,碰运气了

相关推荐
Y_3_77 分钟前
FlinkCDC 达梦数据库实时同步详解
数据库
chat2tomorrow25 分钟前
QuickAPI:一键将 Excel 数据转为数据库表
数据库·sql·mysql·oracle·excel·统一数据服务·sql2api
今天也想快点毕业29 分钟前
简单创建一个Django项目并配置neo4j数据库
数据库·django·neo4j
StevenLdh1 小时前
浅谈StarRocks数据库简介及应用
数据库
机器视觉—ing1 小时前
C# 不同框架如何调用framework 和 net core
java·数据库·c#
仙魁XAN1 小时前
Flutter 学习之旅 之 flutter 使用 SQLite(sqflite) 实现简单的数据本地化 保存/获取/移除/判断是否存在 的简单封装
数据库·flutter·sqlite·sqflite·本地化数据
珹洺2 小时前
计算机网络:(二)计算机网络在我国发展与网络类别与性能 (附带图谱更好对比理解)
运维·服务器·网络·数据库·后端·计算机网络
多多*2 小时前
Spring设计模式 八股速记 高层模块底层模块 依赖倒置原则 开闭原则 接口隔离原则
java·开发语言·数据库·macos·github·objective-c·cocoa
程序员清风2 小时前
谈谈Select For Update的实现原理?
数据库·后端·面试
韩曙亮3 小时前
【AI 大模型】RAG 检索增强生成 ⑤ ( 向量数据库 | 向量数据库 索引结构和搜索算法 | 常见 向量数据库 对比 | 安装并使用 向量数据库 chromadb 案例 )
数据库·人工智能·大模型·openai·向量数据库·ai大模型·chromadb