Oracle入门(十五)之数据库锁
一、锁的概念
- 锁是数据库用来控制共享资源并发访问的机制。
- 锁用于保护正在被修改的数据
- 直到提交或回滚了事务之后,其他用户才可以更新数据
二、锁定的优点
- 一致性 - 一次只允许一个用户修改数据
- 完整性 - 为所有用户提供正确的数据。如果一个用户进行了修改并保存,所做的修改将反映给所有用户
- 并行性 -允许多个用户访问同一数据
三、锁的类型
四、行级锁
对正在被修改的行进行锁定。其他用户可以访问除被锁定的行以外的行
- 行级锁是一种排他锁,防止其他事务修改此行
- 在使用以下语句时,Oracle会自动应用行级锁:
- INSERT
- UPDATE
- DELETE
SELECT … FOR UPDATESELECT … FOR UPDATE语句允许用户一次锁定多条记录进行更新使用COMMIT或ROLLBACK语句释放锁SELECT … FOR UPDATE语法:
SELECT … FOR UPDATE [OF columns] [WAIT n | NOWAIT];
例子:
SQL> SELECT * FROM emp WHERE sal=1000FOR UPDATE;
SQL> UPDATE emp SET sal = 3000WHERE sal =1000;
SQL> COMMIT;
SQL> SELECT * FROM scott.emp WHERE sal=1000FOR UPDATE WAIT 5;
SQL> SELECT * FROM scott.emp WHERE sal=1000FOR UPDATE NOWAIT ;
五、表级锁
锁定整个表,限制其他用户对表的访问。
使用命令显示地锁定表,应用表级锁的语法是:
LOCK TABLE table_name IN mode MODE;
- 行共享 (ROW SHARE) – 禁止排他锁定表
- 行排他(ROW EXCLUSIVE) – 禁止使用排他锁和共享锁
- 共享锁(SHARE)
- 锁定表,仅允许其他用户查询表中的行
- 禁止其他用户插入、更新和删除行
- 多个用户可以同时在同一个表上应用此锁
- 共享行排他(SHARE ROW EXCLUSIVE) – 比共享锁更多的限制,禁止使用共享锁及更高的锁
- 排他(EXCLUSIVE) – 限制最强的表锁,仅允许其他用户查询该表的行。禁止修改和锁定表
六、死锁
- 当两个事务相互等待对方释放资源时,就会形成死锁
- Oracle会自动检测死锁,并通过结束其中的一个事务来解决死锁
Oracle入门(十五)之数据库锁相关推荐
- oracle degree 造成阻塞_数据库锁/阻塞分析的一种常用方法
对于一些中小用户来说,日常遇到的最多的问题不外乎表空间与锁的分析.数据库表空间使用率/空间使用率分析似乎很简单,是一条SQL就能搞定的事情,实际上并不简单,这个话题容以后找时间阐述.今天就重点分析下另 ...
- Oracle入门(五)之基本命令操作
一.show (1)查询Oracle系统变量值 语法:show 变量名 show all --查看所有68个系统变量值 show user --显示当前连接用户 注:Oracle的68个系统变量的 ...
- Oracle入门(五F)之11g show spparameter 命令的使用
转载自 oracle 11g show spparameter 命令的使用 当我们要获取oracle数据库当前的参数值时,可以通过查询v$parameter动态性能视图得到,当然了也可以使用show ...
- Oracle入门(五A)之conn命令
一.connect命令 将给定的用户名连接到Oracle数据库.当你运行一个连接命令.站点配置文件.Galgn.SQL和用户配置文件,按顺序处理Login .SQL.连接不重发如果初始连接不成功,请使 ...
- Oracle入门(五B)之desc命令
翻译自 DESCRIBE describe命令 列出指定表的列定义,视图或同义词,或指定函数或存储过程的详述. 语法:desc[ribe] {[模式.]对象[@链接串]} 模式 表示对象驻留的 ...
- iOS学习笔记(十五)——数据库操作(SQLite)
SQLite (http://www.sqlite.org/docs.html) 是一个轻量级的关系数据库.SQLite最初的设计目标是用于嵌入式系统,它占用资源非常少,在嵌入式设备中,只需要几百K的 ...
- java基础第二十五天 数据库
1. mysql数据库基本操作 1.1 mysql.mysqladmin和mysqldump 1.1.1. mysql命令 mysql指令连接数据库连接数据库 mysql -h host_name - ...
- Oracle入门(五D)之如何设置show parameter显示隐含参数
转载自 oracle如何设置show parameter显示隐含参数 在sqlplus中show parameter是显示不了隐藏参数的,需要做一个处理,如下所示: 以SYS用户登录: C:\D ...
- Oracle入门(五E)之讲解show parameter命令模糊查询
转载自 讲解Oracle show parameter命令的小技巧 Oracle参数查询命令show parameter的一个小技巧,可以使用模糊查询,比如我想查询包含db_的参数,那么我就可以用: ...
- Oracle入门(五C)之68个系统变量的key和默认value
Oracle的68个系统变量的key和默认value appinfo 为 OFF 并且已设置为 "SQL*Plus" arraysize 15 autocommit OFF aut ...
最新文章
- pandas使用replace函数将dataframe指定数据列中的特定字符串进行自定义替换(replace substring in dataframe column values)
- 简单的docker-compose编写介绍(包含 nginx+tomcat 实例演示)
- url(r'^index/$',views.index)的含义解释
- 更改应用程序图标_在 Windows 10 version 1903 中查看应用程序是否支持 DPI 感知
- 经典面试题(50):以下代码将输出的结果是什么?
- kafka是什么_Kafka的Controller Broker是什么
- java 1.8.0 安全_RedHat安全更新修复OpenJDK1.8.0版本漏洞
- NumPy Essentials 带注释源码 二、NumPy 数组对象
- Linux查看进程是否占用,Linux 下查看哪个进程占用swap空间
- hashmap扩容_原创 | 我说我了解集合类,面试官竟然问我为啥HashMap的负载因子不设置成1!?
- 谈谈Linux下动态库查找路径的问题
- php加入到jpg,PHP如何将PNG转换成JPG?
- Moore-Penrose伪逆(Moore-Penrose广义逆)
- kinect游戏linux,两台kinect同时运行
- chemdraw如何改中文_教你如何快速自定义ChemDraw默认设置
- python 制作工资条
- Linux使用ping命令扫描整个网段
- 帆软填报-根据角色/权限设置校验规则(含开关配置表校验)
- 【计算机视觉】全景相机标定(MATLAB/opencv)
- redis集群模式详解
热门文章
- 「3.4w字」超保姆级教程带你实现Promise的核心功能
- [C++STL]C++实现queue容器适配器
- python3 beautifulsoup 表格,使用Python中的BeautifulSoup拉取特定的表数据
- 浅谈java spring_浅谈Spring(一)
- pycharm里面下载pip(不用去官网)
- matlab中scrsz的意思,matlab图片c存储方法
- Web Service简介
- Legacy(线段树优化建边跑Dijkstra)
- Codeforces Round #636 (Div. 3) E. Weights Distributing 思维 + bfs
- P4847 银河英雄传说V2 非旋treap