Oracle Database管理者リファレンス 11gリリース1(11.1) for Linux and UNIX-Based Operating Systems E05786-05 |
|
![]() 戻る |
![]() 次へ |
この付録では、AIXシステムでOracle Databaseを管理する方法について説明します。次の項目について説明します。
プロセスに必要なメモリーが、使用できるメモリーよりも大きい場合、メモリーの競合が発生します。このような不足に対処するため、メモリーとディスク間でプログラムおよびデータのページングが行われます。
この項では、次の項目について説明します。
大量のページング・アクティビティにより、パフォーマンスは大幅に低下します。これは、ジャーナル・ファイル・システム(JFSおよびJFS2)上に作成されたデータベース・ファイルで問題になることがあります。この状況では、大量のSGAデータ・バッファに、最も参照頻度の高いデータを含んだ類似したファイル・システム・バッファが存在する可能性があります。AIXファイル・バッファ・キャッシュ・マネージャの動作は、パフォーマンスに大きな影響を与えます。このため、入出力ボトルネックが発生し、システム全体のスループットが低下する可能性があります。
バッファ・キャッシュのページング・アクティビティはチューニングが可能ですが、注意を払い、頻度を制限して行う必要があります。/usr/sbin/vmo
コマンドを実行して、次の表に示すAIXシステム・パラメータをチューニングしてください。
関連項目: AIXシステム・パラメータの詳細は、『AIX 5L Performance Management Guide』を参照してください。 |
AIXファイル・バッファ・キャッシュの目的は、ジャーナル・ファイル・システム使用時のディスクへのアクセス頻度の削減です。このキャッシュが小さすぎる場合、ディスク使用率が増加して、1つ以上のディスクが一杯になる可能性があります。キャッシュが大きすぎる場合、メモリーが消費されます。
minperm
およびmaxperm
パラメータを調整して、AIXファイル・バッファ・キャッシュを構成できます。通常、バッファ・ヒット率がsar Eb
コマンドにより低く指定される場合(90%未満)、minperm
パラメータ値を大きくしてください。高いバッファ・ヒット率を確保する必要がない場合、minperm
パラメータ値を小さくすると、使用可能な物理メモリーが増加します。AIXファイル・バッファ・キャッシュのサイズを増加する方法の詳細は、AIXのドキュメントを参照してください。
マルチプログラミングの程度および作業負荷の入出力特性によりパフォーマンスは異なるため、パフォーマンスの向上の数値化は簡単ではありません。
AIXには、次のガイドラインに従ってminperm
およびmaxperm
値を調整することにより、計算(作業またはプログラム・テキスト)セグメントで使用されるページ・フレームではなく、ファイルで使用されるページ・フレームの比率を大まかに制御できるメカニズムがあります。
実メモリー内でファイル・ページが占める割合がminperm
値より低い場合、仮想メモリー・マネージャ(VMM)ページ置換アルゴリズムにより、再ページ率に関係なく、ファイルおよび計算ページの両方が取得されます。
実メモリー内でファイル・ページが占める割合がmaxperm
値より高い場合、VMMページ置換アルゴリズムにより、ファイルおよび計算ページの両方が取得されます。
実メモリー内でファイル・ページが占める割合がmaxperm
とmaxperm
パラメータ値の間の場合、VMMにより、通常、ファイル・ページのみが取得されます。ただし、ファイル・ページの再ページ率が、計算ページの再ページ率よりも高い場合、計算ページも取得されます。
デフォルト値を計算するには、次のアルゴリズムを使用します。
minperm
(ページ数) = ((ページ・フレームの数)-1024)×0.2
maxperm
(ページ数) = ((ページ・フレームの数)-1024)×0.8
次のコマンドを使用して、minperm
パラメータ値をページ・フレームの総数の5%に変更し、maxperm
パラメータ値をページ・フレームの総数の20%に変更します。
# /usr/sbin/vmo -o minperm%=5 -o maxperm%=20
デフォルト値は、それぞれ20%および80%です。
新しいデータベース接続をオープンする再の即時応答を最適化するには、minfree
パラメータを調整してシステム内に十分な空きページを確保し、空きリストにページを追加せずにアプリケーションをメモリーにロードします。プロセスの実メモリー・サイズ(常駐セット・サイズ、ワーキング・セット)を判断するには、次のコマンドを使用します。
$ ps v process_id
minfree
パラメータに、この値または8フレームのいずれか大きい値を設定します。
ダイレクト入出力を使用している場合、minperm
およびmaxperm
パラメータを低い値に設定できます。たとえば、それぞれ5%および20%に設定します。これは、AIXファイル・バッファ・キャッシュがダイレクト入出力では使用されないためです。メモリーを、Oracleシステム・グローバル領域などの他の目的に有効に利用できます。
ページング領域(スワップ領域)の割当てが不十分な場合、通常、システムの応答が停止したり、応答時間が非常に遅くなります。AIXでは、ページング領域をRAWディスク・パーティションに動的に追加できます。構成する必要があるパーセンテージ領域の大きさは、存在する物理メモリーの量およびアプリケーションのページング領域の要件により異なります。lsps
コマンドを使用してページング領域の使用量を監視し、vmstat
コマンドを使用してシステムのページング・アクティビティを監視します。ページング領域を監視するには、smit pgsp
コマンドを使用してください。
ページング領域が事前に割り当てられている場合、ページング領域をRAMの量よりも大きい値に設定することをお薦めします。ただし、AIXではページング領域は必要になるまで割り当てられません。システムでは、実メモリーが不足した場合にのみスワップ領域が使用されます。メモリーのサイズが正しく設定されている場合、ページングが行われないため、ページング領域を小さくできます。要求されるページ数が大きく変動しない作業負荷の場合、小さいページング領域で適切に動作します。ページングが周期的に極端に増加する作業負荷の場合、最大ページ数を処理できる十分なページング領域が必要です。
通常、ページング領域の初期設定は、RAMの半分のサイズに4GBを加えた値で、32GBが上限です。lsps -a
コマンドを使用してページング領域を監視し、結果に従いページング領域を増減してください。lsps -a
により出力される計測値%Used
は、通常、適正なシステムの25%未満です。サイズが適切なデプロイではページング領域はほとんど必要ありませんが、スワッピングが大量に発生する場合、システム上のRAMのサイズが小さすぎる可能性があります。
注意: ページング領域のサイズを小さくしないでください。小さくすると、領域が不足してアクティブなプロセスが終了します。ページング領域が大きすぎても、問題になる影響はほとんどありません。 |
頻繁に大量のページングが発生する場合、実メモリーが過剰にコミットされています。通常、次のように対処します。
システムに超高速の拡張記憶域が装備され、メモリーと拡張記憶域の間のページングが、OracleによるSGAとディスク間のデータの読取り/書込みよりはるかに速くないかぎり、ページングが頻繁に発生しないようにします。
システム・パフォーマンスが最も向上する場所に、制限されたメモリー・リソースを割り当てます。メモリー・リソース要件とその影響のバランスを取るために、この処理が繰り返し必要な場合があります。
メモリーが適切でない場合、システム内のメモリーを必要とするプロセスおよび要素を優先順に並べたリストを作成します。パフォーマンスが最も向上する場所に、メモリーを割り当てます。次のようにして、優先順に並べます。
OSおよびRDBMSのカーネル
ユーザー・プロセスおよびアプリケーション・プロセス
REDOログ・バッファ
PGAおよび共有プール
データベース・ブロック・バッファ・キャッシュ
たとえば、Oracle Databaseの動的パフォーマンス表およびビューを問い合せた結果、共有プールおよびデータベース・バッファ・キャッシュの両方にメモリーを追加する必要があるとします。この時、データベース・ブロック・バッファ・キャッシュではなく共有プールに、制限された予備のメモリーを割り当てると、パフォーマンスが向上します。
次のAIXコマンドを実行すると、ページングの状況および統計が表示されます。
vmstat -s
vmstat
interval
[
repeats
]
sar -r
interval
[
repeats
]
Oracle Databaseのブロック・サイズを構成すると、入出力スループットを改善できます。AIXでは、DB_BLOCK_SIZE
初期化パラメータの値を、デフォルト値を4KBとして、2〜32KBの間に設定できます。Oracle Databaseがジャーナル・ファイル・システムにインストールされている場合、ブロック・サイズをファイル・システムのブロック・サイズ(JFSでは4KB、GPFSでは16K〜1MB)の倍数にする必要があります。データベースがRAWパーティション上にある場合、Oracle Databaseのブロック・サイズをオペレーティング・システムの物理ブロック・サイズ(AIXでは512バイト)の倍数にする必要があります。
Oracle Databaseのブロック・サイズは、オンライン・トランザクション処理または複合作業負荷の環境では小さく(2または4KB)設定し、意思決定支援システム作業負荷の環境では大きく(8、16または32KB)設定することをお薦めします。
LOG_BUFFER
サイズを大きくすることにより、特にトランザクションが長く数が多い場合、データベースをアーカイブする速度が向上します。ログ・ファイル入出力アクティビティおよびシステム・スループットを監視し、最適なLOG_BUFFER
サイズを判断してください。通常のデータベース・アクティビティのパフォーマンス全体が低下しないように注意して、LOG_BUFFER
をチューニングします。
注意: LOG_ARCHIVE_BUFFER_SIZE パラメータは、Oracle8i Databaseで廃止されました。 |
データを並列的にロードしながら、SQL*Loaderダイレクト・パッチ・オプションを使用してデータを高速にロードする場合、CPU時間の大半が入出力完了の待機時間として使用されます。バッファ数を増やすことにより、CPU使用率が最大化して、スループット全体が向上します。
選択するバッファ数(SQL*LoaderのBUFFERS
パラメータで設定)は、使用可能なメモリー量および最大化するCPU使用率により異なります。
パフォーマンスの向上は、CPU使用率およびデータのロードの際に使用する並列度により異なります。
関連項目: BUFFERS パラメータのファイル処理オプション文字列の調整およびSQL*Loaderユーティリティの詳細は、『Oracle Databaseユーティリティ』を参照してください。 |
インポート・ユーティリティ用のBUFFER
パラメータを大きい値に設定し、高速ネットワークのパフォーマンスを使用時に最適化する必要があります。たとえば、IBM RS/6000 Scalable POWER parallel Systemsスイッチを使用する場合、BUFFER
パラメータを1MB以上の値に設定する必要があります。
ディスク入出力の競合は、メモリー管理が不適切な場合(その結果としてページングおよびスワッピングが発生)、またはディスク間の表領域およびファイルの配分が不適切な場合に発生します。
filemon
、sar
、iostat
などのAIXユーティリティおよびその他のパフォーマンス・ツールを使用して入出力アクティビティの高いディスクを識別し、複数のディスク・ドライブに入出力アクティビティを均等に分散させてください。
この項では、次の項目について説明します。
AIX論理ボリューム・マネージャは、複数のディスクにまたがりデータをストライプ化することで、ディスクの競合を削減します。ストライプ化の主な目的は、容量の大きい順次ファイルの読取り/書込みの際に、パフォーマンスを向上させることです。論理ボリューム・マネージャのストライプ機能を効果的に使用すると、ディスク間に入出力をより均等に分散できるため、パフォーマンス全体が向上します。
注意: 自動ストレージ管理ディスク・グループに論理ボリュームを追加しないでください。自動ストレージ管理は、RAWディスク・デバイスがディスク・グループに追加された場合に最も効果的に機能します。自動ストレージ管理を使用している場合、論理ボリューム・マネージャを使用してストライプ化を行わないでください。自動ストレージ管理は、ストライプ化およびミラー化を実装します。 |
ストライプ化論理ボリュームを定義する際、次の表に示す項目を指定する必要があります。
項目 | 推奨設定 |
---|---|
ドライブ | 2つ以上の物理ドライブが必要です。パフォーマンス重視の順次入出力を実行する場合、これらのドライブのアクティビティを最小にする必要があります。複数のアダプタ間での論理ボリュームのストライプ化が必要な場合もあります。 |
ストライプ・ユニット・サイズ | ストライプ・ユニットには2の累乗(2〜128KB)を指定できますが、32KBおよび64KBのストライプ・サイズが大半の作業負荷に適しています。Oracle Databaseファイルの場合、ストライプ・サイズはデータベース・ブロック・サイズの倍数です。 |
サイズ | 論理ボリュームに割り当てる物理パーティションの数を、使用するディスク・ドライブ数の倍数にする必要があります。 |
属性 | ミラー化できません。copies 属性の値を1に設定します。 |
その他の考慮事項
論理ボリューム・マネージャを効果的に使用した結果得られるパフォーマンスの向上は、使用する論理ボリューム・マネージャおよび作業負荷の特性により大きく異なります。意思決定支援システムの作業負荷では、パフォーマンスが大幅に向上します。オンライン・トランザクション処理タイプまたは複合の作業負荷の場合、大幅なパフォーマンスの向上が期待できます。
ジャーナル・ファイル・システムまたはRAW論理ボリュームの使用を決定する際に、次のことを考慮してください。
ファイル・システムは、実装の多様化に伴い、継続的に改善されています。
ファイル・システムには、追加構成(AIXのminservers
およびmaxservers
パラメータ)が必要であり、ファイル・システム上の非同期入出力がカーネルの外部で実行されるため、CPUのオーバーヘッドが少し増加します。
異なるベンダーが、各ディスクの長所を生かすために、様々な方法でファイル・システム・レイヤーを実装しています。その結果、プラットフォーム間でファイル・システムを比較することが困難になっています。
強力な論理ボリューム・マネージャ・インタフェースを導入すると、RAW論理ボリュームに基づく論理ディスクの構成およびバックアップのタスクが大幅に削減できます。
AIX 5Lに含まれるダイレクト入出力および同時入出力機能により、ファイル・システムのパフォーマンスは、RAW論理ボリュームと同じレベルまで向上します。
以前のバージョンのAIXでは、ファイル・システムはバッファへの読取り/書込みのみをサポートしており、inodeロックが不完全なために余計な競合が発生しました。この2つの問題は、JFS2コンカレント出入力機能およびGPFSダイレクト入出力機能により解消されています。
注意: Oracle RACオプションを使用するには、データファイルを自動ストレージ管理ディスク・グループまたはGPFSファイル・システム上に配置する必要があります。JFSまたはJFS2は使用できません。GPFSを使用すると、ダイレクト入出力は暗黙的に有効になります。 |
AIX 5Lでは、ダイレクト入出力およびコンカレント入出力がサポートされています。ダイレクト入出力およびコンカレント入出力のサポートによって、データベース・ファイルがファイル・システム上に存在できるようになります。これは、Oracle Databaseが提供する機能を使用して、オペレーティング・システムのバッファ・キャッシュを回避し、冗長なinodeロック操作を排除することで実現されます。
可能な場合、コンカレント入出力またはダイレクト入出力を、Oracleデータファイルが含まれるファイル・システム上で有効にすることをお薦めします。次の表に、AIXで使用できるシステムおよび推奨される設定を示します。
ファイル・システム | オプション | 説明 |
---|---|---|
JFS | dio | JFSではコンカレント入出力は使用できません。ダイレクト入出力は使用できますが、コンカレント入出力を使用したJFS2と比較してパフォーマンスが劣ります。 |
JFSラージ・ファイル | なし | 128KBの位置合せ制約によりダイレクト入出力が使用できないため、JFSラージ・ファイルのOracle Databaseでの使用はお薦めしません。 |
JFS2 | cio | コンカレント入出力は同一のファイルに対して複数のコンカレント・リーダーおよびライターをサポートしているため、ダイレクト入出力よりもコンカレント入出力がJFS2に適しています。ただし、JFS2/CIO上でのAIX制限により、コンカレント入出力はOracleデータファイル、制御ファイルおよびログ・ファイルでのみ使用されます。このような目的専用のファイル・システムにのみ適用してください。同様に、cio オプションでマウントするJFS2ファイル・システム上では、Oracleホーム・ディレクトリはサポートされません。たとえば、インストール時に、CIOオプションでマウントしたJFS2ファイル・システムにOracleホーム・ディレクトリを誤って指定した場合、Oracleに再リンクを試みると、次のエラーが発生することがあります。
|
GPFS | 該当なし | Oracle Databaseでは、パフォーマンスを最適化するために、GPFS上でダイレクト入出力が予告なしに有効化されます。GPFSのダイレクト入出力は、すでに複数のノード上の複数のリーダー/ライターをサポートしています。したがって、GPFSのダイレクト入出力およびコンカレント入出力は同じです。 |
Oracle DatabaseログをJFS2ファイル・システムに置いている場合、構成を最適化するには、agblksize=512
オプションを使用してファイル・システムを作成し、cio
オプションでマウントします。
Oracle Database 11gより前のリリースでは、ダイレクト入出力およびコンカレント入出力がJFS/JFS2のファイル・レベルでは有効化されませんでした。したがって、パフォーマンスの最適化のために、Oracleホーム・ディレクトリおよびデータファイルを個別のファイル・システムに配置する必要がありました。この時、Oracleホーム・ディレクトリをデフォルトのオプションでマウントしたファイル・システム上に配置し、データファイルおよびログをcio
およびcio
オプションを使用してマウントしたファイル・システム上に配置していました。
Oracle Database 11gでは、ダイレクト入出力およびコンカレント入出力をJFS/JFS2のファイル・レベルで有効化できます。そのためには、サーバー・パラメータ・ファイル内のFILESYSTEMIO_OPTIONS
パラメータをsetall
またはdirectIO
に設定します。これにより、JFS2のコンカレント入出力およびJFSのダイレクト入出力が、すべてのデータファイル入出力に対して有効になります。direstIO
設定により、通常は使用しない非同期入出力が無効化されるためです。この11g機能の結果、データファイルをOracleホーム・ディレクトリと同一のJFS/JFS2ファイル・システムに配置し、コンカレント入出力を使用してパフォーマンスを向上できます。前述したように、パフォーマンスを最適化するためには、Oracle Databaseログを個別のJFS2ファイル・システム上に配置する必要があります。
GPFSを使用している場合、すべての目的に対して同一のファイル・システムを使用できます。Oracleホーム・ディレクトリ用、およびデータファイルやログの格納用などに使用できます。最適なパフォーマンスを得るには、規模の大きなGPFSブロック・サイズ(通常、512KB以上)を使用する必要があります。GPFSはスケーラビリティを確保するように設計されており、データ量が単一のGPFSファイル・システムに納まるかぎり、複数のGPFSを作成する必要はありません。
ジャーナル・ファイル・システムからRAW論理ボリュームへの移動
すべてのデータを手動で再ロードせずに、ジャーナル・ファイル・システムからRAWデバイスにデータを移動するには、次の手順をroot
ユーザーで実行します。
新規RAW論理ボリューム・デバイス・タイプ(-T O
)を使用してRAWデバイス(BigVGを推奨)を作成します。これにより、最初のOracleブロックをオフセット0(ゼロ)にでき、最適なパフォーマンスを得ることができます。
# mklv -T O -y new_raw_device VolumeGroup NumberOfPartitions
注意: RAWデバイスは、既存のファイルよりも大きくする必要があります。また、新規RAWデバイスのサイズが領域を無駄にしないように注意する必要があります。 |
RAWデバイスに対する権限を設定します。
次のように、dd
を使用してJFSファイルの内容を変換し、新規RAWデバイスにコピーします。
# dd if=old_JFS_file of=new_raw_device bs=1m
データファイルの名前を変更します。
RAW論理ボリュームからジャーナル・ファイル・システムへの移動
RAW論理ボリュームの最初のOracleブロックは、必ずしもオフセット0(ゼロ)ではありません。ただし、ファイル・システムの最初のOracleブロックは、常にオフセット0(ゼロ)です。オフセットを決定して、RAW論理ボリュームの最初のブロックを特定するには、$ORACLE_HOME/bin/offset
コマンドを使用します。オフセットは、AIX論理ボリュームでは4096バイトまたは128KB、mklv -T O
オプションで作成したAIX論理ボリュームでは0(ゼロ)です。
オフセットの決定後、dd
コマンドを使用してオフセットをスキップし、RAW論理ボリュームからファイル・システムにデータをコピーできます。次に、オフセットを4096バイトと仮定した例を示します。
# dd if=old_raw_device bs=4k skip=1|dd of=new_file bs=256
RAW論理ボリュームの最大容量よりも少ないブロック数を使用するように、Oracle Databaseに指示できます。この場合、count
句を追加して、Oracleブロックを含んでいるデータのみをコピーする必要があります。次に、オフセットを4096バイト、Oracleブロック・サイズを8KBおよびブロック数を15000と仮定した例を示します。
# dd if=old_raw_device bs=4k skip=1|dd bs=8k count=150000|dd of=new_file bs=256k
Oracle Databaseでは、AIXが提供する非同期入出力を最大限に活用するため、高速のデータベース・アクセスが可能です。
AIX 5Lは、ファイル・システム・パーティションで作成されるデータベース・ファイルに対する非同期入出力をサポートします。ファイル・システムに対する非同期入出力を使用する場合、要求がキューから取り出されてから処理が完了するまで、カーネル・データベース・プロセス(aioserver
)が各要求を制御します。aioserver
サーバーの数により、システムで同時に処理できる非同期入出力要求の数が決定されます。このため、ファイル・システムを使用してOracle Databaseデータファイルを格納する場合、aioserver
プロセスの数をチューニングする必要があります。
次のどちらかのコマンドを使用して、サーバー数を設定します。これは、ファイル・システムに対して非同期入出力を使用する場合にのみ適用されます。
smit aio
chdev -l aio0 -a maxservers='
m
' -a minservers='
n
'
関連項目:
|
注意: AIX 5Lバージョン5.2以降では、2つの非同期入出力サブシステムを使用できます。Oracle Database 11gでは、Oracleインストール前スクリプトによりレガシー非同期入出力(aio0 )およびPOSIX AIO(posix_aio0 )が有効化される場合にも、レガシー非同期入出力(aio0 )が使用されます。これらの非同期入出力サブシステムのパフォーマンス特性は同じです。 |
最小値を、システムの起動時に起動するサーバーの数に指定します。最大値を、多数の同時要求に応答するために起動できるサーバーの数に指定します。これらのパラメータは、ファイル・システムのみに適用されます。
サーバーの最小数のデフォルト値は1です。サーバーの最大数のデフォルト値は10です。カーネル化された非同期入出力を使用していない場合、CPUを4つ以上搭載する大規模なシステムでORACLE DATABASEを実行するには、通常、これらの値は低すぎます。このパラメータに、次の表に示す値を設定することをお薦めします。
パラメータ | 値 |
---|---|
minservers |
初期値としては、システム上のCPUの数または10のうち、いずれか小さい値を設定することをお薦めします。 |
maxservers |
AIX 5Lバージョン5.2以降では、このパラメータを使用して、各CPUの非同期入出力サーバーの最大数をカウントします。以前のバージョンのAIXでは、システム全体の値がカウントされていました。General Parallel File System(GPFS)を使用している場合、CPU数で除算したworker1threadsにmaxservers を設定します。これが最適な設定です。maxservers を大きくしても、入出力のパフォーマンスは向上しません。
JFS/JFS2を使用している場合、CPU数で除算した論理ディスク数を10倍した値に初期値を設定します。 |
maxreqs |
論理ディスク数とキューの深さの積を4倍した値に初期値を設定します。次のコマンドを実行して、キューの深さを確認できます。
$ lsattr -E -l hdiskxx
通常、キューの深さは3です。 |
maxservers
またはmaxreqs
パラメータの値が低すぎると、次の警告メッセージが繰返し表示される場合があります。
Warning: lio_listio returned EAGAINPerformance degradation may be seen.
maxservers
パラメータの値を大きくして、これらのエラーが発生しないようにします。稼働中の非同期入出力サーバーを表示するには、次のコマンドをroot
ユーザーで入力します。
# pstat -a | grep -c aios # ps -k | grep aioserver
アクティブな非同期入出力サーバー数を定期的にチェックし、必要に応じてminservers
およびmaxservers
パラメータの値を変更します。システムを再起動すると、変更が有効化されます。
入出力スレーブは、入出力のみを実行する特別なOracleプロセスです。非同期入出力がデフォルトであり、OracleでのAIXに対する入出力操作の実行に推奨されている方法であるため、これはAIXではほとんど使用されません。入出力スレーブは、共有メモリー・バッファから割り当てられます。入出力スレーブは、次の表に示す初期化パラメータを使用します。
パラメータ | 許容値 | デフォルト値 |
---|---|---|
DISK_ASYNCH_IO |
true /false |
true |
TAPE_ASYNCH_IO |
true /false |
true |
BACKUP_TAPE_IO_SLAVES |
true /false |
false |
DBWR_IO_SLAVES |
0〜999 | 0 |
DB_WRITER_PROCESSES |
1〜20 | 1 |
通常、この表のパラメータは調整しません。ただし、作業負荷が大きいと、データベース・ライターがボトルネックになる場合があります。その場合は、DB_WRITER_PROCESSES
の値を大きくします。このデータベース・ライター・プロセスの数は、システムまたはパーティション内でCPUのペアにつき1つです。原則として、この数は増やさないでください。
非同期入出力の無効化が必要な場合があります。たとえば、デバッグのためにOracleサポートから指示された場合などです。DISK_ASYNCH_IO
およびTAPE_ASYNCH_IO
パラメータを使用すると、ディスクまたはテープ・デバイスの非同期入出力を無効化できます。各プロセス・タイプの入出力スレーブの数は、デフォルトで0(ゼロ)に設定されているため、デフォルトでは入出力スレーブがデプロイされません。
DISK_ASYNCH_IO
またはTAPE_ASYNCH_IO
パラメータがfalse
に設定されている場合にのみ、DBWR_IO_SLAVES
パラメータを0(ゼロ)より大きい値に設定します。それ以外の場合、データベース・ライター・プロセスがボトルネックになります。この場合、DBWR_IO_SLAVES
のAIXでの最適値は4です。
Oracle Database 11gでダイレクト入出力またはコンカレント入出力を使用している場合、AIXファイル・システムでは、順次スキャンの先読みが実行されません。このため、ダイレクト入出力またはコンカレント入出力がOracleデータファイルで有効化されている場合、サーバー・パラメータ・ファイル内のDB_FILE_MULTIBLOCK_READ_COUNT
値を大きくする必要があります。DB_FILE_MULTIBLOCK_READ_COUNT
初期化パラメータの指定により、Oracle Databaseが先読みを実行します。
DB_FILE_MULTIBLOCK_READ_COUNT
初期化パラメータに大きい値を設定すると、通常、順次スキャンでの入出力スループットが向上します。AIXではこのパラメータの範囲は1〜512ですが、16を超える値を使用しても、通常はそれ以上のパフォーマンス効果は得られません。
DB_BLOCK_SIZE
パラメータの値との積が論理ボリューム・マネージャ・ストライプ・サイズよりも大きくなるように、このパラメータを設定します。この設定により、使用できるディスクが増加します。
後書き機能を使用すると、オペレーティング・システムで書込み入出力をパーティションのサイズまでグループ化できます。これにより入出力操作の数が減るため、パフォーマンスが向上します。ファイル・システムでは、各ファイルが複数の16KBのパーティションに分割されるため、書込みパフォーマンスが向上し、メモリー内の使用済ページ数が制限され、ディスクの断片化が最小限に抑えられます。特定のパーティションのページは、プログラムにより次の16KBパーティションの1バイト目が書き込まれるまで、ディスクに書き込まれません。後書き用バッファのサイズを8つの16KBパーティションに設定するには、次のコマンドを入力します。
à # /usr/sbin/vmo -o numclust=8
後書きを無効化するには、次のコマンドを入力します。
à # /usr/sbin/vmo -o numclust=0
注意: この項の内容は、ダイレクト入出力またはコンカレント入出力のいずれも使用していないファイル・システムのみに適用されます。 |
VMMは順次ファイルのページの必要性を予測します。VMMにより、プロセスがファイルにアクセスするパターンが監視されます。プロセスがファイルの連続する2つのページにアクセスすると、VMMは、プログラムがファイルへの順次アクセスを続行すると予測し、ファイルに対する追加の順次読取りをスケジュールします。これらの読取りがプログラム処理とオーバーラップし、プログラムはデータをより高速に利用できます。カーネル・パラメータとして実装されている次のVMMしきい値が、先読みするページ数を決定します。
minpgahead
このパラメータは、VMMが最初に順次アクセス・パターンを検知した際に、先読みするページ数を格納します。
maxpgahead
このパラメータは、VMMが順次ファイルで先読みする最大ページ数を格納します。
minpgahead
およびmaxpgahead
パラメータを、アプリケーションに適した値に設定してください。デフォルト値は、それぞれ2および8です。/usr/sbin/vmo
コマンドを使用して、これらの値を変更します。ストライプ化論理ボリュームの順次パフォーマンスを重視する場合、システムのmaxpgahead
パラメータ値を高く設定します。minpgahead
パラメータを32ページに、maxpgahead
パラメータを64ページに設定するには、次のコマンドをroot
ユーザーで実行します。
-o minpgahead=32 -o maxpgahead=64
minpgahead
およびmaxpgahead
の両方のパラメータは、2の累乗に設定してください。たとえば、2、4、8、...512、1042、...などです。
ディスク入出力歩調合せは、ファイルに対して保留される入出力要求の数を、システム管理者が制限するためのAIXのメカニズムです。これにより、ディスク入出力使用率の高いプロセスによりCPUが飽和状態になるのを防ぐことができます。つまり、対話型プロセスやCPU使用率の高いプロセスの応答時間に遅延が発生しません。
ディスク入出力歩調合せを実行するには、最高水位標および最低水位標という2つのシステム・パラメータを調整します。保留中の入出力要求が最高水位標に達しているファイルに対して、プロセスが書込みを実行すると、プロセスはスリープ状態になります。未処理の入出力要求の数が最低水位標以下になると、プロセスはスリープ状態から解放されます。
最高水位標および最低水位標を変更するには、smit
コマンドを使用します。試行錯誤により、適切な水位標を決定してください。水位標はパフォーマンスに影響を与えるため、十分注意して設定してください。最高水位標および最低水位標のチューニングは、4KBを超えるディスク入出力ではほとんど効果はありません。
ディスク入出力が飽和状態であるかどうかを確認するには、iostat
の結果、特にiowait
およびtm_act
の割合を分析します。特定のディスクのiowait
の割合とtm_act
の割合が高い場合、ディスクが飽和状態であることを示します。iowait
のみが高い場合、必ずしも入出力のボトルネックを表すものではないことに注意してください。
RAW論理ボリュームに割り当てられたOracleデータファイルに対してミラー書込み整合性を無効にすると、Oracle Databaseのクラッシュ・リカバリ・プロセスによるシステム・エラー後のリカバリで、ミラーの復元が行われます。このミラーの復元プロセスにより、データベースの不整合や破損を防止できます。
クラッシュ・リカバリの際、論理ボリューム上のデータファイルに複数のコピーが割り当てられている場合、ミラー復元プロセスでは、そのコピーすべてのデータ・ブロックに対してチェックサムを実行します。その後、次のいずれかの処理を実行します。
コピー内のデータ・ブロックのチェックサムが有効である場合、ミラー復元プロセスではそのコピーを使用して、チェックサムが無効なコピーを更新します。
すべてのコピーでブロックのチェックサムが無効である場合は、REDOログ・ファイルの情報を使用してブロックを再構築します。次に、データファイルを論理ボリュームに書き込み、すべてのコピーを更新します。
AIXの場合、ミラー復元プロセスは、RAW論理ボリュームに割り当てられたデータファイルのうち、ミラー書込み整合性が無効になっているデータファイルに対してのみ機能します。ミラー化論理ボリューム上のデータファイルのうち、ミラー書込み整合性が有効になっているデータファイルには、ミラー書込み整合性によってすべてのコピーの同期が保証されているため、ミラー復元は必要ありません。
以前のリリースのOracle Databaseのアップグレード中にシステムに障害が発生し、論理ボリューム上のデータファイルのミラー書込み整合性が無効になっていた場合は、syncvg
コマンドを実行してミラー化論理ボリュームを同期化してから、Oracle Databaseを起動してください。ミラー化論理ボリュームを同期せずにデータベースを起動すると、論理ボリュームのコピーからデータが正しく読み取れない場合があります。
注意: ディスク・ドライブに障害が発生した場合、ミラー復元は行われません。syncvg コマンドを実行してから、論理ボリュームを再度アクティブにする必要があります。 |
注意: Oracleでは、データファイルに対してのみミラー復元がサポートされています。REDOログ・ファイルのミラー書込み整合性は無効にしないでください。 |
CPUも、プロセスの競合が発生する可能性のあるシステム・コンポーネントです。ほとんどの場合、AIXカーネルによりCPUが効果的に割り当てられますが、プロセスの多くはCPUサイクルをめぐって競合します。複数のCPU(SMP)が搭載されている場合は、各CPUで様々なレベルの競合が発生する可能性があります。
次の各項では、CPUのスケジューリングおよびプロセスの優先順位について説明します。
AIX RRディスパッチャのランタイム・スライスのデフォルト値は10ミリ秒(msec)です。タイム・スライスを変更するには、schedo
コマンドを使用します。タイム・スライスを長くすると、アプリケーションの自発的な切替率の平均が低い場合に、コンテキスト切替率も低くなります。その結果、プロセスのコンテキスト切替率に消費されるCPUサイクルが少なくなるため、システムのスループットが向上します。
ただし、ランタイム・スライスが長いと、特に単一プロセッサ・システムの場合、応答時間が遅くなる可能性があります。デフォルトのランタイム・スライスは通常、ほとんどのアプリケーションで使用できます。実行キューが大きく、多くのアプリケーションとOracleシャドウ・プロセスがかなり長時間にわたって実行できる場合、次のコマンドを入力して、タイム・スライスを長くできます。
# /usr/sbin/schedo -t n
このコマンドで、n
の値に0(ゼロ)を設定すると、タイム・スライスは10msecになり、1を設定すると20msec、2を設定すると30msecになります。
AIXのスレッドは、プロセス全体の競合範囲(M:N)またはシステム全体の競合範囲(1:1)により動作できます。環境変数AIXTHREAD_SCOPE
は、使用する競合範囲を制御します。
環境変数AIXTHREAD_SCOPE
のデフォルト値はP
で、これはプロセス全体の競合範囲です。プロセス全体の競合範囲を使用する場合、Oracleスレッドはカーネル・スレッドのプールにマップされます。Oracleがイベントを待機中にOracleスレッドがスワップ・アウトされると、スレッドIDが異なる別のカーネル・スレッドに戻る場合があります。Oracleでは待機中のプロセスをポストする際にスレッドIDを使用するため、スレッドIDが同じままである必要があります。システム全体の競合範囲を使用する場合、Oracleスレッドはカーネル・スレッドに1対1で静的にマップされます。このため、システム全体の競合を使用することをお薦めします。システム全体の競合の使用は、特にOracle Real Application Clusters(RAC)インスタンスには重要です。
さらに、AIX 5Lバージョン5.2以降では、システム全体の競合範囲を設定した場合、各Oracleプロセスに割り当てられるメモリー量がかなり少なくなります。
Oracle DatabaseインスタンスまたはOracle Net Listenerプロセスにおいて、環境変数ORACLE_HOME
またはORACLE_SID
の設定に使用する環境スクリプトで、次のように、環境変数AIXTHREAD_SCOPE
の値をS
に設定することをお薦めします。
Bourne、BashまたはKornシェルの場合
~/.profile
または/usr/local/bin/oraenv
スクリプトに次の行を追加します。
AIXTHREAD_SCOPE=S; export AIXTHREAD_SCOPE
Cシェルの場合
~/.login
または/usr/local/bin/coraenv
スクリプトに次の行を追加します。
setenv AIXTHREAD_SCOPE S
これにより、すべてのOracleプロセスの実行に対してシステム全体のスレッド範囲が有効になります。
AIXシステムでは、ネットワーク情報サービスの外部ネーミング・アダプタがサポートされています。ネットワーク情報サービス外部ネーミングの構成方法と使用方法の詳細は、『Oracle Database Net Services管理者ガイド』の「外部ネーミング・メソッドの構成」を参照してください。
マルチスレッド同時処理が有効でAIX 5.3オペレーティング・システムが使用されている場合、v$osstat
ビューは、オンライン論理(NUM_LCPUS
)および仮想CPU(NUM_VCPUS
)に対応した2つの行を追加して報告します。
AIX 5.2システムまたはAIX 5.3システムでマルチスレッド同時処理を使用せずにOracleを実行している場合、これらの行は報告されません。