ORACLE機能 エラー

[ORAエラー] ORA-00054: リソース・ビジー。NOWAITが指定されているか、タイムアウトしました

投稿日:2018年7月28日 更新日:

以下のように表示されます。

(日本語)
ORA-00054: リソース・ビジー。NOWAITが指定されているか、タイムアウトしました
(英語)
ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired

発生パターン

このエラーは以下のような場合に発生します。

  • 別セッションでFOR UPDATEを指定して検索中(ロック中)のテーブルに対して、
    FOR UPDATE or FOR UPDATE NOWAIT を指定して検索(ロックをかけて検索)をした
エラー例
SQL> select * from m_test for update nowait; select * from m_test for update nowait * 行1でエラーが発生しました。: ORA-00054: リソース・ビジー。NOWAITが指定されているか、タイムアウトしました

m_testテーブルがロックされている状態で、FOR UPDATE NOWAITで検索しようとした例です。

対処法

  • 他セッションのロック解除を待つ。
  • 他セッションのロックを強制的に解除する

ロックの強制解除方法

ロックを強制的に解除するには以下のようにします。

1.ロックしているセッションのSIDとSERIAL# を取得する

2.取得したSIDとSERIAL# を以下SQLで実行する

ロックを強制解除するSQL
ALTER SYSTEM KILL SESSION '<SID>, <SERIAL#>';

これで、ロックを強制解除できます。



スポンサーリンク

スポンサーリンク

-ORACLE機能, エラー

執筆者:


  1. […] ▼ORACLE逆引きノート様https://oracle.programmer-reference.com/ora-00054/ ▼津島博士のパフォーマンス講座 第18回 ロックについて https://www.oracle.com/technetwork/jp/database/articles/tsushima/tsm18-1610822-ja.html […]

comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

ORACLE

[PL/SQL] GOTO文を使う

GOTO文を使ったサンプルです。 GOTO文を使うと、処理を特定の場所に飛ばすことができます。 サンプル 例)引数が1の ...
ORACLE

[ORACLE] テーブルの作成日時/更新日時を取得する

テーブルの作成日時/更新日時を取得するサンプルです。 サンプル 例)所有するテーブル全ての作成日時と更新日時を表示する ...
ORACLE

[V$表] 初期化パラメータの情報を取得する(V$PARAMETER)

初期化パラメータの情報を参照するには、V$PARAMETERビューを参照します。 V$PARAMETERの定義 V$PA ...
ORACLE

[ORACLE] 1つのSQLで複数のINSERTを実行する

1つのSQLで複数のINSERTを実行するサンプルです。 サンプル 例)1つのSQLでm_testテーブルに3つのINS ...
ORACLE

[ORAエラー] ORA-12154: TNS: 指定された接続識別子を解決できませんでした

以下のように表示されます。 (日本語) ORA-12154: TNS: 指定された接続識別子を解決できませんでした (英 ...

スポンサーリンク