一.表加锁、死锁出现的现象

1.对数据库操作update,insert,delete时候,数据库无法更新,操作等待时长,操作结果不发生改变

2.在程序中,底层(数据访问层)操作时候,不成功,数据库连接超时,无法操作,或者操作等待时长等现象

【加锁的原理】:比如一个操作在进行修改一表,它没完成,另一个操作也操作这张表时候就需要等待,

前面操作结束之后才可进行操作

二.表加锁、导致死锁原因

1.可能在Oracle中可以有计时器,在频繁操作数据库,update,insert,delete语句,在jobs中能查看到(如图)

2.可能在.net程序中使用到timer控件,频繁的操作数据库update,insert,delete语句(如图)

3.可能在.net程序中使用到Thead(线程)频繁的操作数据库update,insert,delete语句(这个条为个人观点,还未得到证实)

【注释】:此处更新数据量都比较大,比如说update的数据库条数可能在1000条以上,

导致其他操作在等待(update跟其他操作都是同一张表)

4.可能使用到事务处理(Tran),没有提交事务(CommintTran)或者没有回滚事务(Rollback)

【注释】:在SqlServer数据库里面有一个隐式事务,关闭时候,每次修改插入都需要手动提交,不然就会导致死锁

三.解决方法

1.解决方案一

//查看所有被加锁的信息

select * from v$locked_object;

//查看加锁的Session_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;

//获取sid,serial#进行解锁操作

select

b.username,b.sid,b.serial#,logon_time from v$locked_object a,v$session

b where a.session_id = b.sid

order by b.logon_time;

//解锁操作

alter system kill

session'sid,serial#';

【注释】:1.sid和serial#都是由上查询到的

2.数据库频繁在加锁、解锁,可能在在用sql解锁的时候,sid,serial#就被数据库自动解锁了

3.手动解锁,无法解决死锁问题

2.解决方案二

//查询导致死锁的用户和软件还有T-SQL语句,记录时间、计算机名称

select username,sql_text,lockwait,status,machine,program,logon_time

from v$session

,v$sql where v$session.SQL_ID = v$sql.SQL_ID

order by logon_time desc【注释】:通过sql_Text列,您可以查看到被锁定的表是谁

//通过修改计时器间隔时间来解决

//修改Timer控件间隔执行时间

//线程,还未证实如何修改

oracle如何给表上锁,【ORACLE】Oracle中发生表加锁、死锁的原因,查看,与解决方法...相关推荐

  1. php中 session start,php session_start()出错原因分析及解决方法

    错误提示: Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers ...

  2. oracle中“ORA-00060: 等待资源时检测到死锁” 或存储过程编译卡死 解决方法

    oracle中"ORA-00060: 等待资源时检测到死锁" 或存储过程编译卡死 解决方法 参考文章: (1)oracle中"ORA-00060: 等待资源时检测到死锁& ...

  3. mysql表中的中文是乱码_mysql插入表中的中文显示为乱码或问号的解决方法

    版权声明:本文为博主原创文章,未经博主允许不得转载. 今天在做ssh的博客项目时发现mysql数据库中的中文显示为问号,网上查阅了很多资料,都不是很全,所以我总结一下,供大家参考和自己复习. 1.我的 ...

  4. (C语言)已知顺序表L1,L2中数据由小到大有序,请用尽可能快的方法将L1与L2中的数据合并到L3中,使数据在L3中按升序排列。

    (C语言)已知顺序表L1,L2中数据由小到大有序,请用尽可能快的方法将L1与L2中的数据合并到L3中,使数据在L3中按升序排列. 输入样例: 5 2 4 9 10 11 6 1 2 4 6 7 8 输 ...

  5. 周末杂谈:在MYSQL中,添加数据行后,使用右外连接查询所有课程的选修情况,要求列出课程编号、课程名称、选修人数,表中没有的课程列值为空的解决方法

    周末杂谈:在MYSQL中,添加数据行后,使用右外连接查询所有课程的选修情况,要求列出课程编号.课程名称.选修人数,表中没有的课程列值为空的解决方法 实验前期准备 course表(课程表) 在其中: c ...

  6. mysql 导入主键冲突_MySQL 处理插入过程中的主键唯一键重复值的解决方法

    本篇文章主要介绍在插入数据到表中遇到键重复避免插入重复值的处理方法,主要涉及到IGNORE,ON DUPLICATE KEY UPDATE,REPLACE:接下来就分别看看这三种方式的处理办法. IG ...

  7. mysql5.7.20 sql mode_MySQL5.7中的sql_mode默认值带来的坑及解决方法

    在正常项目开发过程中,如果MySQL版本从5.6升级到5.7版本.作为DBA在考虑数据库版本升级带来的影响时,一般会有几个注意点: sql_mode optimizer_switch 本文主要内容是M ...

  8. hp打印机无法与计算机,电脑中安装HP打印机后重启无法打印的解决方法

    电脑中安装HP打印机后重启无法打印怎么办?近来不少朋友都向小编咨询了这个问题.HP有一个型号重启以后无法打印,今天系统城小编就要在这里给大家介绍一个方法可以解决这个问题. 具体方法如下: 1.这是第一 ...

  9. Dockerfile中npm中Error: could not get uid/gid问题的解决方法

    Dockerfile中npm中Error: could not get uid/gid问题的解决方法 参考文章: (1)Dockerfile中npm中Error: could not get uid/ ...

  10. Eclipse中出现JS文件前有红叉的解决方法

    Eclipse中出现JS文件前有红叉的解决方法 参考文章: (1)Eclipse中出现JS文件前有红叉的解决方法 (2)https://www.cnblogs.com/zhangda001/p/853 ...

