网站首页 > 技术文章 正文
【本文详细介绍了Oracle数据库扩展语言PL/SQL中锁的基本概念和使用方法,欢迎读者朋友们阅读、转发和收藏!】
锁
锁是防止访问相同资源(例如表或数据行等用户对象,或内存中的共享数据结构及数据字典等对用户不可见的系统对象)的事务产生破坏性交互的机制。数据库是一个多用户使用的共享资源,当多个用户并发地存取数据时,如果对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。
Oracle 中锁的三个类别
DDL 锁:被 Oracle 自动的发布和释放
DML 锁:在事务处理的开始时被施加,而且在事务处理完成时被释放(使用 Commit 和 Rollback 时被释放)
内部锁:由 Oracle 自己管理以保护内部数据库结构(如 sga 内存结构)
Oracle 中锁的三个粒度
TX 锁:行级锁(事务锁),会阻止这行上其他 DML 操作,直到 Commit 或 Rollback 时被释放,它只有 X 排他锁
TM 锁:表级锁,包括: S,X,SR,SX,SRX 五种
数据库级锁:锁定数据库为限制模式 alter system enable restricted session
锁的模式
Row-S 行共享( RS ):共享行锁
SQL 操作: select for update 、 lock for update 、 lock row share
Row-X 行专用( RX ):用于行的修改
SQL 操作: insert 、 update 、 delete 、 lock row share
Share 共享锁( S ):阻止其他 DML 操作
SQL 操作: create index 、 lock share
S/Row-X 共享行专用( SRX ):阻止其他事务操作
SQL 操作: lock share row exclusive
Exclusive 专用( X ):独立访问使用
SQL 操作: alter table 、 drop able 、 drop index 、 truncate table 、 lock exclusive
Oracle 解锁
Step1 SQL>select sid,serial#,username from v$session where sid in (select blocking_session from v$session);
--- 查出被锁的表
Step2 SQL>alter system kill session ‘144,8982’immediate;
--- 解锁
Mysql 锁表和解锁
mysql> LOCK TABLES real_table WRITE, insert_table WRITE;
--- 将 real_table 和 insert_table 锁定,防止其他人操作
mysql> INSERT INTO real_table SELECT * FROM insert_table;
mysql> TRUNCATE TABLE insert_table;
mysql> UNLOCK TABLES;
--- 对表的操作解锁后,进行解锁
猜你喜欢
- 2025-07-28 Innodb中的事务隔离级别和锁的关系
- 2025-07-28 服务器密码错误被锁定怎么解决(服务器密码忘了怎么解除)
- 2024-10-29 Innodb中的事务隔离级别和锁的关系
- 2024-10-29 oracle维护手册(四) oracle维保必须连续买么
- 2024-10-29 TestComplete v12.0版本更新,新增支持Oracle表等多项功能
- 2024-10-29 Oracle宣布课程:OCI 2024 容器引擎 Kubernetes 专家课程
- 2024-10-29 一次生产库的Oracle 锁处理 oracle数据库死锁怎么解决
- 2024-10-29 关于oracle对象统计信息锁定的解决办法(ORA-200...
- 2024-10-29 plsql查看是否锁表,锁模式等,以及解锁SQL
- 2024-10-29 Oracle锁表解决方法 oracle锁表是什么意思
你 发表评论:
欢迎- 636℃几个Oracle空值处理函数 oracle处理null值的函数
- 629℃Oracle分析函数之Lag和Lead()使用
- 617℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 613℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 611℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 603℃【数据统计分析】详解Oracle分组函数之CUBE
- 590℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 576℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端获取当前时间 (50)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)