欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 培训 > oracle锁的机制

oracle锁的机制

2025/5/9 4:26:55 来源:https://blog.csdn.net/m0_67929156/article/details/141967426  浏览:    关键词:oracle锁的机制

文章目录

  • oracle锁的机制
    • 1. 概括
    • 2.锁的模式
    • 3.锁查看
  • 死锁
    • 1. 说明
    • 2.死锁产生条件
    • 3.解决死锁冲突
    • 4. 事务和死锁预防总结


oracle锁的机制

1. 概括

1)说明

锁是一种机制,多个事务同时访问一个数据库对象时,该机制可以实现对并发的控制

2) oracle中锁的类别

1.DDL锁: oracle自动的施加和释放

2.DML锁:事务开始时施加,使用Commit后者Rollback被释放、

3.内部锁: 由oracle自己管理以保护内部数据库结构

3)oracle锁的粒度

1. 行级锁(TX):阻止该行上的DML操作,直到Commit或者Rollback

2. 表级锁(TM):

3. 数据库级锁: eg: 将数据库锁定为只读模式 alter database open read only;

eg: 将数据库设置为限制模式(导入导出数据库时使用):alter system enable restricted session;

2.锁的模式

1)概括
在这里插入图片描述
数字越大,级别越高

lock table student in row share mode;lock table student in row exclusive mode;  --用于行的修改lock table student in share mode;   --阻止其他DML操作lock table student in share row exclusive mode;  --阻止其他事务操作lock table student in exclusive mode;  --独立访问使用

3.锁查看

SELECT * FROM V$SESSION;--查看会话和锁的信息SELECT * FROM V$SESSION_WAIT;--查看等待的会话信息SELECT * FROM V$LOCK;--系统中所有锁SELECT * FROM V$LOCKED_OBJECT;--系统中DML锁

死锁

1. 说明

1. 当两个用户希望持有对方的资源时就会发生死锁。即两个用户互相等待对方释放资源,oracle认定为产生了死锁,在这种情况下,将以牺牲一个用户作为代价,另一个用户继续执行,牺牲的用户的事务将回滚。
  2. lORA-00060的错误并记录在数据库的日志文件alertSID.log中。同时在user_dump_dest下产生了一个跟踪文件,详细描述死锁的相关信息。

2.死锁产生条件

1. Mutual exclusion(互斥):资源不能被共享,只能由一个进程使用。
  2. Hold and wait(请求并保持):已经得到资源的进程可以再次申请新的资源。
  3. No pre-emption(不可剥夺):已经分配的资源不能从相应的进程中被强制地剥夺。
  4. Circular wait(循环等待条件):系统中若干进程组成环路,该环路中每个进程都在等待相邻进程正占用的资源。

3.解决死锁冲突

1)执行commit或者rollback结束事务

2)终止会话

4. 事务和死锁预防总结

1. 避免应用不运行长事务。
  2. 经常提交以避免长时间锁定行。
  3. 避免使用LOCK命令锁定表。
  4. 在非高峰期间执行DDL操作,在非高峰期间执行长时间运行的查询或事务。

另外需注意,需监测系统中死锁,调查为什么这些锁正被保持,频率;当死锁发生通过回滚事务rollback或者终止会话来解决它。

持续更此篇章--------->2024年9月6日!!!!!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词