拓扑园

  • O&M
    • Universal部署
    • PHP+VUE+Laravel相关
  • Oracle性能优化
  • Oracle项目案例
    • Oracle近期项目案例(目录)
    • Oracle实战问题解析(目录)
    • Oracle数据库名变更流程(2种方式)
    • Oracle数据库目录更换流程(使用Oracle的clone工具)
    • Oracle数据库迁移方案(目录)
    • 标准化文档系列
  • Oracle基础知识
    • LLL的Oracle培训(分类)
    • LLL的docker培训(分类)
    • 标准化文档系列--(分类)
    • Oracle核心经典分析(分类)
    • 图灵小队----(分类并包含以下文章)
    • --MySQL8.0/Oracle/Memcached/Redis等安装配置于RHEL/OL6/7/8.X系列-运行环境最优配置
    • --PG安装配置于RHEL/9X系列-运行环境最优配置
    • --自动维护任务详解-开启、关闭信息统计收集(统计信息)
    • --图灵小队—Oracle/PostgreSQL下创建一个用户测试表(自行定义数据行)
    • --图灵小队-Oracle存储过程导出表的明细_UTL_FILE(文章)
    • --图灵小队-Oracle数据库删除/卸载操作指南(文章)
    • --图灵小队-Oracle常用性能查询SQL语句(文章)
    • --图灵小队-Oracle数据库上线前检查(文章)
    • --图灵小队-Oracle常用SQL语句(文章)
    • --图灵小队—Linux/Oracle脚本/MySQL合集(持续更新)
    • --图灵小队-Oracle技巧记录(文章)
    • ADG
    • RAC
    • ASM
    • OGG
    • RMAN
    • EXPDP/IMPDP
    • 工厂数据导入导出系列
  • MySQL
    • MySQL数据库规范
    • MySQL项目案例
    • MySQL安装配置
    • MYSQL集群项目
    • MySQL常见处理
    • MySQL-Sysbench专题
    • MySQL-Percona Toolkit专题
  • Linux
    • Shell编程
    • kubernetes
    • docker
    • Linux
    • PHP
    • Nginx
    • haproxy
    • mail
    • 网站
    • 域名
    • 网址收藏
  • 数据中心
    • 新框架系统集合
    • 工作文档
    • EBS数据文件扩容
    • VMware虚拟化
    • EBS系列
    • 大数据
    • SVN
    • zabbix
    • SAP
    • 备份相关
    • FC交换机
    • SVN
  • K-Studing
    • D8-Python学习
    • Oracle/MySQl等面试题
    • LG-MySQL
    • LG-Docker/K8S
    • LG-PostgreSQL
    • LG-ORACLE_BBED
    • LG-ORACLE
    • LG-Elasticsearch(ES)+ELK
    • Oracle-19C-OCP
    • WERN_ORACLE培训
    • redis数据库
    • Nginx培训学习系列
  • 其他
    • 外研英语4年级下册-听力
    • 影视系列
    • 如何使用iTunes软件通过抓包下载旧版本的ios的app
天高任鸟飞
Oracle/MySQL数据库恢复/数据迁移/生产规范报告技术交流:TEL:18562510581(微信同号);加微信入群
  1. 首页
  2. 技术学习系列
  3. WERN_ORACLE培训
  4. 正文

第06部分 oracle11g的锁

2020年3月7日 703点热度 0人点赞 0条评论

一、锁的概念

1、锁是数据库用来控制共享资源并发访问的机制。

2、锁用于保护正在被修改的数据

3、直到提交或回滚了事务之后,其他用户才可以更新数据

二、锁定的优点

1、一致性 - 一次只允许一个用户修改数据

2、完整性 - 为所有用户提供正确的数据。如果一个用户进行了修改并保存,所做的修改将反映给所有用户

3、并行性 -允许多个用户访问同一数据

三、锁的类型

1、行级锁——对正在被修改的行进行锁定。其他用户可以访问除被锁定的行以外的行

    (1)行级锁是一种排他锁,防止其他事务修改此行

    (2)在使用以下语句时,Oracle会自动应用行级锁(也会加表级锁):INSERT,UPDATE,DELETE,SELECT … FOR UPDATE(也会加表级锁)

    (3)SELECT … FOR UPDATE语句允许用户一次锁定多条记录进行更新【锁定一张表,select * from emp for update,不可以update,delete,但可以insert into数据】

    (4) 使用COMMIT或ROLLBACK语句释放锁 

    (5)例子

        a、scott用户更新emp表的empno=7369行,未提交,会锁行

image.png

 查看锁:视图 v$lock,TM表级锁,TX行级锁

image.png

    b、system用户也更新,但更新过程出现等待过程 

    select * from dba_object d where object_id=75335

image.png

 查看锁:视图 select * from v$lock,TM表级锁,TX行级锁

image.png

    c、查看TM表级锁中的ID1,此处的锁,是scott的emp表

    select ADDR,KADDR,SID,TYpe,ID1 from v$lock where type='TM'or type='TX';

image.png

    d、因为scott用户在更新emp中,未提交,所以system用户update的表,无法进行锁表。它等待scott将empupdate完成后,再进行锁表,锁行

        对scott的update操作提交(commit)或回滚(rollback):

(6)、select  * form emp  where sal=1000 for update;

后面加for update,会加锁,如果要消除这个锁,就rollback。

image.png

image.png

select ... for update的用途:锁定一张表,select * from emp for update,不可以update,delete,但可以insert into数据)

image.png

(7)select ... for update wait 5;锁定一张表或某几行,只等待5秒钟,如果超过5秒钟仍被其他人占用锁定,就不进行等待了

image.png

(8)select ... for update nowait ;锁定一张表或某几行,等待,被其他人占用锁定,就返回错误。

image.png

2、表级锁

    (1)锁定整个表,限制其他用户对表的访问

    (2)使用命令显示地锁定表,应用表级锁的语法是: LOCK TABLE table_name IN [mode---row share,row exclusive,share,share row exclusive,exclusive] MODE;

    (3)表级锁的类型

        a、行共享 (ROW SHARE) ——禁止排他(exclusive)锁定表;lock table emp in row share mode;禁止exclusive(a) 类型操作,在此期间,exclusive操作无法锁定此表,但可以允许(b、c、d类型的锁),且对行可以进行增、删、改;

    image.png

        b、行排他(ROW EXCLUSIVE) ——禁止使用排他锁(exclusive)和共享锁(share);

        c、共享锁(SHARE)——锁定表,

                仅允许其他用户查询表中的行;

                禁止其他用户插入、更新和删除行;

                多个用户可以同时在同一个表上应用此锁(此处和select * from emp for update不同);

            lock table  emp in share mode =select * from emp for update;

        d、共享行排他(SHARE ROW EXCLUSIVE) – 比共享锁更多的限制,禁止使用共享锁(share)及更高的锁

        e、排他(EXCLUSIVE) – 限制最强的表锁,仅允许其他用户查询该表的行。禁止修改和锁定表

3、死锁

    (1)当两个事务相互等待对方释放资源时,就会形成死锁

    (2)Oracle会自动检测死锁,并通过结束其中的一个事务来解决死锁

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 暂无
最后更新:2020年3月11日

admin

这个人很懒,什么都没留下

打赏 点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

COPYRIGHT © 2022 拓扑园. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

鲁ICP备2021020523号

鲁ICP备2021020523号