目次
Oracle で挿入するとテーブルがロックされますか?
ホームページ データベース Oracle Oracle での挿入はテーブルをロックしますか?

Oracle での挿入はテーブルをロックしますか?

May 30, 2022 pm 04:29 PM
oracle

Oracle での Insert はテーブルをロックします。Oracle が Insert などの DML ステートメントを実行すると、操作中のテーブルにロックが適用されます。2 つの Insert ステートメントが同時にテーブルを操作しようとすると、セッションが発生しますが、セッションはブロックされ、他のセッションがコミットまたはロールバックするのを待機しているため、デッドロックが発生します。

Oracle での挿入はテーブルをロックしますか?

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

Oracle で挿入するとテーブルがロックされますか?

Oracle で挿入するとテーブルがロックされますか?

ORACLE が挿入などの DML ステートメントを実行すると、最初は操作対象のテーブルに対して自動的にTMロックを適用し、TMロックを取得すると自動的にTXタイプのロックを適用します。 2 つ以上のセッションがテーブルの同じレコードに対して DML 言語を実行すると、最初のセッションはレコードをロックし、他のセッションは最初のセッションのコミット後に TX ロックが解放されるまで待機状態になり、他のセッションはセッションのみになります。ロックすることができます。

これは、2 つの挿入ステートメントが同じ PK または一意の値を持つデータをテーブルに同時に挿入しようとするため、セッションがブロックされ、他のセッションがコミットまたはロールバックするのを待機するため、行き詰まり。

この場合、いずれかのセッションが送信される限り、もう一方のセッションは ORA-00001: 一意制約に違反し、デッドロックが終了するか、またはセッションの 1 つがロールバックされ、もう 1 つはロールバックされます。正常に実行できます。

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

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

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

(2) ロック テーブルは、並列ではなく同時実行で発生することがよくあります (並列では、1 つのスレッドがデータベースを操作すると、他のスレッドはデータベースを操作できなくなります)。

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

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

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

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

知識を広げる:

テーブルをロックするときは、決定を下す前に理由を確認することをお勧めします。

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;
ログイン後にコピー

推奨チュートリアル: 「Oracle ビデオ チュートリアル

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

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Oracleの表空間サイズを確認する方法 Oracleの表空間サイズを確認する方法 Apr 11, 2025 pm 08:15 PM

Oracle Tablespaceサイズを照会するには、次の手順に従ってください。クエリを実行して、TableSpace名を決定します。DBA_TABLESPACesからTableSpace_Nameを選択します。クエリを実行してテーブルスペースのサイズをクエリします:sum(bytes)をtotal_size、sum(bytes_free)asavail_space、sum(bytes) - sum(bytes_free)as sum(bytes_free)as dba_data_files from tablespace_

Oracleのインスタンス名を表示する方法 Oracleのインスタンス名を表示する方法 Apr 11, 2025 pm 08:18 PM

Oracleでインスタンス名を表示するには3つの方法があります。「sqlplus」と「v $ instanceからselect instance_name;」を使用します。」コマンドラインのコマンド。 「show instance_name;」を使用しますSQL*Plusのコマンド。オペレーティングシステムのタスクマネージャー、Oracle Enterprise Manager、またはオペレーティングシステムを介して、環境変数(LinuxのOracle_Sid)を確認してください。

Oracleビューを暗号化する方法 Oracleビューを暗号化する方法 Apr 11, 2025 pm 08:30 PM

Oracle View暗号化により、ビュー内のデータを暗号化でき、それにより機密情報のセキュリティが強化されます。手順には以下が含まれます。1)マスター暗号化キー(MEK)の作成。 2)暗号化されたビューを作成し、暗号化されるビューとMEKを指定します。 3)暗号化されたビューにアクセスすることをユーザーに許可します。暗号化されたビューがどのように機能するか:ユーザーが暗号化されたビューを求めてクエリをするとき、OracleはMEKを使用してデータを復号化し、認定ユーザーのみが読み取り可能なデータにアクセスできるようにします。

Oracleのインストールをアンインストールする方法は失敗しました Oracleのインストールをアンインストールする方法は失敗しました Apr 11, 2025 pm 08:24 PM

Oracleインストール障害のためのアンインストールメソッド:Oracleサービスを閉じ、Oracleプログラムファイルとレジストリキーを削除し、Oracle環境変数をアンインストールし、コンピューターを再起動します。アンインストールが失敗した場合、Oracle Universal Uninstallツールを使用して手動でアンインストールできます。

Oracle Cursorを閉じる問題を解決する方法 Oracle Cursorを閉じる問題を解決する方法 Apr 11, 2025 pm 10:18 PM

Oracle Cursorの閉鎖問題を解決する方法には、次のものが含まれます。 Scopeが終了した後に自動的に閉じるように、for update句のカーソルを宣言します。使用句のカーソルを宣言して、関連するPL/SQL変数が閉じられたときに自動的に閉じるようにします。例外処理を使用して、例外の状況でカーソルが閉じていることを確認します。接続プールを使用して、カーソルを自動的に閉じます。自動送信を無効にし、カーソルの閉鎖を遅延させます。

無効な数のOracleを確認する方法 無効な数のOracleを確認する方法 Apr 11, 2025 pm 08:27 PM

Oracle無効な数値誤差は、データ型の不一致、数値オーバーフロー、データ変換エラー、またはデータの破損によって引き起こされる場合があります。トラブルシューティング手順には、データ型のチェック、デジタルオーバーフローの検出、データ変換のチェック、データの破損のチェック、nls_numeric_charactersパラメーターの構成、データ検証ロギングの有効化など、他の可能なソリューションの調査が含まれます。

Oracleからすべてのデータを削除する方法 Oracleからすべてのデータを削除する方法 Apr 11, 2025 pm 08:36 PM

Oracleのすべてのデータを削除するには、次の手順が必要です。1。接続を確立します。 2。外部のキーの制約を無効にします。 3.テーブルデータを削除します。 4.トランザクションを送信します。 5.外部キーの制約を有効にします(オプション)。データの損失を防ぐために、実行前にデータベースを必ずバックアップしてください。

Oracleのユーザーをセットアップする方法 Oracleのユーザーをセットアップする方法 Apr 11, 2025 pm 08:21 PM

Oracleでユーザーを作成するには、次の手順に従ってください。Createユーザーステートメントを使用して新しいユーザーを作成します。助成金ステートメントを使用して必要な権限を付与します。オプション:リソースステートメントを使用してクォータを設定します。デフォルトの役割や一時テーブルスペースなど、他のオプションを構成します。

See all articles