月別アーカイブ: 2013年9月

Oracleのロックを解除。ORA-00054: リソース・ビジー

oracle使っていてロックがかかりっぱなしのテーブル。といったことはご経験がおありかと
ロックしたテーブルが発生すると解除まで結構時間がかかりますよね。

データベースのインポートする時にtruncateしようとすると、
ORA-00054: リソース・ビジー、NOWAITが指定されていました。
とか表示されたりします。

さて、解決方法を探しました。

簡単簡単。
表をロックしているセションを解除すればOKです。

— ロックしているセッションを探す
SELECT SID, SERIAL# FROM V$SESSION
WHERE SID IN (
SELECT SID FROM V$LOCK
WHERE TYPE IN (‘TM’,’TX’)
)

上記SQLでセションIDとシリアルナンバーを取得します。
その後、取得した値を使ってセッションを切断すればよい。

— セッションを切断
alter system kill session ‘[SID], [SERIAL#]’

ですが、これでもダメな方は。。。ロックを解除できなければ、
DBサーバにログインしてOracleのサービスを再起動しましょう。
これでさすがに解決されると思います。
もちろん少しの間DBは使えなくなり、、、まぁ最悪ですがね。

トランザクションなど全ての処理が止まるので
今回のようにテスト環境以外ではよほどの緊急時じゃないかぎりNGですよね。