Oracle的TM锁类型

锁模式

锁描述

解释

SQL操作

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

锁定类型
0:none 
1:null 空 
2:Row-S 行共享(RS):共享表锁 
3:Row-X 行专用(RX):用于行的修改 
4:Share 共享锁(S):阻止其他DML操作 
5:S/Row-X 共享行专用(SRX):阻止其他事务操作 
6:exclusive 专用(X):独立访问使用
数字越大锁级别越高, 影响的操作越多。

如果DML没有提交情况下,另一个session提交针对同一资源的DLL,系统报错。

如果DML没有提交情况下,另一个session提交针对同一资源的DML,第二个session会hang住,等待第一个session。

死锁:

系统会系统自动处理,处理方式提出形成死锁的人,错误是ORA-00060

命令行模式处理行级锁

查看锁:

select sid,lock_id from dba_locks where blocking_others='Blocking';

sid列:占用资源sid

select sid from v$lock where type='TX';

block列>0:占用资源sid

block列=0:等待资源sid

SELECT * FROM V$SESSION WHERE BLOCKING_SESSION IS NOT NULL;

sid列:等待资源sid

blocking_session列:占用资源sid

oracle级处理:

杀掉占用资源的session

1. 查询sid和serial#

select sid, serial#
  from v$session
 where sid = (select blocking_session
                from v$session
               where blocking_session is not null)

2. 杀进程

alter system kill session 'sid, serial#' immediate;

杀掉等待资源的session

1. 查询sid和serial#

select sid, serial# from v$session where blocking_session is not null;

2. 杀进程

alter system kill session 'sid, serial#' immediate;

系统级处理:

1. 查询系统pid

select s.sid, p.spid
  from v$session s, v$process p
 where s.paddr = p.addr
   and s.sid = 146

2. 杀进程

kill -9 pid

ORACLE TM锁的更多相关文章

  1. Oracle TM锁和TX锁

    CREATE TABLE "TEST6" ( "ID" ), "NAME" ), "AGE" ,), "SEX ...

  2. 从浅到深掌握Oracle的锁

      1.分别模拟insert,update和delete造成阻塞的示例,并对v$lock中的相应的信息进行说明,给 出SQL演示. Insert示例 会话:SQL> select * from ...

  3. 理解Oracle TM和TX锁

    在Oracle中有很多锁,通过v$lock_type视图可以查看Oracle中所有类型的锁,在本篇文章中我们熟悉一下TM和TX锁的类型 SQL> select * from v$lock_typ ...

  4. Oracle的锁表与解锁

    Oracle的锁表与解锁 SELECT /*+ rule */ s.username, decode(l.type,'TM','TABLE LOCK', 'TX','ROW LOCK', NULL) ...

  5. Oracle基础 锁

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

  6. ORACLE的锁机制

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

  7. [Oracle]TM lock (DML enqueue) 的相容性

    [Oracle]TM lock (DML enqueue) 的相容性 RS(SS):  行共享     LMODE =2 RX(SX):  行独占     LMODE =3 S:       共享   ...

  8. 【Oracle】锁

    Oracle所有锁的分配和管理都是数据库管理系统自动完成的,不需要用户进行干预. v$lock表说明 字段 描述 ADDR Address of lock state object KADDR Add ...

  9. 04 关于oracle的锁的级别以及介绍

    关于oracle的锁的级别以及介绍 oracle造成锁表的情况: 一.查看锁的对象视图:select object_id,session_id,locked_mode from v$locked_ob ...

随机推荐

  1. QT5.3无法自动调用incomingConnection函数的问题(4.7没有这个问题)

    最近将qt4.7的一个工程移到5.3,遇到了几个麻烦事,主要是这个incomingConnection监听后无法自动调用的问题,在4.7上是完全没有问题的,到了5.3就不行,网上也查了下,网友们都是放 ...

  2. Qt中的键盘事件,以及焦点的设置(比较详细)

    Qt键盘事件属于Qt事件系统,所以事件系统中所有规则对按键事件都有效.下面关注点在按键特有的部分: focus 一个拥有焦点(focus)的QWidget才可以接受键盘事件.有输入焦点的窗口是活动窗口 ...

  3. 私有虚函数的特点(C++和Java的机制还有所不同)

    多态性与将实现多态的函数的访问限定符没有任何关系,private 函数仍然可以实现多态,它的指针仍然位于vtbl中,只不过该函数的多态一般只能在基类的内部由其他非虚函数调用该函数的时候反映出来,访问限 ...

  4. Intellij Idea 15 生成serialVersionUID的方法

    默认情况下Intellij IDEA是关闭了继承了Serializable接口的类生成serialVersionUID的警告.如果需要ide提示生成serialVersionUID,那么需要做以下设置 ...

  5. JVM内存区域划分

    前言 Java程序的运行是通过Java虚拟机来实现的.通过类加载器将class字节码文件加载进JVM,然后根据预定的规则执行.Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同 ...

  6. ajax返回JSON时的处理方式

    JSON中对象通过“{}”来标识,一个“{}”代表一个对象,如{“AreaId”:”123”},对象的值是键值对的形式(key:value). json_encode() 该函数主要用来将数组和对象, ...

  7. httpClient.execute之后一直等待

    可能的原因就是之前执行过一次execute,但是没有释放资源. hrp = httpClient.execute(req); //这句释放资源 hrp.getEntity().consumeConte ...

  8. 【笨嘴拙舌WINDOWS】GDI(2)

    古时候,大师舞文之时需要笔墨纸伺候,不同笔,不同墨,作品风格迥异! 以下是windows提供的笔(带有墨): CreatePen(PS_SOLID,0,clRed);                  ...

  9. setTimeOut() 和 setTimeInterval()

    setTimeOut()は.指定された時間「待ってから」指定された動作を行う関数です.setTimeOut():等待指定时间,执行指定方法. setTimeInterval()は.指定された時間「間隔 ...

  10. IOS中bounds和frame

    * 用bounds和frame来修改尺寸是有一些小区别的 三.isEqual:方法 1> 系统会根据对象isEqual方法的返回值来决定两个对象是否相同 * 比如判断对象a和b是否相同,就会查看 ...