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ですよね。