4.4 データベースの構成要素|エディラボ

お問い合わせ・お申し込みはお気軽に「0120-876-544」

  • 研修コースをさがす
  • サービスをさがす
  • 新着情報
  • 無料セミナー/イベント情報

4.4 データベースの構成要素

物理的な構成要素の具体例としてOracleデータベースの以下の要素について紹介します。

  • ● メモリ
  • ● ファイル
  • ● データファイルと表領域の関係

まず、Oracleサーバ全体のイメージを以下に示します。

図4-5 Oracleサーバの全体のイメージ

図4-5 Oracleサーバの全体のイメージ

4.4.1 メモリ

メモリ領域は、SGAとPGAの領域に大別できます。
SGAはShared Global Areaの略で、共有メモリ領域を指します。
PGAはProgram Global Areaの略で、クライアントからの要求に対する処理を行うサーバプロセスの排他的メモリ領域を指します。
SGAの代表的な構成要素には、共有プール、DBバッファキャッシュ、REDOログバッファ、LARGEプール、JAVAプールなどがあります。

メモリ全体

図4-6 メモリ要件の検討

図4-6 メモリ要件の検討

メモリサイズは初期化パラメータで設定します。
最初に設定した値で実際にアプリケーションを実行してみて、統計情報の取得、パラメータ値の変更、再稼動という手順を繰り返すことによって最適な値を求めます。
このとき、値の変更は1コンポーネントごとに行います。
値が最適かどうかを判断するには、1つずつ検証しないと、どのパラメータの変更が有効だったかわからないからです。

Oracleが使用できるメモリ領域が大きいほど、データベース処理の性能は向上します。
実メモリからOSが使用するメモリ領域を除き、他のアプリケーションとの割合で決めます。

メモリ要件を決めるのは、パラメータファイル内のパラメータ値です。
Oracle9iから、データベース稼働中に動的にパタメータを変更することが可能になりました。

PGA

図4-7 PGA

図4-7 PGA

PGAサイズ

SQL作業領域(XXX_AREA_SIZEパラメータで指定できる領域)およびスタック領域をもとに算出します。

SORT_AREA_SIZE=nMB
HASH_AREA_SIZE=nMB
BITMAP_MERGE_AREA_SIZE=nMB

PGAの自動調整機能を使用します(共有サーバの場合は不可)。

PGA_AGGREGATE_JARGET=nMB(PGAサイズの合計値)
WORKAREA_SIZE_POLICY=AUTO(自動チューニングを有効化)

PGAの初期サイズ

PGAに割り当てる初期メモリサイズは、大まかに見積って以下のように考えることができます。
ただし、初期値は必ず実稼動後の統計情報を確認して補正する必要があります。

アプリケーションによるメモリ要件として、DSS系のアプリケーションの場合は、大量のデータを読み込んで大規模なソートなどを行う領域としてPGAが使用されます。
そこで、DSS系のアプリケーションを実行する場合には、共有メモリ領域は最小限にして、なるべく多くの領域をPGAに割り当てるようにします。

PGAの領域を割り当てるためのパラメータは、XXX_AREA_SIZEという命名規則をもちます。
統計情報などから適切に見積ることができる場合は、手動でこの値を設定します。
見積ることが難しい場合は、PGAの集計値の最大サイズだけ指定しておいて(PGA_AGGREGATE_TARGET)、PGAの最適化をOracleサーバに任せることもできます。

  • ● OLTP系はOracleに割り当てるメモリサイズの20%くらいから
  • ● DSS系はOracleに割り当てるメモリサイズの70%くらいから

SGA

図4-8 SGA

図4-8 SGA

SGAサイズ

SGAの最大サイズは以下の式に当てはめて求めます。

SGA_MAX_SIZE=Oracleで使用する総メモリ量-PGAメモリ量

SGAに割り当てるメモリは、主に以下のパラメータで設定します。

メモリ パラメータ
共有プール SHARED_POOL_SIZE
DBバッファキャッシュ DB_CACHE_SIZE
REDOログバッファ LOG_BUFFER
ラージプール LARGE_POOL_SIZE
JAVAプール JAVA_POOL_SIZE

表4-2 SGAに割り当てるメモリと初期化パラメータ

SGAの初期サイズ

SGAに割り当てる初期メモリサイズはPGAの割合の反対になります。
OLTP系のトランザクションがメインで実行される環境の場合、共有メモリ領域SGAをなるべく大きく取得します。
ただし、初期値は必ず実稼動後の統計情報を確認して修正する必要があります。

  • ● OLTP系はOracleに割り当てるメモリサイズの80%くらいから
  • ● DSS系はOracleに割り当てるメモリサイズの30%くらいから

なお、SGAに割り当てるメモリサイズはグラニュルサイズの倍数にする必要があります。
グラニュルとは、連続する仮想メモリの単位で、以下の基準に基づき自動的に設定されます。

  • ● SGA_MAX_SIZE(初期化パラメータ)<128MB →グラニュルサイズ:4MB
  • ● SGA_MAX_SIZE>128MB →16MB

SHARED_POOL_SIZE、DB_CACHE_SIZEは、グラニユルサイズの倍数に指定します。
倍数にならない場合、切り上げて領域が取得されます。

Oracle9iから、データベースをシャットダウンしなくても、SGAサイズの一部を動的に変更できるようになりました。
これによって、日中はオンラインアプリケーションに有利なメモリサイズを指定しておき(SGAを大きく)、オンラインが収束したころにバッチに有利なメモリ割り当てを設定するように(PGAを大きく)、データベースを停止することなく、変更できるようになりました。

SGAサイズの変更

DBバッファキャッシュのサイズ変更は、初期パラメータでDB_CACHE_SIZEを指定したときのみ、動的変更が可能になります。
Oracle8iまでの初期化パラメータDB_BLOCK_BUFFERSを指定した場合は、動的に変更することはできません。

データベース設計についてもっと学びたいなら

> Oracle設計 研修コース一覧

具体的な作業イメージが掴みづらい概念設計を詳しく学べるコースです。
技術力に定評のあるトレーナー陣がデータベース設計作業をじっくり丁寧に解説し、スキルアップをサポートします。
また、ご要望に応じて一社向けに研修コースをカスタマイズすることも可能です。

スケジュールガイド

4.4 データベースの構成要素

エディフィストラーニングHOME