【Oracle】锁
Oracle所有锁的分配和管理都是数据库管理系统自动完成的,不需要用户进行干预。
v$lock表说明
|
字段 |
描述 |
| ADDR | Address of lock state object |
| KADDR | Address of lock |
| SID | 会话的sid,可以和v$session 关联 |
| TYPE | 所获得的或等待的锁类型,取值如下: ①Tx --事务 ②TM --表锁或DML ③MR --介质恢复 ④ST --磁盘空间事务 |
| ID1 | 根据TYPE不同而有所不同 对于TM 锁 ID1表示被锁定表的object_id 可以和dba_objects视图关联取得具体表信息 对于TX 锁 ID1以十进制数值表示该事务所占用的回滚段号和事务槽slot number号,其组形式: |
| ID2 | 根据TYPE不同而有所不同 对于TM 锁 ID2 值为0 对于TX 锁 ID2 以十进制数值表示环绕wrap的次数,即事务槽被重用的次数 |
| LMODE |
|
| REQUEST | 大于0时,表示当前会话被阻塞,其它会话占有改锁的模式 |
| TIME |
|
| BLOCK |
|
若LMODE含有一个不是0或1的数值,则表明进程已经获得一个锁。若REQUEST列含有一个不是0或者1的数值,则表明进程正在等待一个锁,若LMODE列含有的数值全部是0,则表明进程正在等待一个锁。
监控锁
查看所信息
SELECT B.SID,C.USERNAME,C.TERMINAL,B.ID2,B.TYPE,B.LMODE,B.REQUEST
FROM
DBA_OBJECTS A,V$LOCK B,V$SESSION C
WHERE A.OBJECT_ID(+)=B.ID1
AND B.SID=C.SID
AND C.USERNAME IS NOT NULL
ORDER BY B.SID,B.ID2
以下是在SQL*Plus中运行结果

set echo off:显示start启动的脚本中的每个sql命令,缺省为on
set pagesize 60:输出每页行数,缺省为24,为了避免分页,可设定为0。
column SID format 999 heading "SessionID":格式化SID列数字显示并且列名为SessionID
column USERNAME format A8:字段长度格式化为8 (Trunc为截取的意思)
format的格式元素
| 元素符号 | 说明 | 例子 |
| An | 为varchar类型的列的列内容设置宽度,如果内容超过指定的宽度,则内容自动换行 | A10 |
| 9 | 设置number列的现实格式 | 999999 |
| $ | 浮动的货币符号 | $99 |
| L | 本地的货币符号 | L99 |
| . | 小数点位置 | 9999.9 |
| , | 千位分隔符 | 9,999 |
锁的分类
| 锁 | 描述 | 加锁的方法 |
| 行共享锁RS | 对数据表定义行共享锁后,如果事务A获得,那么A事务可以进行并发查询、插入、删除及加锁,但不能以排他的方式存取该数据表 | lock table xx in row share mode |
| 行排他锁RX | 对数据表定义了行排他锁后,如果被事务A获得,那么A事务对数据表中的行数据有排他权限,其他事物可以对统一数据表进行增删改查及加锁,但是不能使用以下3种方式加锁: ①行共享锁 ②共享行排他锁 ③行排他锁 |
lock table xx in row exclusive mode |
| 共享锁S | 对数据表定义共享锁后,如果事务被A获得,其他事务可以执行并发查询和加共享锁但不能修改表,也不能使用以下3种方式加锁: ①排他锁 ②共享行排他锁 ③行排他锁 |
lock table xx in share mode |
| 共享行拍他锁SRX | 对数据表定义共享行拍他锁后,如果事务被A获得,其他事务可以执行并发查询和对其他数据行加锁,但不能修改表,也不能使用以下4种方式加锁: ①排他锁 ②共享行排他锁 ③行排他锁 ④共享锁 |
lock table xx in share row exclusive mode |
| 排他锁 | 排他锁是最严格的锁。如果事务被A获得,A可以执行对数据库的读写操作,其他事务可以执行查询,但是不能插入和修改、删除操作 | lock table xx in exclusive mode |
锁表案例
打开2个SQL*Plus窗口,此处我把这两个窗口的名称叫做P1,P2,分别连接到同一个用户;
在数据库中有表TMP005,结构与数据如下:
| TY |
| A |
| B |
| C |
1.先在P1窗口删除值为A的记录

2.先在P2窗口删除值为B的记录

3.然后回到P1删除值为B的记录

4.接着回到P2删除值为A的记录

