Oracle锁大类

1.DML锁 (SELECT, INSERT, UPDATE, DELETE, MERGE是对数据库加的锁, 可能是行锁,也可能是表锁)

2.DDL锁 (Create, Alter时对数据库加的锁, 保护对象结构定义)

3.内部锁和闩latch

DML锁

TX锁(事物锁), 事物开始时持有这个锁,知道事物提交或回滚。

注意:Oracle锁不会对系统带来更多的开销,原因是Oralce没有一个传统的锁管理器。

通过查询V$transaction, v$session, v$lock可以得到当前事物,会话和被锁定的表。实验可以通过打开两个sqlplus 回话,然后update同一行数据,然后查看这几个dynamic view.

v$transacion 对应每个活动transction对应一行

v$session, 显示已经登录的会话

v$lock, 对于持有所有enqueue队列锁和正在等待锁的会话,都包含一条。

通过查询这几个视图,可以看到系统的状态

select username,
v$lock.sid,
trunc(id1/power(2,16)) rbs,
bitand(id1,to_number('ffff','xxxx'))+0 slot,
id2 seq,
lmode,
request
from v$lock, v$session
where v$lock.type = 'TX'
and v$lock.sid = v$session.sid
and v$session.username = USER;

例子结果

USERNAME         SID        RBS       SLOT        SEQ      LMODE    REQUEST
--------- ---------- ---------- ---------- ---------- ---------- ----------
OPS$TKYTE        703          2         26       8297          6          0

select XIDUSN, XIDSLOT, XIDSQN  from v$transaction;
 
    XIDUSN    XIDSLOT     XIDSQN
---------- ---------- ----------
         2         26       8297

对返回结果的一些说明

v$lock.LMODE=6表示是一个排他锁,REQUEST=0表示已经持有这个锁。

v$lock不是一个锁表,比如对于一个更新4行的update语句,锁定了4行,你不会在v$lock表中找到4行条目,而只有一行。

RBS, SLOT, SEQ值与v$transaction中信息匹配。

ID1, ID2做了一些处理。

INITRANS, MASTRANS

我们一开始锁oracle的锁不会带来额外开销,数据本身管理锁定和事物信息。这些锁和事物信息和数据一起存储在块中一开始一段中,叫事物表,这里说一下这个块开销。 在创建表的时候,有两个参数决定了这个事物表的大小, 他们是INITRANS, MAXTRANS

INITRANS, 这个结构的初始大小,对于索引和表,default=2

MAXTRANS, 这个结构的最大大小,default=255。

如果块上有很多行数据,那么并发修改这个块上的数据的事物数就会受到限制,多出的修改transaction就需要等待。

Oracle 6 - 锁和闩 - 锁类型的更多相关文章

  1. SQL Server里的闩锁介绍

    在今天的文章里我想谈下SQL Server使用的更高级的,轻量级的同步对象:闩锁(Latch).闩锁是SQL Server存储引擎使用轻量级同步对象,用来保护多线程访问内存内结构.文章的第1部分我会介 ...

  2. 读书摘要:第七章 闩Suan锁和自旋锁

    摘要: 1.闩锁就像是内存上的锁,随着越来越多的线程参与进来,他们争相访问同一块内存,导致堵塞.2.自旋锁就是闩锁,不同之处是如果访问的内存不可用,它将继续检查轮询一段时间.3.拴锁和自旋锁是我们无法 ...

  3. Oracle 6 - 锁和闩 - transaction的可串行化

    本文主要内容 1.transaction的可串行化 2.数据库并发带来的问题, dirty read, Nonrepeatable reads, Phantoms幻读 3.隔离级别和2中的问题 4. ...

  4. ORACLE【2】:锁机制及解锁

    1. 锁的基本知识 根据要保护的对象不同,oracle的数据锁可以分成以下几类:DML锁,(data locks)数据锁,用于保护数据的完整性:DDL锁(dictionary locks),用于保护数 ...

  5. SQL Server里的闩锁耦合(Latch Coupling)

    几年前,我写了篇关于闩锁和为什么SQL Server需要它们的文章.在今天的文章里,我想进一步谈下非缓存区闩锁(Non-Buffer Latches),还有在索引查找操作期间,SQL Server如何 ...

  6. 通过Oracle补充日志,找到锁阻塞源头的SQL

    问题背景: 有时会考虑一件事情,如果在Oracle环境下出现了锁阻塞的情况,如何定位到SQL源头(通过session.lock.transaction等视图仅能定位到会话)?或许有人会想有没有可能通过 ...

  7. Oracle数据库悲观锁与乐观锁详解

    数据的锁定分为两种方法,第一种叫做悲观锁,第二种叫做乐观锁.什么叫悲观锁呢,悲观锁顾名思义,就是对数据的冲突采取一种悲观的态度,也就是说假设数据肯定会冲突,所以在数据开始读取的时候就把数据锁定住.而乐 ...

  8. MySQL中的latch(闩锁)详解——易产生的问题以及原因分析

    Latch 什么是latch: 锁是数据库系统区别与文件系统的一个关键特性.锁机制用于管理对共享资源的并发访问.Innodb存储引擎在行级别上对表数据上锁,这固然不错.但是Innodb也会在多个地方使 ...

  9. Oracle的悲观锁和乐观锁

    为了得到最大的性能,一般数据库都有并发机制,不过带来的问题就是数据访问的冲突.为了解决这个问题,大多数数据库用的方法就是数据的锁定. 数据的锁定分为两种方法,第一种叫做悲观锁,第二种叫做乐观锁.什么叫 ...

随机推荐

  1. 使用inotify检测linux目录内文件变化

    #include <unistd.h> #include <sys/inotify.h> #include <stdio.h> #include <error ...

  2. JQGrid+Webservice+LINQ

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="jqgridtest.asp ...

  3. CentOS 6.X安装LAMP最高版本环境

    #------------CentOS .X安装LAMP最高版本环境------------------ #! /bin/sh   #安装Apache yum install httpd -y #.关 ...

  4. 【转载】DataGridView 使用集合作为数据源,并同步更新

    原文地址:http://hi.baidu.com/netyro/item/7340640e36738a813c42e239 今天做项目时遇到一个挠头的问题,当DataGridView的数据源为泛型集合 ...

  5. 免费GIT托管

    http://www.gitcentral.com http://www.projectlocker.com http://gitfarm.appspot.com http://code.google ...

  6. 边界函数Bounding Function(成长函数的上界)

    根据成长函数的定义,猜测    -->break point K restricts maximum possible mh(N) a lot for N>k bounding funct ...

  7. openerp学习笔记 自定义小数精度(小数位数)

    小数位数标识定义: lx_purchase/data/lx_purchase_data.xml <?xml version="1.0" encoding="utf- ...

  8. ThinkPHP中initialize和construct调用父类的区别

    http://blog.topok.net/archives/142 需要加parent::_initialize();

  9. 开发一个iOS应用没有那么容易

    导读:这是来自新加坡的 iOS 开发者 Kent Nguyen 发表在1月底的一篇博文.这篇吐槽文在 iOS 开发圈子里流传甚广,从原文150多个评论就可见一斑,现翻译如下. 让我们开门见山吧:做一个 ...

  10. [转]宏的高级使用--##,__VA_ARGS__, __FILE__, __FUNCTION__等

    [转]宏的高级使用--##,__VA_ARGS__, __FILE__, __FUNCTION__等 http://blog.csdn.net/yiya1989/article/details/784 ...