ORA-00054: Resource busy and acquire with NOWAIT specified or timeout expired(リソースがビジー。NOWAIT 指定またはタイムアウト)
Oracle意味
ロック対象のリソース (行またはテーブル) が別セッションにロックされており、NOWAIT が指定されていたか DDL_LOCK_TIMEOUT が経過したため、即座に取得できなかった。
原因
通常は、テーブルが別トランザクションにロックされている間に DDL (ALTER TABLE、DROP、CREATE INDEX) を試行した場合。または SELECT ... FOR UPDATE NOWAIT でロック中の行に遭遇した場合。
対処方法
ロックを保持しているセッションを特定する: SELECT * FROM v$locked_object。v$session と v$lock を結合してブロッキングセッションを特定する。トランザクションの終了を待つか、必要に応じて ALTER SYSTEM KILL SESSION で終了させる。DDL では待機時間を設定できる: ALTER SESSION SET DDL_LOCK_TIMEOUT = 60; DDL は負荷の低いメンテナンス時間帯に実行する。
同じデータベースの他の項目
- ORA-00001Unique constraint violated(一意制約違反)
- ORA-00060Deadlock detected while waiting for resource(リソース待機中にデッドロックを検出)
- ORA-01017Invalid username/password; logon denied(ユーザー名/パスワードが無効。ログオン拒否)
- ORA-01555Snapshot too old: rollback segment number too small(スナップショットが古すぎる)
- ORA-01652Unable to extend temp segment by N in tablespace(表領域で一時セグメントを拡張できない)