返回顶部
首页 > 资讯 > 数据库 >Oracle锁
  • 962
分享到

Oracle锁

2024-04-02 19:04:59 962人浏览 独家记忆
摘要

1、定义:锁(lock)机制用于管理对共享资源的并发访问(使对这些共享资源的并发性访问串行化),同时还能提供数据完整性和一致性。2、oracle锁特征:在Oracle中锁不是稀有资源;Oracle不会自动升

1、定义:

(lock)机制用于管理对共享资源的并发访问(使对这些共享资源的并发性访问串行化),同时还能提供数据完整性和一致性。

2、oracle锁特征:

在Oracle中锁不是稀有资源;

Oracle不会自动升级锁,永远不会;

在 Oracle 中,行级锁没有相关的开销

3、Oracle锁分类

DML锁

DDL锁

内部锁或LATCH

4、锁一览图

锁代码

锁模式名称

锁模式简写

锁模式级别

备注说明

隐式产生锁

显式产生锁

0

None

None


无锁模式,select操作便是这样的情况



1

Null

Null

表级锁

Oracle在内存中自动加的锁,主要起通知作用



2

Row-S

SS

表级锁


10g版本前:FOR UPDATE

LOCK TABLE 表名 IN ROW SHARE MODE;

3

Row-SX

SX

表级锁

行级排它锁,主要由DML语句引起

10g版本后:FOR UPDATEDML语句

LOCK TABLE 表名 IN ROW EXCLUSIVE MODE;

4

Share

S

表级锁

共享锁、只读锁


LOCK TABLE 表名 IN  SHARE MODE;

5

S/Row-X

SSX

表级锁

共享行排它锁


LOCK TABLE 表名 IN SHARE ROW EXCLUSIVE MODE;

6

Exclusive

X

表级锁/行级锁

排它锁



R:Row  S:Share X:Exclusive


5、TM锁兼容性


N

SS

SX

S

SSX

X

N

YES

YES

YES

YES

YES

YES

SS

YES

YES

YES

YES

YES

NO

SX

YES

YES

YES

NO

NO

NO

S

YES

YES

NO

YES

NO

NO

SSX

YES

YES

NO

NO

NO

NO

X

YES

NO

NO

NO

NO

NO


6、锁常用sql

--测试子表:成绩表

SELECT * FROM score;

--测试父表:学生信息表

SELECT * FROM student;

--查询当前会话值

SELECT * FROM v$mystat WHEREROWNUM='1';

--动态性能视图 v$locked_object 各字段的含义

SELECT l.XIDUSN         AS回滚段号,

      l.XIDSLOT         AS回滚槽号,

      l.XIDSQN          AS回滚序列号,

      l.OBJECT_ID       AS被锁对象ID,

      l.SESSioN_ID      AS持有锁对象会话ID,

      l.ORACLE_USERNAME AS持有锁的oracle用户名,

      l.OS_USER_NAME    AS持有锁操作系统用户名,

      l.PROCESS         AS操作系统进程号,

      l.LOCKED_MODE     AS锁模式

  FROM v$locked_object l;

--当前用户创建的所有对象,列出部分常用字段含义

SELECT uo.object_name AS对象名称,

      uo.object_id   AS对象ID,

       uo.object_typeAS对象类型

  FROM user_objects uo;

--通过v$locked_object与user_objects两表关联可以得出被锁的是哪个表以及是被哪个用户锁的

SELECT uo.object_name   AS对象名称,

      uo.object_type    AS对象类型,

      l.ORACLE_USERNAME AS持有锁的oracle用户名,

      l.LOCKED_MODE     AS锁模式

  FROM v$locked_object l,user_objects uo

 WHERE l.OBJECT_ID =uo.object_id;

--查询所有正在等待获得锁的会话ID及锁类型

SELECT w.waiting_session AS等待锁的会话ID,

      w.holding_session AS持有锁的会话ID,

      w.lock_type       AS锁类型,

      w.mode_held       AS锁机制

  FROM dba_waiters w;

--动态性能视图事务执行列表(未提交状态),BLOCK=1是堵塞者,BLOCK=0是被堵塞者

SELECT * FROM v$transaction_enqueue;

--查询阻挡关系

SELECT (SELECT s.USERNAME FROM v$session s WHERE s.SID = a.SID) AS阻挡者名,

       a.SID AS阻挡者会话ID,

       '正在阻挡'AS行为,

       (SELECT s.USERNAME FROM v$session s WHERE s.SID = b.SID) AS被阻挡者名,

       b.SID AS被阻挡者会话ID

  FROM v$lock a, v$lock b

 WHERE a.ID1 = b.ID1

   AND a.ID2 = b.ID2

   AND a.BLOCK = 1

   AND b.REQUEST > 0;

--根据会话ID查询前一步sql操作语句,这个语句不适合应用程序

SELECT sq.sql_text

  FROM v$sql sq

 WHERE sq.SQL_ID =

       (SELECT s.SQL_ID FROM v$session s WHERE s.SID =&session_id);


您可能感兴趣的文档:

--结束END--

本文标题: Oracle锁

