Sqlplusで列の値を更新しようとすると問題が発生します。
基本的に完了せず、ハングするだけです。強制的にOracleのロックを削除する方法があるのだろうか?
私が抱えている問題に関連するonject IDを含むv $ locked_objectというテーブルに気付きました。
これで十分説明できたと思います。
助けてくれてありがとう!
これはまさにあなたの目的に役立ちます:
SELECT SESSION_ID FROM DBA_DML_LOCKS WHERE NAME = <TABLE_NAME>;
使用 SESSION_ID
対応するSERIAL#
このステートメントで:
SELECT SID, SERIAL# FROM V$SESSION WHERE SID IN (
SELECT SESSION_ID FROM DBA_DML_LOCKS WHERE NAME = <TABLE_NAME>
);
問題のタプルを見つけますSID, SERIAL#
そして次のようにリリースします:
ALTER SYSTEM KILL SESSION 'SID, SERIAL#';
この問題を解決できました。
DBA_BLOCKERSテーブルを見て、セッションIDを取得しました。その後、セッションを強制終了し、ロックを解除しました。
おそらく、他の誰かが同じテーブルを更新し、まだコミットしていません。それはあなたかもしれません(別のツールまたは別のセッションで)。
ロックを解除する最も簡単な方法は、他のセッションで作業をコミットすることです。