精华内容
下载资源
问答
  • 我在Oracle10.2.0.4版本使用以下语句锁表: lock table tbl_lock in exclusive mode nowait 正常 加个时间 lock table tbl_lock in exclusive mode wait 5 就会报错 ORA-00933:SqlCommand not properly ...
  • Oracle LOCK TABLE语句

    2020-04-19 20:50:31
    Oracle中LOCKTABLE语句可以用来锁定表、表分区或表子分区。本教程将和大家一起学习LOCKTABLE语句的详细用法。 LOCKTABLE语法 LOCK TABLE语句的语法是: LOCK TABLE tables IN lock_mode MODE [ WAIT [, ...

    在Oracle中,LOCK TABLE语句可以用来锁定表、表分区或表子分区。本教程将和大家一起学习LOCK TABLE语句的详细用法。

    LOCK TABLE语法

    LOCK TABLE语句的语法是:

    LOCK TABLE tables IN lock_mode MODE [ WAIT [, integer] | NOWAIT ];

    参数

    • tables:用逗号分隔的表格列表。
    • lock_mode :它是以下值之一:
                                                   lock_mode                                                      描述
    ROW SHARE允许同时访问表,但阻止用户锁定整个表以进行独占访问。
    ROW EXCLUSIVE允许对表进行并发访问,但阻止用户以独占访问方式锁定整个表并以共享方式锁定表。
    SHARE UPDATE允许同时访问表,但阻止用户锁定整个表以进行独占访问。
    SHARE允许并发查询,但用户无法更新锁定的表。
    SHARE ROW EXCLUSIVE用户可以查看表中的记录,但是无法更新表或锁定SHARE表中的表。
    EXCLUSIVE允许查询锁定的表格,但不能进行其他活动。
    • WAIT:它指定数据库将等待(达到指定整数的特定秒数)以获取DML锁定。
    • NOWAIT:它指定数据库不应该等待释放锁。

    LOCK TABLE示例

    下面是一个如何在Oracle中使用LOCK TABLE语句的例子:

    LOCK TABLE suppliers IN SHARE MODE NOWAIT;

    这个例子会锁定suppliers表在共享模式,而不是等待锁定被释放。

     

    LOCK TABLE

    Purpose

    Use the LOCK TABLE statement to lock one or more tables, table partitions, or table subpartitions in a specified mode. This lock manually overrides automatic locking and permits or denies access to a table or view by other users for the duration of your operation.

    Some forms of locks can be placed on the same table at the same time. Other locks allow only one lock for a table.

    A locked table remains locked until you either commit your transaction or roll it back, either entirely or to a savepoint before you locked the table.

    A lock never prevents other users from querying the table. A query never places a lock on a table. Readers never block writers and writers never block readers.

    See Also:

    Prerequisites

    The table or view must be in your own schema or you must have the LOCK ANY TABLE system privilege, or you must have any object privilege on the table or view.

    Syntax

    lock_table::=

    Description of lock_table.gif follows
    Description of the illustration lock_table.gif
     

    Semantics

    schema

    Specify the schema containing the table or view. If you omit schema, then Oracle Database assumes the table or view is in your own schema.

    table / view

    Specify the name of the table or view to be locked.

    If you specify view, then Oracle Database locks the base tables of the view.

    If you specify PARTITION or SUBPARTITION, then Oracle Database first acquires an implicit lock on the table. The table lock is the same as the lock you specify for partition or subpartition, with two exceptions:

    • If you specify a SHARE lock for the subpartition, then the database acquires an implicit ROW SHARE lock on the table.

    • If you specify an EXCLUSIVE lock for the subpartition, then the database acquires an implicit ROW EXCLUSIVE lock on the table.

    If you specify PARTITION and table is composite-partitioned, then the database acquires locks on all the subpartitions of partition.

    Restriction on Locking Tables If view is part of a hierarchy, then it must be the root of the hierarchy.

    dblink

    Specify a database link to a remote Oracle Database where the table or view is located. You can lock tables and views on a remote database only if you are using Oracle distributed functionality. All tables locked by a LOCK TABLE statement must be on the same database.

    If you omit dblink, then Oracle Database assumes the table or view is on the local database.

    See Also:

    "Referring to Objects in Remote Databases" for information on specifying database links

    lockmode Clause

    Specify one of the following modes:

    ROW SHARE  ROW SHARE permits concurrent access to the locked table but prohibits users from locking the entire table for exclusive access. ROW SHARE is synonymous with SHARE UPDATE, which is included for compatibility with earlier versions of Oracle Database.

    ROW EXCLUSIVE  ROW EXCLUSIVE is the same as ROW SHARE, but it also prohibits locking in SHARE mode. ROW EXCLUSIVE locks are automatically obtained when updating, inserting, or deleting.

    SHARE UPDATE  See ROW SHARE.

    SHARE SHARE permits concurrent queries but prohibits updates to the locked table.

    SHARE ROW EXCLUSIVE  SHARE ROW EXCLUSIVE is used to look at a whole table and to allow others to look at rows in the table but to prohibit others from locking the table in SHARE mode or from updating rows.

    EXCLUSIVE  EXCLUSIVE permits queries on the locked table but prohibits any other activity on it.

    NOWAIT

    Specify NOWAIT if you want the database to return control to you immediately if the specified table, partition, or table subpartition is already locked by another user. In this case, the database returns a message indicating that the table, partition, or subpartition is already locked by another user.

    If you omit this clause, then the database waits until the table is available, locks it, and returns control to you.

    Examples

    Locking a Table: Example The following statement locks the employees table in exclusive mode but does not wait if another user already has locked the table:

    LOCK TABLE employees
       IN EXCLUSIVE MODE 
       NOWAIT; 
    
    

    The following statement locks the remote employees table that is accessible through the database link remote:

    LOCK TABLE employees@remote 
       IN SHARE MODE;
    展开全文
  • ORACLE Lock Table

    千次阅读 2011-12-26 18:03:51
    LOCK TABLE 语法: LOCK TABLE table_1 [,table_2, ..., table_n] IN lock_mode MODE NOWAIT 变量: table_1,...,table_n: 一系列你想通过使用LOCK TABLE语句锁住的数据库表。 lock_mode: 对于某一...
     LOCK   TABLE 
    
    语法:
    LOCK   TABLE   table_1   [,table_2,   ...,   table_n]   IN   lock_mode   MODE
    NOWAIT
    变量:
    table_1,...,table_n:   一系列你想通过使用LOCK   TABLE语句锁住的数据库表。
    lock_mode:   对于某一数据库表你要设定的锁定模式。你可以从如下的锁定模式中任选一个。
    EXCLUSIVE
    SHARE   ROW   EXCLUSIVE
    SHARE
    SHARE   UPDATE
    ROW   SHARE
    ROW   EXCLUSIVE
    NOWAIT:   Oracle   will   not   wait   to   lock   the   given   Table(s),   if   the   Table(s)   is(are)   not
    available
    例子:
    SQL
    LOCK   TABLE   loan   IN   SHARE   MODE   ;
    LOCK   TABLE   region   IN   EXCLUSIVE   MODE   NOWAIT;
    LOCK   TABLE   acct   IN   SHARE   UPDATE   MODE;
    LOCK   TABLE   bank   IN   ROW   EXCLUSIVE   MODE   NOWAIT;
    LOCK   TABLE   user   IN   SHARE   ROW   EXCLUSIVE   MODE;
    LOCK   TABLE   branch   IN   ROW   SHARE   MODE   NOWAIT;

    commit ;

    展开全文
  • Oracle锁表(LOCK TABLE语句)

    千次阅读 2018-03-22 08:18:00
    Oracle教程解释了如何使用Oracle中LOCK TABLE语句的语法和示例。LOCK TABLE语句用于锁定表,表分区或表子分区。 语法LOCK TABLE语句的语法是: LOCK TABLE tables IN lock_mode MODE [ WAIT [, integer] | NO...

    本Oracle教程解释了如何使用Oracle中LOCK TABLE语句的语法和示例。
    LOCK TABLE语句用于锁定表,表分区或表子分区。

    语法
    LOCK TABLE语句的语法是:

    LOCK TABLE tables IN lock_mode MODE [ WAIT [, integer] | NOWAIT ];
    

    参数

    • tables - 用逗号分隔的表格列表。
    • lock_mode - 它是以下值之一:
    lock_mode描述
    ROW SHARE允许同时访问表,但阻止用户锁定整个表以进行独占访问。
    ROW EXCLUSIVE允许对表进行并发访问,但阻止用户以独占访问方式锁定整个表并以共享方式锁定表。
    SHARE UPDATE允许同时访问表,但阻止用户锁定整个表以进行独占访问。
    SHARE允许并发查询,但用户无法更新锁定的表。
    SHARE ROW EXCLUSIVE用户可以查看表中的记录,但是无法更新表或锁定SHARE表中的表。
    EXCLUSIVE允许查询锁定的表格,但不能进行其他活动。
    • WAIT - 它指定数据库将等待(达到指定整数的特定秒数)以获取DML锁定。
    • NOWAIT - 它指定数据库不应该等待释放锁。

    示例

    我们来看一个如何在Oracle中使用LOCK TABLE语句的例子。

    例如:

    LOCK TABLE suppliers IN SHARE MODE NOWAIT;
    

    这个例子会锁定suppliers表在共享模式,而不是等待锁定被释放。


    转载于:https://www.cnblogs.com/youseiraws/p/8621342.html

    展开全文
  • Oracletable lock

    2011-12-11 10:21:47
    先来一段Oracle Concepts里...A table lock can be held in any of several modes: row share (RS), row exclusive (RX), share (S), share row exclusive (SRX), and exclusive (X). The restrictiveness of a table l
      
    

    先来一段Oracle Concepts里的话:

    A table lock can be held in any of several modes: row share (RS), row exclusive (RX), share (S), share row exclusive (SRX), and exclusive (X). The restrictiveness of a table lock's mode determines the modes in which other table locks on the same table can be obtained and held. 

     

     

     

                                                                                      

                                                        Lock Modes Permitted?

    SQL StatementMode of Table Lock

    RS

    RX

    S

    SRX

    X

    SELECT...FROM table...

    none

    Y

    Y

    Y

    Y

    Y

    INSERT INTO table ...

    RX

     

    Y

    Y

    N

    N

    N

    UPDATE table ...

    RX

    Y*

    Y*

    N

    N

    N

    DELETE FROM table ...

    RX

    Y*

    Y*

    N

    N

    N

    SELECT ... FROM table FOR UPDATE OF ...

    RS

    Y*

    Y*

    Y*

    Y*

    N

    LOCK TABLE table IN ROW SHARE MODE

    RS

    Y

    Y

    Y

    Y

    N

    LOCK TABLE table IN ROW EXCLUSIVE MODE

    RX

    Y

    Y

    N

    N

    N

    LOCK TABLE table IN SHARE MODE

    S

    Y

    N

    Y

    N

    N

    LOCK TABLE table IN SHARE ROW EXCLUSIVE MODE

    SRX

    Y

    N

    N

    N

    N

    LOCK TABLE table IN EXCLUSIVE MODE

    X

    N

    N

    N

    N

    N


    RS: row share    RX: row exclusive    S: share    SRX: share row exclusive    X: exclusive

    *Yes, if no conflicting row locks are held by another transaction. Otherwise, waits occur.

     

    难怪在如下所示的例子中,在一个会话中用select … for update之后,另一个会话中的lock table in share mode语句会被挂起:

    scott@ORA10G> select * from test for update;

    A
    ----------
    bbb
    ccc

    scott@ORA10G> lock table test in share mode;

    必须commit释放锁之后,第二个会话才能锁定表。因为根据上表的结果,*Yes表示第二个锁需要的资源与第一个锁的资源有冲突,因此需要等待。

    scott@ORA10G> commit;

    提交完成。

    表已锁定。

    而下面这种就互不影响锁定了:

    scott@ORA10G> select * from test where a='bbb' for update;

    A
    ----------
    bbb

    scott@ORA10G> select * from test where a='ccc' for update;

    A
    ----------
    ccc

    或者是这样:

    scott@ORA10G> lock table scott.test in share mode;

    表已锁定。

    scott@ORA10G> lock table scott.test in share mode;

    表已锁定。

    042里就有一道类似的考题,当时只知道正确答案却不知道为什么,现在终于明白了。。。

    ps: Oracle Concepts真的很值得好好读几遍啊

     
    展开全文
  • Oracle锁相关(LOCK TABLE

    千次阅读 2018-05-10 08:34:05
    如果一个table 被一个session锁定,无论什么锁定,另外的session就不能获得对于该表exclusive的锁定,也就是说不能删除该表,其实很容易相同,别人在用那个表,你去把表给删除了,肯定是不允许的.   ② 如果...
  • Oracle中的锁定可以分为几类: 1、DML lock(data lock), 2、DDL lock(dictionary lock) 3、internal lock/latch。 DML lock又可以分为row locktable lock。row lock在select.. for update/insert/update...
  • Oracle中Cluster Table的使用

    千次阅读 2012-06-25 20:12:19
    大家对通常oracle中的cluster的理解是不准确的,经常和sql server的cluster index混淆。Cluster是存储一组table的一种方法,这些table共享同一数据块的某些相同column,并把不同table在这一共享column上值相同的...
  • oracle中lock的解释

    千次阅读 2009-06-08 12:09:00
    当多个用户并发地存取数据时,在数据库就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。加锁是实现数据库并发控制的一个非常重要的技术。当...
  • Enqueue 队列锁 是 oracle中 主要的 并发访问控制 和锁的机制。 我们耳熟能详的 TM table lock表锁 和 TX 事务锁都是 enqueue 。 enqueue 最多可以有6个模式 , enqueue lock被设计出来用于那些需要较长时间锁机制的...
  • Oracle table-lock的5种模式

    千次阅读 2014-01-09 11:47:52
    Oracle中的锁定可以分为几类: 1、DML lock(data lock), 2、DDL lock(dictionary lock) 3、internal lock/latch。 DML lock又可以分为row locktable lock。row lock在select.. for update/insert/update/...
  • select ses.SID, substr(SQ.SQL_TEXT,0),sq.LAST_LOAD_TIME, ses.schemaname, SES.LOCKWAIT, SES.BLOCKING_SESSION_...Lock table xxx in exclusive mode. Yes, that's the reason why the program hung.
  • LOCK table

    千次阅读 2011-04-29 16:07:00
      LOCK  TABLE  table-name !_ E8`'n `'E'B Q ?:o0 [ WITH  HOLD  ]ITPUB个人空间 S$] w a Q+{$`5J'I G IN  { SHARE  | EXCLUSIVE  } MODE参数   table-name  表必须...
  • oracle lock

    千次阅读 2011-09-28 10:17:31
    总结1:Oracle的锁表与解锁 SELECT s.username,  DECODE (l.TYPE, 'tm', 'table lock', 'tx', 'row lock', NULL)  lock_level,
  • LOCK TABLE语法

    2020-11-24 11:05:41
    Oracle LOCKTABLE 语句可以用来锁定表、表分区或表子分区。本教程将和大家一起学习 LOCKTABLE 语句的详细用法。 LOCKTABLE语法 LOCK TABLE 语句的语法是: LOCK TABLE tables IN lock_mode MODE [ WAIT ...
  • LOCK TABLE Statement

    2007-04-18 16:49:00
    Manually lock one or more tables. Syntax: LOCK TABLE [schema.] table [options] IN lockmode MODE [NOWAIT] LOCK TABLE [schema.] view [options] IN lockmode MODE [NOWAIT]Options: PARTIT
  • Oracle数据库LOCK

    2013-09-05 13:58:26
    当多个用户并发地存取数据时,在数据库就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。 加锁是实现数据库并发控制的一个非常重要的技术。当...
  • ORACLE lock 机制

    2014-09-10 17:03:54
    为了进行LOCK的探究,我建立了一个测试表 test ,结构和测试数据如下: SQL> select * from test;  ID NAME ---------- ----------  6 yoxi  2 robinson  2 tttt  3 david  4 jason  

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 46,607
精华内容 18,642
关键字:

oracle中locktable