本文链接: https://lsjlt.com/news/39545.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 【锁】Oracle锁系列
    【锁】Oracle锁系列 1  BLOG文档结构图           2  ...
    99+
    2024-04-02
  • Oracle锁
    1、定义:锁(lock)机制用于管理对共享资源的并发访问(使对这些共享资源的并发性访问串行化),同时还能提供数据完整性和一致性。2、Oracle锁特征:在Oracle中锁不是稀有资源;Oracle不会自动升...
    99+
    2024-04-02
  • Oracle锁-共享锁(二)
    一个事务执行dml操作,就会自动加上行共享表锁,以防止其他需要排他锁的事务访问。 一个事务对表新增数据,另一个事务修改表报错显示“资源正忙...”,因为修改该表时需要排他锁。 一个事务修改表数据,或删除表数据,就是真正的影...
    99+
    2016-11-26
    Oracle锁-共享锁(二)
  • Oracle锁表
    SELECT 'Lock' "Status",  a.username "用户名", a.sid "SID", a.s...
    99+
    2024-04-02
  • Oracle 11g-锁
    Oracle 11g-锁Target:1、理解锁定的概念2、掌握select for update的使用3、理解不同锁定的含义 锁的概念:1.锁是数据库用来...
    99+
    2024-04-02
  • oracle 锁表简单解锁
    select * from v$session t1, v$locked_object t2 where t1.sid = t2.SESSION_ID; alter system kil...
    99+
    2024-04-02
  • Oracle锁-行级排它锁(一)
    下一篇:共享锁 学习电子书:https://docs.oracle.com/cd/E18283_01/server.112/e16508/consist.htm#CNCPT1339 什么是排它锁? 每一个事务在修改资源时会获得排他...
    99+
    2016-12-01
    Oracle锁-行级排它锁(一)
  • oracle查看死锁与解锁
    1、查看死锁SELECT  s.username,decode(l.type,'TM','TABLE LOCK','TX','ROW LOCK',NULL) LOCK_LEVEL,o.ow...
    99+
    2024-04-02
  • Oracle 查看锁和释放锁
    --查找sid和serial#SELECT object_name, machine, s.sid, s.serial#FROM gv$locked_object l, dba_objects o,...
    99+
    2024-04-02
  • oracle锁表后怎么解锁
    oracle解锁表的方式:1. 直接连接数据库执行unlock table语句;2. 使用ora_unlock_table函数;3. 查找并关闭持有锁的进程;4. 重启数据库服务器或使用...
    99+
    2024-05-21
    oracle linux
  • oracle 锁用户
    oracle 线上用户老是被锁: 1,查明所有的用户哪些被锁了 SQL> select username,account_status,lock_date from dba_users; USERNAME ACCOUN...
    99+
    2019-08-21
    oracle 锁用户
  • Oracle锁总结
    《oracle的锁》在数据库中必须要了解的几点:1、事务是数据库的核心,他们是好东西2、应该延迟到适当的时刻才提交。不要太快提交,以避免对系统带来压力,这是因为,即使事务很长或很大,也一般不会对系统造成压力...
    99+
    2024-04-02
  • Oracle锁表与解锁的方案
    --ORACLE表被锁原因:具体操作某一个FORM界面,或者后台数据库操作某一个表时发现一直出于"假死"状态, --可能是该表被某一用户锁定,导致其他用户无法继续操作 --查询被锁的表 select b.owner, b...
    99+
    2018-01-12
    Oracle锁表与解锁的方案
  • oracle账户锁定怎么解锁
    如果您遇到 oracle 账户因多次密码输入错误而被锁定,则解锁步骤如下:等待自动解锁(通常为 30 分钟)。重置密码:通过电子邮件索取重置链接或联系客户支持。输入新密码并登录账户。更改...
    99+
    2024-05-21
    oracle 密码重置
  • oracle查询锁表怎么解锁
    oracle 查询语句被锁定时,可通过以下步骤解锁:确定被锁会话 id。终止被锁会话。验证解锁成功。如涉及多个表或会话,重复以上步骤。备份数据,避免解锁带来的数据丢失。考虑显式锁提示(n...
    99+
    2024-05-21
    oracle 数据丢失
  • oracle各种锁表怎么解锁
    解锁 oracle 锁表有以下方法:提交或回滚事务使用 unlock table 语句使用 alter system kill session 语句使用 dbms_lock.releas...
    99+
    2024-05-21
    oracle 并发访问
  • Oracle中锁机制
    锁:oracle 中用来 实现并发访问控制的机制;分类 :表级锁、行级锁;锁的应用:当执行insert、delete、update时,oracle会自动应用行级锁;执行select时不会加锁;select ...
    99+
    2024-04-02
  • oracle锁的机制
    在现代的多用户多任务系统中,必然会出现多个用户同时访问共享的某个对象,这个对象可能是表,行,或者内存结构,为了解决多个用户并发性访问带来的数据的安全性,完整性及一致性问题,必须要有一种机制,来使对这些共享资...
    99+
    2024-04-02
  • ORACLE查看表被锁和删除锁
    (1)锁表查询的代码有以下的形式: select count(*) from v$locked_object; select * from v$locked_object; (2)查看哪个表被锁 select...
    99+
    2018-09-19
    ORACLE查看表被锁和删除锁
  • oracle查看被锁的表和解锁
    --以下几个为相关表SELECT * FROM v$lock;SELECT * FROM v$sqlarea;SELECT * FROM v$session;SELECT ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作