oracle19C之lock table

发布时间:2024年01月17日

??官网地址:LOCK TABLE

欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯.

LOCK TABLE

目的

使用LOCK?TABLE?用指定的方式锁定一个或多个表、表分区或表子分区的语句。此锁手动覆盖自动锁定,允许或拒绝其他用户在操作期间访问表或视图。

一些形式的锁可以同时放在同一个表上。其他锁只允许一张桌子上的锁。

锁定的表一直被锁定,直到您提交事务或回滚它,或者是完全的,或者是在锁定表之前被保存在一个保存点上。

锁不会阻止其他用户查询表。查询从不把锁放在桌上.读者从不阻挡作家,作家从不阻挡读者。

另见:

先决条件

表或视图必须在您自己的架构中,或者您必须拥有LOCK?ANY?TABLE?系统特权,或您必须拥有任何对象特权(除了READ?表上或视图上的对象特权。

语法的

锁表?::=

图片来自官网原文

partition_extension_clause?::=

图片来自官网原文

语义学

图解

指定包含表或视图的架构.如果你忽略了schema?,然后甲骨文数据库假设表或视图在您自己的架构中。

TABLE?|?VIEW

指定要锁定的表或视图的名称。

如果你指定view?然后甲骨文数据库锁定视图的基表。

如果你指定partition_extension_clause?,然后甲骨文数据库首先获得了表上的隐式锁。表锁与您为分区或子分区指定的锁相同,有两个例外:

  • 如果你指定SHARE?锁定子分区,然后数据库获得一个隐式的ROW?SHARE?把它锁在桌上。

  • 如果你指定EXCLUSIVE?锁定子分区,然后数据库获得一个隐式的ROW?EXCLUSIVE?把它锁在桌上。

如果你指定PARTITION?和table?经过组合分区,然后数据库获得对分区的所有子分区的锁。

锁定表的限制

以下限制适用于锁定表:

  • 如果view?是层次结构的一部分,那么它必须是层次结构的根。

  • 您只能获取自动列表分区表中现有分区的锁。也就是说,当您指定下列语句时,分区键值必须对应于表中已经存在的分区;它不能对应于稍后可能根据需求创建的分区:

    LOCK TABLE ... PARTITION FOR (partition_key_value) ...

dblink

指定一个数据库链接到远程甲骨文数据库的表或视图的位置.只有使用甲骨文分布式功能,才能锁定远程数据库上的表和视图。所有的桌子都被LOCK?TABLE?声明必须在同一数据库中。

如果你忽略了dblink?,然后甲骨文数据库假设表或视图在本地数据库上。

另见:

"?远程数据库中对象的引用?"?有关指定数据库连结的资料

锁模?条款

指明下列模式之一:

ROW SHARE

ROW?SHARE?允许对上锁表的并发访问,但禁止用户为独家访问锁定整个表。ROW?SHARE?代表着SHARE?UPDATE?,这是为了与之前版本的甲骨文数据库兼容。

ROW EXCLUSIVE

ROW?EXCLUSIVE?就像ROW?SHARE?,但也禁止锁定SHARE?模式。ROW?EXCLUSIVE?当更新、插入或删除时,会自动获得锁。

SHARE UPDATE

ROW SHARE.?.

SHARE

SHARE允许并发查询,但禁止对锁定的表进行更新。

SHARE ROW EXCLUSIVE

SHARE?ROW?EXCLUSIVE?用于查看整个表,允许其他人查看表中的行,但禁止其他人将表锁在表中。SHARE?模式或更新行。

EXCLUSIVE

EXCLUSIVE允许在上锁的桌子上查询,但禁止在它上进行任何其他活动。

NOWAIT

指定NOWAIT?如果您希望数据库立即返回控件,如果指定的表、分区或表子分区已经被另一个用户锁定。在本例中,数据库返回一个消息,表明另一个用户已经锁定了表、分区或子分区。

WAIT

使用WAIT?以表明LOCK?TABLE?语句应该等待指定的秒数来获得DML锁。对价值没有限制的integer?.

如果你不指明NOWAIT?也不WAIT?然后,数据库无限期地等待,直到表可用,并锁定它,然后将控件返回给您。当数据库与DML语句同时执行DDL语句时,有时会导致超时或死锁。数据库检测这种超时和死锁,并返回错误。

另见:

甲骨文数据库管理员指南?有关锁定表的更多信息

例子

锁定表格:示例

以下声明锁定了employees?使用独家模式的表,但如果另一个用户已经锁定了表,则不必等待:

LOCK TABLE employees
   IN EXCLUSIVE MODE 
   NOWAIT; 

以下语句锁定远程employees?可通过数据库链接访问的表格remote?:

LOCK TABLE employees@remote 
   IN SHARE MODE;
文章来源:https://blog.csdn.net/a309450028a/article/details/135656143
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。