Oracleでは、しばしば(テーブルをロックする)セッションがハングすることがあります。セッションとテーブル・ロックの掛けを避けるOracle
DBA権限がない場合、これらのセッションを削除するか、ロック解除する方法はありますか?
問題を完全に回避するためにできることはありますか? (たとえば、SQL * PLUSの一部のタイムアウト設定)。
これは、ほとんどがbashスクリプトから起動されたSQLです。
Oracleでは、しばしば(テーブルをロックする)セッションがハングすることがあります。セッションとテーブル・ロックの掛けを避けるOracle
DBA権限がない場合、これらのセッションを削除するか、ロック解除する方法はありますか?
問題を完全に回避するためにできることはありますか? (たとえば、SQL * PLUSの一部のタイムアウト設定)。
これは、ほとんどがbashスクリプトから起動されたSQLです。
DBAに権限を委譲するよう依頼することはできますが、DBAでない場合は、これらの問題に対処する方法はありません。 bashスクリプトの場合は、どのPIDがザッピングを必要としているかを判断できると仮定して、それらをkillすることができます。
もちろん、ハングセッションは、システム設計の貧弱さまたはプログラミングの習慣の悪さの結果です。ですから、それらを頻繁に取得する場合は、アプリケーションの修正を検討する必要があります。
アプリケーションについて何も知らずにこれらのハングアップを引き起こす正確なアドバイスはできませんが、ここにいくつかの提案があります。アーキテクチャレベルでは、スケジューリングやキューなどのより高度なジョブ管理が可能なソリューションになります。より良いプログラミング実践には、悲観的ロック(select ... for update
)とトランザクション管理が含まれます。
Nopesセッションを強制終了するには、ALTER SYSTEM権限が必要です。ロックされたオブジェクトをチェックするには、v $ locked_objectを照会できるはずです。 –
基本的にロック解除とは、オブジェクトをロックしているセッションをクリアすることを意味します。セッションを終了すると、そのセッションのロックが自動的にクリアされます –