oracle锁的机制

文章目录


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)概括

数字越大,级别越高

dart 复制代码
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.锁查看

clike 复制代码
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日!!!!!

相关推荐
海兰5 小时前
【数据库】tdsql(mysql8.0)优化思考三
数据库·redis
煎饼学大模型6 小时前
Agent 的“大脑-手“解耦架构:当推理层和工具执行层各自独立演进
数据库·人工智能·oracle·架构·agent
muddjsv9 小时前
SQLite数据库文件机制详解:journal、wal、shm文件作用与备份避坑
数据库·sqlite
吴声子夜歌10 小时前
MongoDB 4.2——应用程序设计
数据库·mongodb
数字新视界11 小时前
动环监控可视化在数据中心管理中的应用与实践解析
数据库·物联网·解决方案·动环监控·大榕树
极地野狼 音乐哔哔11 小时前
数据库备份恢复的原理实践
数据库
互联网中的一颗神经元11 小时前
小白python入门 - 25. SQL 与表设计入门
数据库·python·sql
ttwuai11 小时前
AI 生成后台改数据后,操作日志别只记按钮:Go + MySQL 怎么验
数据库·人工智能·mysql·golang
KaMeidebaby11 小时前
卡梅德生物技术快报 | 核酸适配体文库测序:核酸适配体文库测序的技术原理、实验流程与数据解析
前端·网络·数据库·人工智能·算法
ClouGence12 小时前
除了 DBeaver,2026 年还有哪些好用的开源数据库管理工具?
数据库·开源