Oracle中发生表加锁、死锁的原因,查看,与解决方法
来源:互联网 发布:部落冲突详细数据 编辑:程序博客网 时间:2024/05/24 01:38
一.表加锁、死锁出现的现象
1.对数据库操作update,insert,delete时候,数据库无法更新,操作等待时长,操作结果不发生改变
2.在程序中,底层(数据访问层)操作时候,不成功,数据库连接超时,无法操作,或者操作等待时长等现象
【加锁的原理】:比如一个操作在进行修改一表,它没完成,另一个操作也操作这张表时候就需要等待,
前面操作结束之后才可进行操作
二.表加锁、导致死锁原因
1.可能在Oracle中可以有计时器,在频繁操作数据库,update,insert,delete语句,在jobs中能查看到(如图)
【ORACLE】Oracle中发生表加锁、死锁的原因,查看,与解决方法
2.可能在.net程序中使用到timer控件,频繁的操作数据库update,insert,delete语句(如图)
【ORACLE】Oracle中发生表加锁、死锁的原因,查看,与解决方法
3.可能在.net程序中使用到Thead(线程)频繁的操作数据库update,insert,delete语句(这个条为个人观点,还未得到证实)
【注释】:此处更新数据量都比较大,比如说update的数据库条数可能在1000条以上,
导致其他操作在等待(update跟其他操作都是同一张表)
4.可能使用到事务处理(Tran),没有提交事务(CommintTran)或者没有回滚事务(Rollback)
【注释】:在SqlServer数据库里面有一个隐式事务,关闭时候,每次修改插入都需要手动提交,不然就会导致死锁
三.解决方法
1.解决方案一
//查看所有被加锁的信息
select * from v$locked_object;
【ORACLE】Oracle中发生表加锁、死锁的原因,查看,与解决方法
//查看加锁的Session_id编号
select b.owner,b.object_name,a.session_id,a.locked_mode from vlocked_object a,dba_objects b where b.object_id = a.object_id;
【ORACLE】Oracle中发生表加锁、死锁的原因,查看,与解决方法
//获取sid,serial#进行解锁操作
select b.username,b.sid,b.serial#,logon_time from vlocked_object a,v$session b where a.session_id = b.sid order by b.logon_time;
【ORACLE】Oracle中发生表加锁、死锁的原因,查看,与解决方法
//解锁操作
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
order by logon_time desc【ORACLE】Oracle中发生表加锁、死锁的原因,查看,与解决方法【注释】:通过sql_Text列,您可以查看到被锁定的表是谁
//通过修改计时器间隔时间来解决
【ORACLE】Oracle中发生表加锁、死锁的原因,查看,与解决方法
//修改Timer控件间隔执行时间
【ORACLE】Oracle中发生表加锁、死锁的原因,查看,与解决方法
//线程,还未证实如何修改
- Oracle中发生表加锁、死锁的原因,查看,与解决方法
- Oracle常见死锁发生的原因以及解决方法
- Oracle常见死锁发生的原因以及解决方法
- Oracle发生死锁原因分析及解决方法
- 线程发生死锁的条件与原因
- oracle中锁与死锁,还有阻塞的原因。
- oracle中查看死锁
- Oracle数据库的死锁查看与处理
- mysql的加锁与死锁问题
- oracle中加锁与解锁
- 死锁的发生与处理
- oracle死锁的解决方法
- Oracle 查看死锁表
- 进程死锁的危害、导致原因、解决方法
- 进程死锁的危害、导致原因、解决方法
- 死锁产生的原因以及解决方法
- 死锁产生的原因和解决方法
- 怎样减少sqlserver中死锁的发生
- Oracle_SQL_day03_ 多表查询之 :连接查询
- Matplotlib的用法
- 【input】文件上传控件隐藏和前端类型限制
- Linux无法连接外网
- Spring中InitializingBean接口使用
- Oracle中发生表加锁、死锁的原因,查看,与解决方法
- oracle自定义类型type/create type
- LinuxStudyNote(11)-Linux常用命令(2)-目录文件复制命令(6)cp
- mysql 索引相关
- Android常用Manager
- 杂记通信http
- 所用的日常 Git 命令!
- LED恒流驱动IC汇总
- 【更新】Microsoft Visio类库Aspose.Diagram 9月新版V17.9发布 | 附下载