24

sqlplus で列の値を更新しようとすると問題が発生します。

基本的には完了せず、ハングアップします。オラクルのロックを強制的に削除する方法があるかどうか疑問に思っていますか?

私が抱えている問題に関連する onject ID を含む v$locked_object というテーブルに気付きました。

これで十分説明できたと思います。

助けてくれてありがとう!

4

3 に答える 3

65

これはまさにあなたの目的を果たします:

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#';
于 2012-12-12T18:06:04.947 に答える
1

この問題を解決することができました。

DBA_BLOCKERS テーブルを調べて、セッション ID を取得しました。その後、セッションを強制終了し、ロックが削除されました。

于 2012-12-12T18:05:06.003 に答える
0

おそらく、他の誰かが同じテーブルを更新し、まだコミットしていません。それはあなたかもしれません (別のツールまたは別のセッションで)。

ロックを取り除く最も簡単な方法は、他のセッションで作業をコミットすることです。

于 2012-12-12T17:52:51.060 に答える