iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >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://www.lsjlt.com/news/39545.html(转载时请注明来源链接)

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • oracle如何解锁封锁的账号
    (1)我们在安装Oracle的时候最后一步有一个管理账户的,里边可以解锁所所需的账户,但是很多的人有时候没有解锁, 下边研究一下使用命令行的方式解锁账户 (2)启动SQL Plus 先登录SYSTEM账户(...
    99+
    2024-04-02
  • oracle数据库锁定后如何解锁
    要解锁Oracle数据库中的锁定对象,可以执行以下步骤:1. 确定锁定对象和锁定级别:首先需要确定哪个对象被锁定以及锁定级别,可以使...
    99+
    2023-09-15
    oracle数据库
  • Oracle的死锁分析
    这篇文章主要介绍“Oracle的死锁分析”,在日常操作中,相信很多人在Oracle的死锁分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Oracle的死锁分析”的疑惑有所帮...
    99+
    2024-04-02
  • 查看oracle被锁的表是谁锁的
    SELECT b.session_id AS sid,         NVL(b.or...
    99+
    2024-04-02
  • Oracle kill如何锁表
    这篇文章主要为大家展示了“Oracle kill如何锁表”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Oracle kill如何锁表”这篇文章吧。 ...
    99+
    2024-04-02
  • ORACLE锁的机制介绍
    这篇文章主要讲解了“ORACLE锁的机制介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ORACLE锁的机制介绍”吧!数据库是一个多用户使用的共享资源。当...
    99+
    2024-04-02
  • Oracle锁表如何解决
    这篇文章主要介绍“Oracle锁表如何解决”,在日常操作中,相信很多人在Oracle锁表如何解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Oracle锁表如何解决”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-30
  • Oracle 解除锁定进程
    一、碰到的问题:    1、修改表结构时,Oracle提示“资源正忙,要求制定NOWAIT……”——此处我修改的是字段长度,从200增加到1000. &nb...
    99+
    2024-04-02
  • oracle怎么给表加锁
    在Oracle中,可以使用`LOCK TABLE`语句来给表加锁。加锁可以防止其他会话对表进行修改,直到锁被释放。加锁的语法如下:`...
    99+
    2023-08-23
    oracle
  • Oracle中锁(lock)的用法
    数据库锁介绍: https://www.jb51.net/article/248863.htm 一、查询oracle锁定的表: 1、锁相关表 SELECT * FROM v$...
    99+
    2024-04-02
  • Oracle数据库表被锁怎么查询和解锁
    这篇文章主要介绍“Oracle数据库表被锁怎么查询和解锁”,在日常操作中,相信很多人在Oracle数据库表被锁怎么查询和解锁问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Oracle数据库表被锁怎么查询和解锁...
    99+
    2023-07-05
  • ORACLE 锁机制是怎样的
    这期内容当中小编将会给大家带来有关ORACLE 锁机制是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 http://blog.csdn...
    99+
    2024-04-02
  • oracle中rollback怎么释放锁
    在Oracle中,ROLLBACK语句会撤销未提交的事务,并释放相关的锁。当一个事务被回滚时,Oracle会自动释放事务中涉及的所有...
    99+
    2024-04-18
    oracle
  • oracle如何查看被锁的表以及解锁方法
    这篇文章给大家分享的是有关oracle如何查看被锁的表以及解锁方法的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。--以下几个为相关表SELECT * FROM v$loc...
    99+
    2024-04-02
  • oracle什么情况下会锁表
    oracle在数据备份和还原、数据迁移和升级、数据修复和维护、数据加载和清除和数据查询和分析的情况下锁表。在使用表锁时,需要注意合理地控制锁定范围和锁定时间,以提高数据库的性能和并发访问能力。本教程操作环境:windows10系统、Orac...
    99+
    2023-07-10
  • oracle中解决锁表的命令
    oracle 锁表问题可以通过以下命令解决:查看已锁定的表:select * from v$locked_objects;释放表锁:alter system kill sess...
    99+
    2024-05-09
    oracle
  • Oracle锁的面试题有哪些
    本篇内容介绍了“Oracle锁的面试题有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!请问Oracle...
    99+
    2024-04-02
  • Oracle和MySQL中有意向锁吗
    这篇文章主要介绍“Oracle和MySQL中有意向锁吗”,在日常操作中,相信很多人在Oracle和MySQL中有意向锁吗问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Orac...
    99+
    2024-04-02
  • oracle锁表问题怎么处理
    本篇内容介绍了“oracle锁表问题怎么处理”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • oracle处理锁表基本操作
    查询锁表 select object_name,machine,s.sid,s.serial# from v$locked_object l,dba_objects o ,v$session...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作