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

相关推荐
Zfox_33 分钟前
Redis:Hash数据类型
服务器·数据库·redis·缓存·微服务·哈希算法
陈丹阳(滁州学院)3 小时前
若依添加添加监听容器配置(删除键,键过期)
数据库·oracle
远方16093 小时前
14-Oracle 23ai Vector Search 向量索引和混合索引-实操
数据库·ai·oracle
GUIQU.5 小时前
【Oracle】数据仓库
数据库·oracle
恰薯条的屑海鸥5 小时前
零基础在实践中学习网络安全-皮卡丘靶场(第十六期-SSRF模块)
数据库·学习·安全·web安全·渗透测试·网络安全学习
咖啡啡不加糖5 小时前
Redis大key产生、排查与优化实践
java·数据库·redis·后端·缓存
曼汐 .5 小时前
数据库管理与高可用-MySQL高可用
数据库·mysql
2301_793102495 小时前
Linux——MySql数据库
linux·数据库
喵叔哟5 小时前
第4章:Cypher查询语言基础
数据库
刘 大 望5 小时前
数据库-联合查询(内连接外连接),子查询,合并查询
java·数据库·sql·mysql