当前位置:首页 > 开发 > 数据库 > 正文

关于oracle锁的分析-驴妈妈旅游网DBA

发表于: 2011-08-19   作者:bywei   来源:转载   浏览次数:
摘要: 1.什么是ORACLE锁 数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。加锁就是实现数据库并发控制的一个非常重要的技术。 2.ORACLE锁的类型 在 数据库中有两种基本的锁类型:排它锁(Exclusive Locks,即X锁)和共享锁(Share Locks,

1.什么是ORACLE锁
数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。加锁就是实现数据库并发控制的一个非常重要的技术。


2.ORACLE锁的类型
在 数据库中有两种基本的锁类型:排它锁(Exclusive Locks,即X锁)和共享锁(Share Locks,即S锁)。当数据对象被加上排它锁时,其他的事务不能对它修改。加了共享锁的数据对象可以被其他事务读取,但不能被删除和修改。数据库利用这 两种基本的锁类型来对数据库的事务进行并发控制。

?
根据保护的对象不同,Oracle数据库锁可以分为以下几大类:DML锁 (data locks,数据锁),用于保护数据的完整性;DDL锁(dictionary locks,字典锁),用于保护数据库对象的结构,如表、索引等的结构定义;内部锁和闩(internal locks and latches),保护 数据库的内部结构。

在Oracle数据库中,DML锁主要包括TM锁和TX锁,其中TM锁称为表级锁,TX锁称为事务锁或行级锁。?
当 Oracle执行DML语句时,系统自动在所要操作的表上申请TM类型的锁。当TM锁获得后,系统再自动申请TX类型的锁,并将实际锁定的数据行的锁标志 位进行置位。这样在事务加锁前检查TX锁相容性时就不用再逐行检查锁标志,而只需检查TM锁模式的相容性即可,大大提高了系统的效率。TM锁包括了SS、 SX、S、X 等多种模式,在数据库中用0-6来表示。不同的SQL操作产生不同类型的TM锁。

TM锁的类型0 none?1 NULL 空 Select?2 SS(Row-S) 行级共享锁,其他对象?只能查询这些数据行 Select for update、Lock for?update、
Lock row share?3 SX(Row-X) 行级排它锁,?在提交前不允许做DML操作 Insert、Update、?Delete、Lock row share?4 S(Share) 共享锁 Create index、Lock share?5 SSX(S/Row-X) 共享行级排它锁 Lock share row exclusive?6 X(Exclusive) 排它锁 Alter table、Drop able、Drop index、Truncate table 、Lock exclusive

Oracle举例

 

 

推荐交流博客
程序员百味    百味创富社区 

 

 

关于oracle锁的分析-驴妈妈旅游网DBA

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
Enabling Remote HTTP Connection to the Database Database Home Page > Administration > M
SYSTEM用户查某个用户下的表 select * from dba_tables t where t.OWNER='G_M' 查所有sequence selec
软件简介: DBA SQL TREE For Oracle 是一款为Oracle DBA或专业技术人员量身定做的一款常用SQL维护
oracle instance:oracle实例 一个实例只能对应一个数据库 一个数据库可以对应多个实例 instance由内
SGA重要组成部分 SGA包含如下内存区域: 共享池 数据块缓冲区 重做日期缓冲 其他区域 查看sga SGA_M
sys和system用户区别 1)最重要的区别,存储的数据的重要性不同 sys所有oracle的数据字典的基表和视
日常维护中,经常会碰到线程被阻塞,导致数据库响应非常慢,下面就看看如何获取是哪个线程导致了阻
关于Update语句的锁 环境:MSSQL2005,在Read Committed级别 语句A: begin tran Update Table Set f1
环境:MSSQL2005,在Read Committed级别 语句A: begin tran Update Table Set f1='xxx' where f2='tt
原文: 人人都是 DBA(XV)锁信息收集脚本汇编 什么?有个 SQL 执行了 8 秒! 哪里出了问题?臣妾不知
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号