从上面2图我们可以初步发现,死锁已经形成了,接下来就是解锁
解锁操作:https://www.cnblogs.com/OliverQin/p/9593239.html
【Oracle】锁的更多相关文章
- oracle 锁的介绍 (转)
本文转自:http://blog.csdn.net/gyb2013/article/details/6929697 一.什么是锁: Oracle的锁机制是一种轻量级的锁定机制,不是通过构建锁列表来进行 ...
- 【锁】Oracle锁系列
[锁]Oracle锁系列 1 BLOG文档结构图 2 前言部分 2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ...
- oracle锁表问题解决方法
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp52 Oracle数据库操作中,我们有时会用到锁表查询以及解锁和kill进程 ...
- Oracle 锁机制探究
以前虽然在网上看到很多关于Oracle锁机制的描述,但总感觉哪里有缺陷不适合自己,因此花了点时间参考官网以及Tom Tyke的<Oracle 9i/10g/11g编程艺术>一书整理了一下O ...
- oracle锁表
一.锁表的处理 Oracle锁表比较简单,查询锁表的session杀掉就可以了. 1.以下几个为相关表 SELECT * FROM V$LOCK; SELECT * FROM V$SQLAREA; S ...
- oracle锁---原理篇
在现代的多用户多任务系统中,必然会出现多个用户同时访问共享的某个对象,这个对象可能是表,行,或者内存结构,为了解决多个用户并发性访问带来的数据的安全性,完整性及一致性问题,必须要有一种机制,来使对这些 ...
- Oracle锁表查询和解锁方法
数据库操作语句的分类 DDL:数据库模式定义语言,关键字:create DML:数据操纵语言,关键字:Insert.delete.update DCL:数据库控制语言 ,关键字:grant.remov ...
- oracle锁表查询
ORACLE EBS操作某一个FORM界面,或者后台数据库操作某一个表时发现一直出于"假死"状态,可能是该表被某一用户锁定,导致其他用户无法继续操作 复制代码代码如下: --锁表查 ...
- Oracle 锁问题处理
Oracle 锁问题处理 锁等待问题是一个常见的问题 查看持有锁的对象 查看事务正在执行的语句,与应用确认是否能够kill kill 对应的session
- Oracle 锁机制
本文参考自:ORACLE锁机制 1.oracle是一个多用户使用的共享资源,当多个用户并发的操作同一数据行时,那么在oracle数据库中就会存在多个事务操作统一数据行的操作,如果不对并发操作进行控制, ...
随机推荐
- clip-path 教程:使用 CSS 中的 clip-path 轻松实现多边形
作为一个前端开发,一个主要的工作就是来实现设计师设计的UI界面.而在UI界面中,各种各样的形状元素应用则是随处可见,比如三角形: 以前碰到这种形状的时候,会使用各种黑科技的技巧,比如使用CSS中的bo ...
- NGINX + TOMCAT7 + MEMCACHED 实现SESSION 共享
原文地址: http://my.oschina.net/u/1791256/blog/283064 TOMCAT7.0+ NGINX + MEMCACHED + memcached-session-m ...
- 物联网(IoT)的11大云平台:AWS、Azure、谷歌云、Oracle、
物联网(IoT)的11大云平台:AWS.Azure.谷歌云.Oracle. 2018-11-06 14:02 云技术 关键词:物联网AzureGoogleSalesforce云计算 导读:现在,我们将 ...
- [17] 楼梯(Stairs)图形的生成算法
感觉这图形怎么看怎么像搓衣板. 顶点数据的生成 bool YfBuildStairsVertices ( Yreal width, Yreal length, Yreal height, Yuint ...
- RequireJS 参考文章
入门: http://www.cnblogs.com/snandy/archive/2012/05/22/2513652.html http://www.cnblogs.com/snandy/arch ...
- assets raw 资源 AssetManager
assets raw 目录简介 assets核心特性:不会被编译成二进制,支持子目录(可以分类,这是相对raw目录最大的好处),通过文件名访问,调用getAssets通过AssetManager访问 ...
- $.jsonp()的简单使用
// jsonp 获取 json 数据: $.jsonp({ url: GLOBAL.baseUrl + '/company/mobi_getposter.action', callback: 'ca ...
- centos7 JDK1.8
安装之前先检查一下系统有没有自带open-jdk rpm -qa |grep java rpm -qa |grep jdk 卸载找出的已安装Java相关rpm文件:rpm -e --nodeps 重新 ...
- linux文件系统命令(1)---概述
一.目的 本系列博文将介绍linux文件系统相关的命令. linux文件系统分为4个层面:用户空间程序.系统调用.内核虚拟文件系统以及实际文件系统.本系列文章仅仅涉及用户空间程序的操作及用法.旨在掌握 ...
- Android -- uses-sdk:minSdkVersion 10 cannot be smaller than version L declared in library com.android.support:appcompat-v7:21.0.0-rc1
这是一个报错,是我在Android Studio上添加完Support-v4和v7包之后爆出的错误,百度了好久也没有百度到.当时我的项目有minSdkVersion 19. 设置版本最小为L的时候也会 ...