RAMポリシーの指定

TimesTen Classicでは、TimesTen Classicデータベースをメイン・メモリーにロードまたはアンロードするタイミングを決定するRAMポリシーを指定できます。また、共有メモリー・セグメントをアンロードせずにデタッチしてメモリー内に残すことができるRAMポリシーもあります。

TimesTen Classicデータベースごとに異なるRAMポリシーを設定できます。

ノート:

TimesTen Scaleoutでは、システム管理者によるttGridAdminユーティリティを使用したデータベースの手動ロードおよびアンロードがサポートされています。

RAMポリシーのオプションは次のとおりです。

  • 「manual」: データベースはシステム管理者によって手動でロードおよびアンロードされます。ロードされると、管理者がデータベースをアンロードする(ttAdmin -ramUnloadを使用)まで、またはリカバリ不能なエラー条件が発生しないかぎり、TimesTenによってデータベースはロードされたままになります。データベースは、管理者のみがシステムRAMに明示的にロードできます(ttAdmin -ramLoadオプションを使用)。これは、データベースの不要なロードまたはアンロードを回避できるため、推奨されるRAMポリシーです。

    ttAdmin -ramLoadオプションおよび-ramUnloadオプションの詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』RAM操作の実行を参照してください。データベース・エラー・リカバリの詳細は、「自動リカバリ失敗後のRAMポリシーの変更」を参照してください。

  • enduring: このオプションは、高速アップグレードを実行する場合に使用します。

    manual RAMポリシーの場合と同様に、システム管理者が手動でデータベースをロードおよびアンロードできます。

    さらに、enduringのRAMポリシーによって、データベースをクローズする前に、共有メモリー・セグメントからデタッチできます。データベースを開く準備ができたら、この同じ共有メモリー・セグメントにアタッチし、メイン・サブデーモンを起動してデータベースを再起動できます。また、エラーのためにデータベースで障害が発生した場合は、共有メモリー・セグメントを解放してチェックポイント・ファイルからデータベースをリカバリできます。「共有メモリー・セグメントのデタッチ、アタッチおよび解放」を参照してください。

    これは、アップグレードの実行時に役立ちます。

    ttAdmin -ramLoadオプションおよび-ramUnloadオプションの詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』RAM操作の実行を参照してください。データベース・エラー・リカバリの詳細は、「自動リカバリ失敗後のRAMポリシーの変更」を参照してください。

  • inUse: データベースは、データベースへの最初の接続をオープンするとメモリーにロードされ、1つ以上の接続がオープンしているかぎり、メモリーに常駐したままになります。データベースへの最後の接続をクローズすると、データベースはメモリーからアンロードされます。これがデフォルトのポリシーです。

  • inUse with RamGrace: データベースは、データベースへの最初の接続をオープンするとメモリーにロードされ、1つ以上の接続がオープンしているかぎり、メモリーに常駐したままになります。データベースへの最後の接続をクローズしても、猶予期間の間は、そのデータベースがメモリーに残ります。データベースは、猶予期間中データベースに接続されているプロセスがない場合にのみメモリーからアンロードされます。猶予期間は、随時設定および再設定できます。猶予期間は、次に猶予期間が変更されるまでのみ有効です。

    ノート:

    アプリケーションで、TimesTenデータベースが最初の接続で自動的にロードされ、最後の切断で自動的にアンロードされる必要がある場合は、RAMポリシーをinUseまたはinUse with RamGraceに設定します。ただし、大規模なデータベースを使用する本番システムでRAMポリシーをinUseに設定すると、データベースが予期せずにアンロードおよびリロードされるというパフォーマンスの問題が発生する可能性があります。

  • always: データベースはメモリーに常駐したままになります。TimesTenデーモンは再起動すると、データベースを自動的に再ロードします。リカバリ不能なエラー条件が発生しないかぎり、必ずデータベースは自動的に再ロードされます。

    alwaysのRAMポリシーは注意して使用する必要があります。障害が発生した場合、データベースを自動的にリロードすることは有益ではありません。また、システムの起動時にすべてのデータベースが同時にロードされると、システムの起動パフォーマンスに影響を与える場合があります。エラー・リカバリについては「自動リカバリ失敗後のRAMポリシーの変更」、およびデータベースをリロードしようとしたときに発生する可能性があることについては「障害発生後のデータベース自動リロードの防止」を参照してください。

システム管理者は、RAMポリシーを設定するか、ttAdminユーティリティまたはC API RAMポリシー・ユーティリティを使用してTimesTen Classic内のデータベースを手動でロードまたはアンロードします。『Oracle TimesTen In-Memory Databaseリファレンス』ttAdminまたは『Oracle TimesTen In-Memory Database C開発者ガイド』TimesTenユーティリティAPIの章を参照してください。

ノート:

