ヘッダーをスキップ
Oracle TimesTen In-Memory Databaseトラブルシューティング・プロシージャ・ガイド
リリース7.0
E05173-03
  目次へ
目次
索引へ
索引

前へ
前へ
次へ
次へ
 

リソースを使い果たす

この項では、メモリー領域、ディスク領域、ファイル記述子、セマフォなどのリソースをTimesTenが使い果たしたときに確認する事項を説明します。

状態
対処
メモリー消費量が高い

オペレーティング・システム・ツールおよび共有メモリー

メモリー領域を使い果たす
ディスク領域を使い果たす
ログ領域を使い果たす
ファイル記述子を使い果たす
セマフォを使い果たす
CPUを使い果たす
スタック・トレースを取得して、テクニカル・サポートに連絡する

オペレーティング・システム・ツールおよび共有メモリー

topvmstatsarなどのオペレーティング・システム・ツールによって、プロセスおよびメモリー使用量に関する統計を取得します。これらのツールの出力では、各プロセスの共有メモリー使用量がレポートされますが、共有メモリー使用量の合計値はレポートされないため、TimesTenのメモリー消費量のインジケータとして誤解を招く可能性があります。共有メモリーは共有の定義によって異なるため、TimesTenプロセスのメモリーに関する様々な統計を加算すると、TimesTenで使用されるメモリー量より大きく見積もられます。

データ・ストアに割り当てられたメモリーの量を確認する

TimesTenでは、永続データ・パーティションと一時データ・パーティションの両方を使用します。これらのパーティションに割り当てられるメモリーの量は、データ・ストアのDSN定義のPermSizeおよびTempSize属性で設定されます。

TimesTenデータ・ストアが一杯になった場合、永続セグメントと一時セグメントのどちらが一杯かを判断することが重要です。ttIsql dssizeコマンドを使用して、永続データ・パーティションおよび一時データ・パーティションについて、割当てサイズ、使用中のサイズおよび最高水位標サイズをリストします。dssizeコマンドを実行すると、SYS.MONITORから次の値が取得されます。

永続セグメントは表および索引データで構成され、一時セグメントは、ロック、ソート領域、コンパイル済コマンドなどの内部構造で構成されています。

トランザクションを短くして、データ・ストアに十分な一時領域が確実にあるようにすることで、ロックによって残りのすべての一時領域が占有されることを回避します。トランザクションによって大量の行ロックが取得される場合は、表ロックを使用することもできます。

データ・ストアのサイズを見積もる際のヒントについては、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のデータ・ストアの正しいサイズ調整に関する説明を参照してください。

永続セグメントが一杯になる

索引に破棄できるものがないかを検討してください。実際に使用されている索引は、問合せ計画を参照するとわかります。詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』の問合せオプティマイザ計画の参照および変更に関する説明を参照してください。ttRedundantIndexCheckプロシージャを使用して、冗長な索引を見つけることもできます。このプロシージャでは、破棄する索引に関する提案が返されます。

ttSizeユーティリティを使用すると、データ・ストア内の各表が使用するメモリーの量を見積もることができます。格納する必要のあるデータ量が多すぎる場合は、データ・ストアのPermSize属性を再設定して、永続セグメントのサイズを大きくする必要があります。メモリー・セグメントのサイズに制限があるために、一時セグメントを縮小したり、データ・ストアを拡大することができない場合などは、かわりに、データを複数の異なるデータ・ストアに分割する必要があります。

永続セグメントが一杯になったときに、データ・ストアからデータをコピーして取り出し、データをすべて削除し、その後データを元に戻すことで、領域を解放することもあります。この作業は、ttMigrateユーティリティを-noRepUpgradeオプションとともに使用し、データを外部へ移行した後、データ・ストアを破棄してから再作成し、データを元に戻すことによって、より効率的に行うことができます。この操作の詳細は、『Oracle TimesTen In-Memory Databaseインストレーション・ガイド』のデータ・ストア・サイズの縮小に関する説明を参照してください。

最後に、プロセスにより多くの量の共有メモリーが割り当てられるように、オペレーティング・システムを構成する必要がある場合があります。また、仮想メモリーにより多くのスワップ領域を割り当てる必要があることもあります。詳細は、「使用可能なスワップ領域(仮想メモリー)を確認する」を参照してください。

一時セグメントが一杯になる

統計が古いために、いくつかのコマンドで割り当てている領域が多すぎる可能性があります。詳細は、「問合せオプティマイザの統計を更新する」を参照してください。

