Oracle でのメモリのチューニング
ここでは、Oracle SGA(System Global Area)の設定に関する一般的な規則と、Oracle ユーザの PGA(Private Global Area)のサイズに影響するメモリ構造について説明します。SGA は、Oracle によって割り当てられる共有メモリのブロックであり、すべてのセッションで共有されます。SGA の詳細については、使用している Oracle リリースの『Oracle Database 概要』をご参照ください。
-
SGA をスワップさせない
SGA のサイズがサーバ上の物理メモリ(RAM)サイズの 2/3 を超えないようにしてください。SGA およびサーバ上のすべてのアクティブ プロセスに必要なリソースは、仮想メモリの許容範囲内でなければなりません。
-
過度のページングを回避する
オペレーティング システム ツール(UNIX システムの vmstat、Windows のタスク マネージャ)を使用して、ページングが過度に発生していないことを確認してください。SGA のサイズが大きすぎると、ページングが頻発することがあります。
-
十分な仮想メモリを設定する
Oracle では原則として、スワップ領域を物理 RAM の 3 ~ 4 倍以上に設定することを推奨しています。UNIX のスワップ ファイルまたは Windows のページ ファイルに必要なサイズは、アクティブな ArcSDE セッションの数に依存します。ArcSDE サービス(アプリケーション サーバ)のセッションごとに、gsrvr プロセスとそれに対応する Oracle プロセスが起動します。これらのプロセスのメモリ消費を確認するには、UNIX システムの ps -elf コマンドか、Windows タスク マネージャの [プロセス] タブを使用します。Oracle ユーザ プロセスから、Oracle SGA のサイズを差し引く必要があります。ArcSDE の gsrvr プロセスと giomgr プロセス、Oracle のユーザ プロセスとバックグラウンド プロセス、オペレーティング システム プロセス、およびサーバ上で起動しているその他のプロセスの合計サイズは、仮想メモリの許容範囲内でなければなりません。
Oracle インスタンスへのダイレクト コネクションを使用する ArcSDE クライアント アプリケーションでは、gsrvr プロセスは生成されません。また、すべてのクライアント アプリケーションが Oracle インスタンスへのダイレクト コネクションを使用し、ArcSDE サービスを使用しない場合は、giomgr プロセスも生成されません。このため、ダイレクト コネクションを使用するほうが、サーバ上でのメモリ消費が少なくなります。メモリに影響を与えるパラメータには、LOG_BUFFERSHARED_POOL_SIZE、DB_CACHE_SIZE、PGA_AGGREGATE_TARGET、SGA_TARGET、WORKAREA_SIZE_POLICY などがあります。
これらのパラメータの説明と推奨される設定については、「Oracle の初期化パラメータ」をご参照ください。
-
表領域の割り当てを明示的に設定して、利用可能な格納領域を使い果たしてしまうことを避ける
SDE ユーザ、ユーザ スキーマに格納されたジオデータベースの所有者、データの所有者など、Oracle オブジェクトを作成する権限を持つユーザは、2 つの方法のどちらかを使用して格納領域にアクセスすることができます。すなわち、UNLIMITED TABLESPACE システム権限を行使する方法と、表領域の明示的な割り当て制限を受ける方法です。
UNLIMITED TABLESPACE 権限では、Oracle が管理する SYSTEM 表領域および SYSAUX 表領域を含め、データベース内のすべての表領域で、領域を無制限に使用することができます。これにより、エンド ユーザが故意にまたは誤って、利用可能な格納領域をすべて使い果たしてしまい、Oracle インスタンスをクラッシュさせる可能性もあります。このため、この強力なシステム権限は DBA(データベース管理者)ユーザにのみ許可するのが得策です。
DBA 以外のユーザについて Oracle オブジェクトの作成を制御できるようにするには、そのユーザに 1 つ以上の表領域に対する割り当て制限を設定します。たとえば、ユーザが GIS_ADMIN データの所有者である場合は、GIS_DATA 表領域と GIS_INDEX 表領域に割り当て制限を設定し、SYSTEM 表領域と SYSAUX 表領域には割り当てを付与しないようにします。そうすれば、データ所有者がテーブルとインデックスを作成できる場所を制御できるようになり、必要に応じて、それらのオブジェクトに使用できる領域を制御することもできます。
DBA は通常、プロジェクト インスタンス管理者とデータを所有するユーザに対して、各表領域の割り当てを無制限にするか、まったく設定しないかのどちらかです。これにより、DBA はデータが物理的に格納される場所を制御し(データの保護を強化するためにミラー化されたディスク アレイに格納するなど)、システム データおよび他のプロジェクトやアプリケーションのデータとは別の論理コンテナにデータを分離することができます。割り当てを無制限にすると、データ所有者は自分がアクセスできる表領域に必要なだけ領域を割り当てることが可能になります。通常、これは適切な措置です。データ所有者アカウントを使用できるユーザは、一般に、必要なトレーニングや経験を積んでおり、DBA よりも GIS データの格納要件をよく知っていることが多いからです。
データを編集するユーザと表示するユーザに(ジオプロセシング操作の出力など)独自のジオデータベース オブジェクトの作成が許可される環境では、書き込みアクセスの権限を持つユーザに対して表領域の割り当てを制限することが得策です。たとえば、GIS_DATA 表領域で、データを表示するユーザに 100MB の割り当て制限、データを編集するユーザに 500MB の割り当て制限、データの所有者に無制限の割り当てを設定することができます。割り当て制限の設定は、データ プロセスとビジネス プロセスの特定の要件に合わせてカスタマイズする必要があります。