2009-09-09 57 views
6
> ALTER PACKAGE blah COMPILE; 
(wait about 10 minutes) 
> ORA-04021: timeout occurred while waiting to lock object 

タイムアウトエラー(パッケージが使用中)が表示される理由を理解しています。Oracleのデフォルトのオブジェクト・ロック・タイムアウトを変更できますか?

デフォルトの10分の待機時間を変更する方法があるかどうかは知っていますか?これはデータベース/セッション/文レベルで構成できますか?

おかげ

答えて

6

11gR1の以来DDL_LOCK_TIMEOUTパラメータがあります:

DDL_LOCK_TIMEOUTは、DMLロックキュー内で待機する時間DDL文の制限時間を指定します。デフォルト値0は、NOWAITの状態を示します。最大値が1,000,000秒になると、DMLロックを取得するために永久にDDLステートメントが待機します。

以前のリリースのデフォルトのタイムアウトを変更することはできません。

+0

ありがとうございました。 10gでないのは残念です。 – cagcowboy

+0

これは実際に私のために働いていません。あなたはこれを試しましたか?私は '' ddl_lock_timeout = 5;を変更してから '' '' '' '' '' '' '' '' '' 'を実行したが、数分待っていた。 – ShoeLace

+2

@ShoeLace DMLを待っているsomeonesはこのテーブルの行にコミットされていないトランザクションを持っています(デフォルトの動作はエラーをすぐに発生させることです)。現在使用中のパッケージ(デフォルトの動作は、パッケージがもう使用されなくなるまで待つことです)を置き換えるときはおそらく動作しません。 –

関連する問題