デフォルトでは、致命的なエラー後のデータベースの自動リカバリが失敗した場合、TimesTen Classicはalwaysおよびmanual RAMポリシーをInUseに変更して、失敗の再発を防止します。RAMポリシーの変更を防止する方法の詳細は、「自動リカバリ失敗後のRAMポリシーの変更」を参照してください。

次の例では、ttdata DSNで識別されるデータベースについてRAMポリシーをmanualに設定します。

ノート:

1行目で、RAMレジデント・ポリシーがmanualに設定されています。その他の出力には、ttAdminユーティリティで設定できる他のポリシーも示されています。『Oracle TimesTen In-Memory Databaseリファレンス』「ttAdmin」を参照してください。

% ttAdmin –ramPolicy manual ttdata
RAM Residence Policy            : manual
Replication Agent Policy        : manual
Replication Manually Started    : False
Cache Agent Policy              : manual
Cache Agent Manually Started    : False
Database state                  : open

次の例では、TimesTenデータベースのRAMポリシーをenduringに設定します。

$ ttAdmin -ramPolicy enduring database1

RAM Residence Policy            : enduring
Manually Loaded In RAM          : False
Replication Agent Policy        : manual
Replication Manually Started    : False
Cache Agent Policy              : manual
Cache Agent Manually Started    : False
Database state                  : open

自動リカバリ失敗後のRAMポリシーの変更

致命的なエラーによってデータベースが無効になり、TimesTen Classicで実行された自動データベース・リカバリが失敗すると、デフォルトでは、特定の手順が自動的に発生します。

  • manualenduringおよびalwaysのRAMポリシーには変更はありません。

  • レプリケーション・エージェントとキャッシュ・エージェントは再起動されません。

  • データベースのリロードが数回失敗すると、TimesTen ClassicはpolicyInactiveモードを設定し、データベースのロードがそれ以上試行されないようにします。

ノート:

無効なデータベースがメモリーにまだ存在している間に大きなデータベースをメモリーにリロードすると、使用可能RAMが一杯になることがあります。データベースの自動リロードを防止する方法については、「障害発生後のデータベース自動リロードの防止」を参照してください。

障害発生後のデータベース自動リロードの防止

致命的なエラーが原因でデータベースが無効化された後、TimesTen Classicは、データベースがRAMポリシー、キャッシュ・エージェントのポリシーおよびレプリケーション・エージェントのポリシーの設定と一貫性を維持しているかぎり、データベースのリロードとリカバリを試みます。

ただし、ユーザー・プロセスは、データベースの無効化を認識していない場合に引き続きデータベースに接続されていることがあります。この場合、すべてのユーザー・プロセスが接続を閉じるまで、無効化されたデータベースがメモリー上に存在します。したがって、無効化されたデータベースと新しくリロードされたデータベースの両方がメモリーに共存することがあります。データベースが大きい場合、これが問題になることがあります。

ノート:

データベースのリロードとリカバリを実行するかどうかはRAMポリシーによって決定されるだけでなく、キャッシュ・エージェントとレプリケーション・エージェントも無効化後にデータベースをリロードするかどうかの要素になります。障害の後にデーモンがエージェントを自動的に再起動するようにキャッシュ・エージェントとレプリケーション・エージェントのポリシーを設定すると、エージェントはデータベースへの接続を開始します。これが初めての接続であれば、デーモンはデータベースをリロードし、リカバリを実行します。

キャッシュ・エージェントおよびレプリケーション・エージェントのポリシーの詳細は、『Oracle TimesTen In-Memory Databaseレプリケーション・ガイド』レプリケーション・エージェントの起動および停止『Oracle TimesTen In-Memory Databaseキャッシュ・ガイド』TimesTen Classicでのキャッシュ・エージェント起動ポリシーの設定、および『Oracle TimesTen In-Memory Databaseリファレンス』ttAdminを参照してください。

無効化の後にデータベースが自動的にリロードすることを防止するには、ttAdmin -noautoreloadコマンドを使用します。デフォルトの自動データベース・リロード動作に戻すには、ttAdmin -autoreloadコマンドを使用します。Oracle TimesTen In-Memory DatabaseリファレンスttAdminを参照してください。

ノート:

ttRamPolicyAutoReloadSet組込みプロシージャは、ttAdmin -noautoreloadおよびttAdmin -autoreloadと同じ処理を実行します。Oracle TimesTen In-Memory DatabaseリファレンスttRamPolicyAutoReloadSetを参照してください。

次のいずれかによってデータベースの初期化とリカバリが開始し、標準の動作に戻ります。

  • TimesTenデーモンが再起動する。

  • プロセスが正常に接続される。

  • 管理者がデータベースのttAdminコマンドを実行し、RAMポリシーの変更、RAMロードの実施、キャッシュまたはレプリケーション・エージェントの開始のいずれかを行う。

データベースの自動リロードを防止する動作を設定した場合、リロードされていないデータベースに接続しようとすると次のエラーメッセージが表示されることがあります。

Error 707, "Attempt to connect to a data store that has been manually unloaded from RAM"