ホームページ > データベース > Oracle > Oracle がテーブルをロックする理由は何ですか?

Oracle がテーブルをロックする理由は何ですか?

WBOY
リリース: 2022-02-17 17:49:53
オリジナル
14590 人が閲覧しました

Oracle では、テーブルをロックする理由は、プログラムがテーブルに対して挿入を実行し、まだコミットされていないときに、別のプログラムも同じテーブルに対して挿入を実行すると、この時点でリソースが発生するためです。ビジー例外、つまりテーブルをロックします。

Oracle がテーブルをロックする理由は何ですか?

このチュートリアルの動作環境: Windows 10 システム、Oracle 11g バージョン、Dell G3 コンピューター。

Oracle がテーブルをロックする理由は何ですか?

テーブルをロックする主な理由は次のとおりです:

(1) プログラム A がテーブル A の挿入を実行し、まだコミットされていない場合、プログラム B も tableA を挿入します。このとき、リソース ビジー例外が発生します。これはロック テーブル

(2) ロック テーブルは、並列ではなく同時に発生することがよくあります (並列、1 つのスレッドの場合)データベースを操作するスレッド、データベースを操作できない別のスレッド、CPU および I/O 割り当ての原則)

テーブルをロックする可能性を減らす方法:

(1) 挿入間の時間を短縮します。 update および delete ステートメントの実行をコミット時間まで行います。具体的には、バッチ実行をシングル実行に変更し、SQL 自体の非実行速度を最適化します。

(2) 例外が発生した場合はロールバックします

テーブルをロックする理由としては、次のことが考えられます。行データが変更され忘れられています。送信するとテーブルもロックされます。

1. テーブルをロックする場合は、理由を確認してから決定することをお勧めします。

1 ロック テーブル クエリのコードは次の形式です:

select count(*) from v$locked_object;
select * from v$locked_object;
ログイン後にコピー

2. どのテーブルがロックされているかを確認します

select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id;
ログイン後にコピー

3 どのセッションが原因かを確認します

select b.username,b.sid,b.serial#,logon_time from v$locked_object a,v$session b where a.session_id = b.sid order by b.logon_time;
ログイン後にコピー

4. どの SQL が原因かを確認します

select b.username,b.sid,b.serial#,c.* from v$locked_object a,v$session b,v$sql c where a.session_id = b.sid
and b.SQL_ID = c.sql_id and c.sql_id = ''
order by b.logon_time;
ログイン後にコピー

5. 対応するプロセスを強制終了します

コマンドを実行します: alter system kill session'1025,41';

1025その中には sid があり、41 はシリアル#.

2. Oracle ユーザーが頻繁にロックされる理由

ログイン時にプロンプ​​トが表示されます: user test is locked

1. ユーザーdba ロールでログインしてロックを解除し、最初に特定の時刻を表示するために特定の時刻形式を設定します。

SQL> alter session set nls_date_format=‘yyyy-mm-dd hh24:mi:ss’;
ログイン後にコピー

Session altered.

2. 特定のロックされた時刻を表示します

SQL> select username,lock_date from dba_users where username='TEST';
USERNAME LOCK_DATE
------------------------------ -------------------
TEST 2021-03-10 08:51:03
ログイン後にコピー

3. ロックを解除します

SQL> alter user test account unlock;
ログイン後にコピー

ユーザーが変更されました。

推奨チュートリアル: 「Oracle Video Tutorial

以上がOracle がテーブルをロックする理由は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート