管理数据并发处理

1、请对Oracle数据库锁机制做一个完整的说明。

      锁机制用于数据库中提供尽可能高的数据并发处理能力。执行事务处理时,会话必须先锁定要修改的数据,之后数据库才允许会话修改相应数据,锁定后,其他事务处理都不能修改锁定的数据。直到这个事务处理结束,释放锁资源后,其他会话才能进行事务处理。

2、事务在获取排他的行锁的同时,为什么要同时获取一个共享的表锁?

        可以·避免在进行行更改时另一会话锁定整个表(可能会删除或截断表)

3、当锁冲突发生时,如何解决,请给出相应的 SQL 命令。

       发生锁冲突时,通常会随着时间流逝通过入队机制得到解决。只有极少数情况需要管理员干预。例如当一个事务处理在经过查询,修改等多个事务之后没有提交也没有回退,阻塞了另一个会话的进行,这时管理员可以在监视器的“Blocking Sessions” 里选择“kill session”来结束导致阻塞的会话,以便其他事务处理正常执行。

SQL> alter system kill session ‘____, _____’ immediate;

4、死锁是如何发生的,如何解决?

      死锁是锁冲突的一种特殊情况。当两个或更多会话等待已被其中另一会话锁定数据时,就会发生死锁。一般发生死锁之后Oracle DB 会自动检测死锁并终止发生错误的语句,并执行提交或回退,这样会释放该会话中的其他所有锁,以便其他会话可以继续完成事务处理。

5、Oracle 数据库的行锁,本质上是对数据块的锁定,这个说法对不对?

不对。锁是以数据块的一个属性存在的,每个数据块本身就存储着自己数据块中的数据信息,这个地方叫ITL(Interested Transaction List),在这个数据块上活动的事务,它的信息都会记录在这里面供后续的操作查询,以此来保证事务的一致性。在Oracle数据块中,不存在某个真正意义上属于某个对象或数据的锁。Oracle锁的信息是数据块的一个物理属性,而不是逻辑上属于某个行。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值