2

私はオラクルロックを学んでいます。

1回のセッションで

lock table countries in ROW Exclusive mode nowait;

別のセッションで、counties テーブルを更新します。

SQL> update countries set country_name = 'ddd';
25 rows updated.

私が期待したのは、セッションがハングすることです。なぜなのかご存知ですか ?

EM をチェックすると、ロックが表示されます。

4

1 に答える 1

7

行排他

実際にはテーブルを完全にロックしません。

ROW EXCLUSIVE同時アクセスをROW SHARE許可しますが、他の誰かが排他的アクセスのためにテーブル全体をロックするのを防ぎます。Exclusive は、他のアクションが SHARE モードでテーブルをロックすることも禁止します。

読み取り以外からテーブルをロックしたい場合。ROW を省略する必要があるため、

LOCK TABLE countries 
    IN EXCLUSIVE MODE 
    NOWAIT;

ここにさらに例があります: http://docs.oracle.com/cd/B14117_01/server.101/b10759/statements_9015.htm

于 2012-07-02T00:21:36.620 に答える