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

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

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

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

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

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

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

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

a4c26d1e5885305701be709a3d33442f.png

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

a4c26d1e5885305701be709a3d33442f.png

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

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

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

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

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

三.解决方法

1.解决方案一

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

select * from v$locked_object;

a4c26d1e5885305701be709a3d33442f.png

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

a4c26d1e5885305701be709a3d33442f.png

//获取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;

a4c26d1e5885305701be709a3d33442f.png

//解锁操作

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 desca4c26d1e5885305701be709a3d33442f.png【注释】:通过sql_Text列,您可以查看到被锁定的表是谁

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

a4c26d1e5885305701be709a3d33442f.png

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

a4c26d1e5885305701be709a3d33442f.png

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值