最新文章

  1. 根据名称获得treeview节点_冶金行业首个!中冶赛迪正式启动工业互联网标识解析二级节点建设...
  2. Can't get source for site-packages\torchvision\ops\poolers.py. TorchScript requires source access in
  3. Sass学习笔记 -- 初步了解函数、运算、条件判断及循环
  4. Linux 安装 luarocks(lua的模块管理工具)
  5. 放弃Python转向Go语言:我们找到了以下9大理由
  6. VIM查看空格,换行,TAB键
  7. 如何判断对方列表里是不是好友_微信如何快速查看是否为好友关系
  8. 淘宝用html还url,html取出指定div的内容(不怕嵌套)
  9. 诸如北京现代 只有四个轮子和一电瓶由中国制造(转自新华网)
  10. python3带tkinter窗口的ftp服务器,并使用pyinstaller打包成exe
  11. POST数据加密问题
  12. ARM64体系结构编程1-加载与存储指令
  13. java时钟指针_时钟 走动 一个应用线程实现指针运动的指针时钟程序 联合开发网 - pudn.com...
  14. vs运行程序时报错:“Stack around the variable XXX was corrupted”
  15. 模仿微信图片编辑器--动画实现向上弹出文字编辑框(遮罩)界面
  16. MS17-010(永恒之蓝)漏洞复现
  17. 装修颜色搭配方案,打造与众不同的家居
  18. 生态伙伴开发实践 | 智慧检测实验室应用系统快速接入指令集数字底座
  19. leetcode_977
  20. 16MnDR是什么材料

热门文章

  1. 微生物领域非顶级期刊概述
  2. 用circlize包绘制circos-plot
  3. Linux用户root登录shell时,linux系统管理-定制root用户的Shell环境
  4. python使用matplotlib可视化线图(line plot)、自定义可视化图像的四个边框的色彩、可以分别设置矩形每一条边的色彩(change the axis color)
  5. R语言使用lm构建线性回归模型、并将目标变量对数化实战:模型训练集和测试集的残差总结信息(residiual summary)、模型训练(测试)集自由度计算、模型训练(测试)集残差标准误计算
  6. R语言ggplot2可视化轴标签重叠问题解决实战:修改轴标签字体、轴标签垂直于坐标轴(或者旋转特定角度)
  7. R语言计算每个分组的行数并将结果添加到dataframe中实战
  8. R语言Box-Cox变换实战(Box-Cox Transformation):将非正态分布数据转换为正态分布数据、计算最佳λ、变换后构建模型
  9. R线性回归模型构建示例
  10. R可视化绘制对数正态分布(Log Normal Distribution)