图文详解Oracle锁表解决方法的详细记录


本篇文章给大家带来了关于oracle的相关知识,在开发oracle数据库时,我们常遇到频繁操作的oracle数据表,会出现oracle锁表,下面给大家介绍了关于oracle锁表解决方法的相关资料,希望对大家有帮助。

图文详解Oracle锁表解决方法的详细记录

推荐教程:《Oracle视频教程》

锁表或锁超时相信大家都不陌生,经常发生在DML语句中,产生的原因就是数据库的独占式封锁机制,当执行DML语句时对表或行数据进行锁住,直到事务提交或回滚或者强制结束当前会话。

对于我们的应用系统而言锁表大概率会发生在SQL执行慢并且没有超时的地方(一条SQL由于某种原因(Spoon工具做数据抽取与推送)一直执行不成功并且一直不释放资源)因此写出高效率SQL也尤为重要!还有另外情况也会发生锁表,就是高并发场景,高并发会带来的问题就是Spring事务会造成数据库事务未提交产生死锁(当前事务等待其他事务释放锁资源)!从而抛出异常j*a.sql.SQLException: Lock wait timeout exceeded;。

那么如何解决锁表或锁超时呢?临时性解决方案就是找出锁资源竞争的表或语句,直接结束当前会话或sesstion,强制释放锁资源。例如

解决方法如下:

1、session1修改某条数据但是不提交事务,session2查询未提交事务的那条记录

2、session2尝试修改

我们可以看到修改未提交事务的记录会处于一直等待状态,直到对方释放锁资源或强制关闭session1。这里也说明了Oracle做到了行级锁!

一览妙笔 一览妙笔

自媒体、编剧、营销人员写作工具

一览妙笔 50 查看详情 一览妙笔

这里只是简单的模拟了出现锁表情况,可以一眼看出就是session1导致的锁表。实际开发中遇到这种情况一般都是使用SQL直接查出锁资源竞争的表或语句然后进行资源的强制释放!!

3、session3查询竞争资源的表或语句,强制释放资源

-- 查询未提交事务的session信息,注意执行以下SQL,用户需要有DBA权限才行
SELECT
    L.SESSION_ID,
    S.SERIAL#,
    L.LOCKED_MODE AS 锁模式,
    L.ORACLE_USERNAME AS 所有者,
    L.OS_USER_NAME AS 登录系统用户名,
    S.MACHINE AS 系统名,
    S.TERMINAL AS 终端用户名,
    O.OBJECT_NAME AS 被锁表对象名,
    S.LOGON_TIME AS 登录数据库时间
FROM V$LOCKED_OBJECT L
    INNER JOIN ALL_OBJECTS O ON O.OBJECT_ID = L.OBJECT_ID
    INNER JOIN V$SESSION S ON S.SID = L.SESSION_ID
WHERE 1 = 1

查询结果如下

对我们强制释放资源有用的只有前面两个字段,例如

-- 强制 结束/kill 锁表会话语法
ALTER SYSTEM KILL SESSION 'SESSION_ID, SERIAL#';

-- 强制杀死session1,让session2可以修改id=5的那条记录
ALTER SYSTEM KILL SESSION '34, 111';

强制杀死session1后,注意观察session2的执行情况!我们会发现session2的等待会立即终止并执行!相信小伙伴们都有一个疑惑,session_id有29和34,如何确定他们属于session1还是session2,保证杀死的是session1让session2成功执行DML语句?

其实也很简单,这里的判断方式就是session1执行更新但不提交事务,可先用以上SQL查询未提交事务的session信息,此时查到的就是session1的信息。

推荐教程:《Oracle视频教程》

以上就是图文详解Oracle锁表解决方法的详细记录的详细内容,更多请关注其它相关文章!


# 如何设置  # 茂名SEO鱼刺系统  # 莆田企业站seo招商  # 青海省网站建设网页设计  # 龙华大浪网站建设  # 官渡区网站线上广告推广  # 湖南seo优化质量服务  # 电器关键词排名作用  # 广东网站建设认知  # 吴中seo推广怎么推  # 济宁网站建设与推广  # oracle  # 都是  # 客户端  # 的是  # 怎么看  # 那条  # 死锁  # 给大家  # 默认值  # 解决方法 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: 六级准考证号怎么查_四六级准考证查询入口官网  解决SQLAlchemy模型跨文件关联的Linter兼容性指南  三角洲行动2025年9月10日摩斯密码分享  动漫岛在线动漫网 动漫岛动漫在线观看官方入口  除了Copilot,还有哪些值得一试的VS Code AI插件?  优化Leaflet弹出层图片显示:条件渲染策略  Lar*el Eloquent:高效删除多对多关系中无关联子记录的父模型  C++ bind函数使用教程_C++参数绑定与函数适配器的应用  创客贴登录页面入口 创客贴网页版最新网址链接  Golang如何实现HTTP请求重试机制_Golang HTTP请求错误处理策略  TikTok网页版入口快速访问 TikTok官网账号登录方法  QQ邮箱注册地址 免费获取QQ邮箱账号  哔哩哔哩在线观看入口 B站官网免费进入  windows10怎么开启卓越性能_windows10电源选项代码激活  微博网页版访问入口 微博网页版网页端使用指南  Golang如何操作指针参数_Go pointer参数传递规则  如何在Python中安全地将环境变量转换为整数并满足Mypy类型检查  Sublime Text怎么关闭自动完成_Sublime禁用Auto Complete设置  《搜书吧》阅读书籍方法  Mac如何开启画中画模式_Mac Safari浏览器视频画中画功能  如何编写一个符合 composer 规范的 post-install-cmd 脚本?  AO3永久镜像入口开放_AO3最新网址兼容所有浏览器  12306夜间购票失败? | 查看官方公布的暂停服务公告与应对方案  《雷电模拟器》截图方法介绍  Python自动化抓取GBGB赛狗比赛结果:日期范围与赛道筛选教程  Google Drive API服务器端访问指南:服务账户认证详解  使用逻辑应用(Logic Apps)自动处理邮件附件中的XML到Excel  J*aScript调试技巧_性能分析与内存快照  《合金装备4》有望推出重制版!制作人发话了  手机雨课堂网页版入口免登录 雨课堂网页版可点击直接进入  mysql如何配置从库只读_mysql从库只读设置方法  在XML中嵌入二进制数据(如图片)的最佳实践是什么? Base64编码与解析注意事项  菜鸟驿站的取件码忘了怎么办 手机快速查询指南  《雅迪智行》用手机开锁方法  yy漫画登录页面官方入口_yy漫画在线阅读网址入口  基于键值条件高效映射 Pandas DataFrame 多列数据  胃动力不足?试试这5个调理方法  MacBook Pro词典使用指南  iPhone 14 Pro如何更改区域设置_iPhone 14 Pro地区语言修改教程  如何自定义苹果手机铃声  steam缓存文件在哪儿_steam缓存文件的路径查找方法与结构说明  泰拉瑞亚网页版在线登录入口 泰拉瑞亚官方正版入口  快手缓存清理方法  《真我》申请退款方法  Lar*el如何创建自定义的辅助函数(Helpers)_Lar*el全局函数定义与加载方法  Mac hosts文件在哪里_Mac修改hosts文件详细教程  服装短视频如何起号推广?服装短视频起号推广有什么要求?  mysql中如何分析索引使用情况_mysql索引使用分析方法  快手网页版官方访问 快手网页版页面在线打开  百度网盘网页入口链接分享 百度网盘官网入口网页登录 

 2022-08-17

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.