セマフォおよび共有メモリー・セグメントを管理する

接続または作成しようとする共有データベースのサイズが、システムに構成された共有メモリー・セグメントの最大サイズより大きいと、エラーが返されます。また、システムが共有メモリー・セグメントをそれ以上割り当てることができない場合もエラーが返されます。

LinuxおよびUNIXシステムでは、次のようなコマンドを使用します。

  • ipcs -maを使用すると、Oracle Databaseインスタンスやその他のTimesTenインスタンスなど、メモリーを使い果たすその他の共有メモリー・セグメントがないかどうかを確認できます。

  • ipcrmを使用すると、メッセージ・キュー、セマフォ・セットまたは共有メモリー・セグメント識別子を削除できます。障害の発生したTimesTenの停止、インスタンスのクラッシュ、デーモンのクラッシュなどの共有メモリー・セグメントおよびセマフォを使用するアプリケーションの問題の後で、ipcrmを使用して、セマフォまたは共有メモリー・セグメントをクリーンアップします。共有メモリー・セグメントを削除するには、-mを使用します。セマフォを削除するには、-sを使用します。

  • ps -eaflを使用すると、実行中のプロセスによって使用されているメモリーの量を確認できます。

  • ulimit -aを使用すると、1つのプロセスが処理できるメモリーの最大量、最大ファイル・サイズ、オープン・ファイルの最大数に制限がないかどうかを確認できます。

共有メモリー・セグメントは使用可能であるが、小さすぎてデータベースを保持できない場合は、ttSizeユーティリティを使用して、表に必要なメモリー量を見積もり、PermSizeおよびTempSize属性の値を確認して、データベース用に設定されているメモリー量を検証します。永続メモリー領域と一時メモリー領域のサイズを設定するためのガイドラインについては、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』「PermSize属性およびTempSize属性の監視」を参照してください。データベースに対して設定されているメモリー量が多すぎる場合は、PermSizeおよびTempSizeの値を小さくします。詳細は、「データベースに割り当てられたメモリーの量を確認する」を参照してください。共有メモリー・セグメントのサイズを大きくするその他のオプションについては、次の説明を参照してください。

アプリケーションが接続されていて、システム障害またはアプリケーション障害が原因でデータベースが無効になると、データベース共有セグメントがアプリケーションから自動的にデタッチされません。次にアプリケーションがデータベースの使用を試みると、アプリケーションはデータベースから切断され、共有セグメントがデタッチされます。アプリケーションが無効化されたデータベースへの接続を継続し、データベースの使用を試みない場合、アプリケーションはデータベースから切断されず、共有セグメントがデタッチされません。メモリーおよびスワップ領域を解放するためには、無効化されたデータベースに接続されているすべてのアプリケーションを切断または終了する必要があります。

データベースがシステムまたはアプリケーションの障害で無効化され、すべてのアプリケーションをデータベースから切断した場合、次に続するとデータベースはリカバリします。データベース領域を使い果たしたためにリカバリが失敗した場合は、PermSizeおよびTempSizeの値を現在の値より大きくして、データベースに再接続します。

共有メモリーの構成方法の詳細は、『Oracle TimesTen In-Memory Databaseインストレーション、移行およびアップグレード・ガイド』「オペレーティング・システムの前提条件」を参照してください。