web-dev-qa-db-ja.com

Oracle 10でのロックの削除

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

基本的に完了せず、ハングするだけです。強制的にOracleのロックを削除する方法があるのだろうか?

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

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

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

20
Thomas Pollock

これはまさにあなたの目的に役立ちます:

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#';
58
Mari

この問題を解決できました。

DBA_BLOCKERSテーブルを見て、セッションIDを取得しました。その後、セッションを強制終了し、ロックを解除しました。

1
Thomas Pollock

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

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

0
Codo