oracle 数据库锁类型 TM锁和TX锁

问题描述

oracle 数据库锁类型 TM锁和TX锁

oracle 9i 10g 编程艺术书中对oracle 的锁类型有三种分类:DML锁,DDL 锁 以及 内部锁和闩
针对DML 锁并没有详细的介绍,只说明有TM(表)锁 和TX(行)锁
网上搜索了很多资料,在资料中有具体的分类

问题是:表头说这些锁都是TM锁...
但是我怎么感觉2,3 都属于TX锁呢?2,3 到底是TM 锁还是 TX 锁呢?

解决方案

TX锁和TM锁不是互斥的,DML 锁 先由TM锁获取表级锁,然后TX 在对具体行修改。
这里的2 和3 不是S 和 X 是两种锁的模式。加了排他锁,其他的只能在队列中等待。
这是我的理解,不知道对你有没有帮助,共同进步吧。

时间: 2024-08-27 13:49:08

oracle 数据库锁类型 TM锁和TX锁的相关文章

使用Oracle数据库登录时被告知用户被锁怎么解决_oracle

在登陆时被告知test用户被锁 1.用dba角色的用户登陆,进行解锁,先设置具体时间格式,以便查看具体时间 SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'; Session altered. 2.查看具体的被锁时间 SQL> select username,lock_date from dba_users where username='TEST'; USERNAME LOCK_DATE --------------

哪位大神指导一下,关于Oracle数据库中类型varchar2(2) 存储汉字的问题

问题描述 哪位大神指导一下,关于Oracle数据库中类型varchar2(2) 存储汉字的问题 大神们跪求招数:orcale数据库中的一个字段YXQDW(有效期单位) 类型varchar2(2) 才两字节 用来存一个汉字,比如"年",我的项目(C#)一个汉字占用3个字节, 写SQL语句 insert不进去啊,提示字段范围超出了.难不成要像blob字段那样写?或者有什么更好的方式能将该字段插入呢?万分感激! 解决方案 可以换成nvarchar(2),这个是可变长度

oracle 数据库 archar 类型 存放的是数字值,怎么按数字大小排序

问题描述 oracle 数据库 archar 类型 存放的是数字值,怎么按数字大小排序 select stu.numstu.namestu.class_idstu.class_name from student stuclass cs on cs.class_id=stu.class_idorder by stu.num 这个语句要按 stu.num 排序,但是数据库类型是varchar存放的是数字,怎么按大小排序,求助好心人,.. 解决方案 Collections.sort(queryList

通过JDBC操纵Oracle数据库LOB字段的几种情况分析

oracle|数据|数据库 通过JDBC操纵Oracle数据库LOB字段的几种情况分析纵横软件制作中心 雨亦奇2003-6-10 15:14:19在Oracle中,LOB(Large Object,大型对象)类型的字段现在用得越来越多了.因为这种类型的字段,容量大(最多能容纳4GB的数据),且一个表中可以有多个这种类型的字段,很灵活,适用于数据量非常大的业务领域(如图象.档案等).而LONG.LONG RAW等类型的字段,虽然存储容量也不小(可达2GB),但由于一个表中只能有一个这样类型的字段的

通过JDBC操纵Oracle数据库LOB字段的分析

在Oracle中,LOB(Large Object,大型对象)类型的字段现在用得越来越多了.因为这种类型的字段,容量大(最多能容纳4GB的数据),且一个表中可以有多个这种类型的字段,很灵活,适用于数据量非常大的业务领域(如图象.档案等).而LONG.LONG RAW等类型的字段,虽然存储容量也不小(可达2GB),但由于一个表中只能有一个这样类型的字段的限制,现在已很少使用了.  LOB类型分为BLOB和CLOB两种:BLOB即二进制大型对象(Binary Large Object),适用于存贮非

向Oracle数据库的CLOB属性插入数据报字符串过长错误_oracle

今天在项目中向数据库的CLOB属性插入一段篇文章(1000~2000)字就会报一个字符串过长的错误. 网上说用流来处理,没有这么做.这像是一个Bug,只要把插入的数据,默认扩充到2000以上就ok了. 下面是这段代码: if((temp.length()>=1000)&&(temp.length()<=2000)){ temp=StringUtils.rightPad(temp, 2008); } 使用StringUtils的rightPad方法使没超过2000的部分,在右边自

理解oracle锁和闩(3)TX锁和TM锁

oracle没有锁管理器和锁列表,这样可以避免行级锁维护的开销和行级锁数量不足导致的争用问题.在Oracle的每行数据上,都有一个标志位来表示该行数据是否被锁定,要查看某一行是否被锁定,必须直接找到这一行,而不要指望能从哪个列表得到答案,事务只是找到数据.其locking过程如下: ㈠ 找到想锁定的那一行的地址 ㈡ 到达那一行 ㈢ 锁定这一行 在这行的位置,而非某个锁列表.如果这一行已经锁定,则等待锁定它的事务结束,除非使用nowait选项. 保护元数据---->TM锁(表级锁) 保护数据 --

介绍了Oracle数据库锁的种类及研究

本文通过对Oracle数据库锁机制的研究,首先介绍了Oracle数据库锁的种类,并描述了实际应用中遇到的与锁相关的异常情况,特别对经常遇到的由于等待锁而使事务被挂起的问题进行了定位及解决,并对死锁这一比较严重的现象,提出了相应的解决方法和具体的分析过程. 数据库是一个多用户使用的共享资源.当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况.若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性. 加锁是实现数据库并发控制的一个非常重要的技术.当事务在对某

Oracle 表级锁(TM锁)

假设某个用户(假设为A)发出如下的语句更新一条记录: SQL> update employees set last_name='HanSijie' where employee_id=100; 上面的例子,这时A用户已经发出了更新employee_id为100的记录的SQL语句.当A还没有提交之前 ,另外一个用户D发出下面的语句: SQL> drop table employees; 由于用户A还没有提交所做的事务,因此该事务还没有结束,其他用户还不能删除该表,否则A所发 出的事务就无法正常结