ホームページ  >  記事  >  Oracle はどのような場合にテーブルをロックしますか?

Oracle はどのような場合にテーブルをロックしますか?

DDD
DDDオリジナル
2023-06-13 09:37:253279ブラウズ

Oracle ロック テーブルの状況には次のものが含まれます: 1. プログラム A はテーブル A に対して挿入を実行しますが、コミット前にプログラム B もテーブル A に対して挿入を実行します。このとき、リソース ビジー例外が発生します。 ; 2. テーブル ロックは、並列処理ではなく同時実行で行われることがよくあります。並列では、1 つのスレッドがデータベースを操作するとき、他のスレッドはデータベースを操作できません。CPU と I/O の割り当ての原則。

Oracle はどのような場合にテーブルをロックしますか?

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

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

1. プログラム A は tableA に対して挿入を実行しますが、コミット前にプログラム B も tableA に対して挿入を実行します。今回は、リソースがビジーであるという例外が発生します。これは、ロック テーブル

2です。ロック テーブルは、多くの場合、並列処理ではなく同時実行で発生します (並列では、1 つのスレッドがデータベースを操作するときに、もう 1 つのスレッドがデータベースを操作する)データベース、CPU、I/O 割り当て原則を操作できません)

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

1. 次の実行間の時間を短縮します。ステートメントを挿入、更新、削除し、コミットします。具体的には、バッチ実行を単一実行に変更し、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 ユーザーが頻繁にロックされる理由

ログイン時にプロンプ​​ト: test user is locked

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

SQL> alter session set nls_date_format=‘yyyy-mm-dd hh24:mi:ss’;

セッションが変更されました。

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 はどのような場合にテーブルをロックしますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。