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日!!!!!

相关推荐
你才是臭弟弟22 分钟前
window sever 2019 安装~时序数据库TDengine TSDB 和 视图工具dbeaver
数据库·时序数据库·tdengine
J超会运22 分钟前
MySQL核心SQL语句速查宝典
数据库·mysql
Memory_荒年24 分钟前
TiDB 单机部署与监控完整指南
运维·数据库·后端
殷紫川34 分钟前
SQL 性能优化全解:从执行计划到底层逻辑,根治 99% 的慢 SQL 与规范落地
数据库·mysql
Memory_荒年38 分钟前
TiDB:当 MySQL 遇上分布式,生了个“超级混血儿”
java·数据库·后端
asom2241 分钟前
DDD(领域驱动设计) 核心概念详解
java·开发语言·数据库·spring boot
ego.iblacat43 分钟前
MySQL 数据库操作
数据库·mysql·adb
赵渝强老师43 分钟前
【赵渝强老师】高斯数据库(openGauss)的逻辑存储结构
数据库·postgresql·opengauss·gaussdb·国产数据库·高斯数据库
Aawy1201 小时前
Python生成器(Generator)与Yield关键字:惰性求值之美
jvm·数据库·python
梦想的旅途21 小时前
API 驱动:实现企业微信外部群自动化管理与效率升级
数据库·windows