統計を更新しても一時セグメントのメモリーの使用量が減らない場合は、すべての接続を切断してから、再接続します。すべての接続が切断されたかどうかは、ttStatusユーティリティで確認します。これですべての一時領域が解放されますが、コマンドを再準備する必要はあります。

問合せのメモリー使用量を診断します。詳細は、「問合せで使用されるメモリーを確認する」を参照してください。

問題が繰り返し発生する場合は、データ・ストアを監視して問題の原因を特定します。ttWarnOnLowMemoryプロシージャを使用して、データ・ストアが一杯になったかどうかを示すユーザー・ログの警告を有効にします。

問合せオプティマイザの統計を更新する

データ・ストアには十分な空き領域があるように見えても、問合せを実行するとデータ・ストア領域を使い果たしてしまう場合は、ttOptUpdateStatsまたはttOptEstimateStatsプロシージャを使用して、オプティマイザの統計データが更新されていることを確認します。問合せの中には、実行時に一時領域の割当てが必要なものがあります。必要な一時領域の量は、問合せに使用する表の統計から見積もられます。正しい統計データがないと、必要な一時領域が少なく見積もられることがあります。

詳細は、「問合せオプティマイザの使用」を参照してください。

問合せで使用されるメモリーを確認する

一時メモリー使用量の最高水位標を確認すると、問合せで使用されるメモリーを確認できます。最高水位標は、この水位標が初期化またはリセットされた後で使用された、使用中の一時領域の最大量を表します。

次のタスクを実行します。

  1. ttIsql dssizeコマンドを使用して、TEMP_IN_USE_SIZEおよびTEMP_IN_USE_HIGH_WATERを確認します。(これらの値はSYS.MONITOR表で問い合せることもできます。)
  2. ttMonitorHighWaterResetプロシージャをコールして、TEMP_IN_USE_HIGH_WATERをTEMP_IN_USE_SIZEの現在の値にリセットします。
  3. 問合せを実行します。
  4. dssizeを使用して、TEMP_IN_USE_HIGH_WATERで問合せのピーク時のメモリー使用量を確認します。

使用可能なスワップ領域(仮想メモリー)を確認する

スワップ領域を使い果たしたことを示すエラーを受け取った場合は、使用可能なスワップ領域(仮想メモリー)の量を増やす必要があります。

UNIXシステムの場合は、swapコマンドを使用して、現在システムに対して設定されている仮想メモリーの量を確認し、再設定します。

Windowsシステムの場合は、「コントロール パネル」「システム」「詳細」を選択して、仮想メモリーのサイズを確認し、再設定します。

ログ・ファイルのディスク領域の使用を確認する

TimesTenは、データ・ストア属性で指定されているディレクトリに格納されている2つのチェックポイント・ファイルのいずれかにデータ・ストアのコピーを保存します。各チェックポイント・ファイルはディスク上で大きくなり、共有メモリー内のデータ・ストアのサイズと同等になる可能性があります。各永続データ・ストアについて、2つのチェックポイント・ファイルとログ・ファイル(ディスクへのロギングが有効な場合)を保存するための十分なディスク領域が必要です。

ログ・ファイルはLogDir属性で指定されたディレクトリに蓄積され、チェックポイントが実行されたときにのみ削除されます。DSNにLogDir属性が指定されていない場合は、データ・ストア属性で指定されたディレクトリにログ・ファイルが蓄積されます。ログ・ファイルの最大サイズは、LogFileSize属性で設定されます。

ディスクがTimesTenデータで一杯になる原因のほとんどは、ログ・ファイルの蓄積です。TimesTenでは、チェックポイント処理、バックアップ、レプリケーションなどの様々な目的でログ・ファイルが使用されます。どの操作がログ・ファイルを保持するかを特定することが重要であり、これによって、ログ・ファイルを適切にパージできるように適切なアクションをとることができます。これは、ttLogHolds組込みプロシージャを使用して行います。ログの保持には6つのタイプがあります。次の説明を参照してください。

ディスクの使用には、次の属性が関係します。

セマフォの制限を確認する

IPCとしての共有メモリー・セグメントを許可するように構成されたTimesTenデータ・ストアに対する複数のクライアント/サーバー接続を作成する場合、TimesTenでセマフォを作成できなかったことを示すエラーが発生することがあります。

セマフォの制限はプラットフォームに依存しています。詳細は、オペレーティング・システムのドキュメントおよび『Oracle TimesTen In-Memory Databaseインストレーション・ガイド』のセマフォの数の増加に関する説明を参照してください。