Skip to main content

 

ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired

 

OutSystems

ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired

症状

eSpaceを(LifeTime、Service Center、またはService Studioを使用して)パブリッシュしようとしたとき、以下のエラーが発生します。

ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired

プラットフォームでデータモデルを変更する必要があるその他の場合にも、このエラーが発生する場合があります。

環境はOracleデータベース上で実行されています。

 

原因

この問題は、OracleデータベースでALTER文が実行されたとき、そのオブジェクトが他のトランザクションによってロックされたままである場合に発生します。これは、頻繁に使用されるテーブルをピーク時間中に変更しようとした場合や、データベースが少し低速である場合に発生する可能性があります。

 

解決策

この問題を解決するには、Oracle DDLのタイムアウト設定を増やす必要があります。この設定はプラットフォーム構成で行うことができ、同じ環境内のすべてのフロントエンドで行う必要があります。

 

方法1:

  1. ファイルserver.hsconfをテキストエディタ(メモ帳やvimなど)で開きます。このファイルは、プラットフォームのインストールフォルダにあります。
    • .NETの場合(通常時) C:\Program Files\OutSystems\Platform Server
    • Javaの場合(通常時) /opt/outsystems/platform
  2. DDLLockTimeoutの設定を<PlatformDatabaseConfiguration ProviderKey="Oracle">の下に配置します。以下のような行があります。
    <DDLLockTimeout encrypted="false">600</DDLLockTimeout>
    なお、<SessionDatabaseConfiguration ProviderKey="Oracle">という類似の設定があります。通常、これを変更する必要はありません。
  3. 設定の値を増やします。変更例: 600から1200または 1800
  4. Configuration Toolを実行します。
    • .NETの場合、スタートメニュー内にショートカットがあります。Configuration Toolを開いた後、[Apply and Exit]をクリックします。すべてのサービスの再起動を許可します。Service Centerのインストールを実行する必要はありません。
    • Javaの場合、/opt/outsystems/platform/configurationtool.shを実行します。設定を変更しないでください。すべてのサービスの再起動を許可します。Service Centerのインストールを実行する必要はありません。

 

関連リソース

このトピックの詳細については、ORA-00054に関する以下の記事をご覧ください。

 

プロパティ

プラットフォーム9以降、Oracleデータベースで実行されている.NETスタックとJavaスタックに適用されます。

最終確認は10.0.105.0で行いました。