• oracle显示锁lock table


    1 ORACLE锁的类型 
    在正常情况下,ORACLE会自动锁住需要加锁的资源以保护数据,
    这种锁是隐含的,叫隐含锁。然而,在一些条件下,这些自动的锁在
    实际应用时并不能满足需要,必须人工加一些锁。这些人工加的锁叫
    显示锁。
    下面指明了会产生隐含锁的SQL语句:
    INSERT;
    UPDATE;
    DELETE;
    DDL/DCL语句。
    下面指明了会产生显示锁的SQL语句:
    SELECT FOR UPDATE;
    LOCK TABLE IN XXX MODE。
    在同时对表进行以上操作的时候,就有可能会产生锁

    减少并发事务处理吧,处理完成之后尽快commit吧

    LOCK TABLE 使用:
    说明 

    此语句用于防止其它并发事务访问或修改表。

    语法 

    LOCK TABLE table-name
    WITH HOLD ]
    IN { SHARE | EXCLUSIVE } MODE

    参数 

    table-name    表必须是基表,而不是视图。因为临时表数据是当前连接的本地数据,所以锁定全局临时表或局部临时表都无效。

    WITH HOLD 子句    如果指定该子句,锁一直保持到连接结束时。如果没有指定该子句,则提交或回退当前事务时将释放锁。

    SHARE 模式    禁止其它事务修改表,但允许它们读取表。在该模式下,只要没有其它的事务锁定所修改的行,就可以间接地或显式地使用 LOCK TABLE 更改表中的数据。

    EXCLUSIVE 模式    禁止其它事务访问表。任何其它事务都不能对表执行查询、任何更新或任何其它操作。如果用 LOCK TABLE t IN EXCLUSIVE MODE 排它性地锁定表 t,则服务器的缺省行为是不获取 t 的行锁定。将 SUBSUME_ROW_LOCKS 选项设置为 OFF 可以禁用此行为。

    用法 

    LOCK TABLE 语句允许直接控制表级并发,与当前的隔离级别无关。

    虽然事务的隔离级别通常控制当前事务执行请求时设置的锁的种类,但 LOCK TABLE 语句允许更显式地控制表行的锁定。

    LOCK TABLE 以 SHARE 模式放置的锁为幻像和防幻像锁,sa_locks 过程将它们显示为 PT 和 AT。

    权限 

    若要以 SHARE 模式锁定表,需要 SELECT 权限。

    若要以 EXCLUSIVE 模式锁定表,必须是表所有者或者有 DBA 权限。

    副作用 

    需要访问锁定表的其它事务可能被延迟或阻塞。

    另请参见 
    标准和兼容性 
    • SQL/92    供应商扩展。

    • SQL/99    供应商扩展。

    • Sybase    受 Adaptive Server Enterprise 支持。Adaptive Server Enterprise 不支持 WITH HOLD 子句。Adaptive Server Enterprise 提供 Adaptive Server Anywhere 不支持的 WAIT 子句。

    示例 

    下面的语句禁止其它事务在当前事务期间修改 customer 表:

    LOCK TABLE customer
    IN SHARE MODE



    thanks:http://blog.csdn.net/psongchao/article/details/776172
  • 相关阅读:
    ASP.NET 2.0的页面缓存功能介绍
    第五课 主定理
    HDU 1051 Wooden Sticks
    一行代码让浏览器变编辑器
    算法概论习题1001Forest
    第七课 寻找强连通分量
    8223. Tiling a Grid With Dominoes
    迷宫
    第八课 最小生成树之Kruskal
    解决 Ubuntu 12.04 无法调节屏幕亮度的问题
  • 原文地址:https://www.cnblogs.com/andy-wcl/p/3406719.html
Copyright © 2020-2023  润新知