プライマリ・コンテンツに移動
Oracle® Database管理者リファレンス
11gリリース2 (11.2) for Linux and UNIX-Based Operating Systems
B56317-12
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

A AIXシステムでのOracle Databaseの管理

この付録では、AIXシステムでOracle Databaseを管理する方法について説明します。内容は次のとおりです。

A.1 メモリーおよびページング

メモリーの競合は、プロセスに必要なメモリー量が、使用できる容量よりも大きくなったときに発生します。このようなメモリー不足に対処するため、メモリーとディスク間でプログラムおよびデータのページングが行われます。

この項では、次の項目について説明します。

A.1.1 バッファ・キャッシュのページング・アクティビティの制御

ページング・アクティビティが過剰に実行されると、パフォーマンスが大幅に低下します。これは、ジャーナル・ファイル・システム(JFSおよびJFS2)上に作成されたデータベース・ファイルで問題になることがあります。この状況では、大量のSGAデータ・バッファに、参照頻度の最も高いデータを含む、類似したファイル・システム・バッファが存在する可能性があります。AIXファイル・バッファ・キャッシュ・マネージャの動作は、パフォーマンスに大きく影響します。このため、入出力ボトルネックが発生し、システム全体のスループットが低下する可能性があります。

バッファ・キャッシュのページング・アクティビティはチューニングできますが、頻度を制限して慎重に行う必要があります。/usr/sbin/vmo コマンドを使用して、次の表に示すAIXシステム・パラメータをチューニングします。

パラメータ 説明
minfree 空きリストの最小サイズ。バッファ内の空きリスト領域がこのサイズを下回ると、ページ・スティーリングにより空きリストが補充されます。
maxfree 空きリストの最大サイズ。バッファ内の空きリスト領域がこのサイズを上回ると、ページ・スティーリングによる空きリストの補充が中止されます。
minperm ファイル入出力の永続バッファ・ページの最小数。
maxperm ファイル入出力の永続バッファ・ページの最大数。


関連項目:

AIXシステム・パラメータの詳細は、『AIX 5L Performance Management Guide』を参照してください。

A.1.2 AIXファイル・バッファ・キャッシュのチューニング

AIXファイル・バッファ・キャッシュの目的は、ジャーナル・ファイル・システム使用時のディスクへのアクセス頻度を減らすことです。このキャッシュが小さすぎると、ディスク使用率が増加して、1つ以上のディスクが一杯になる可能性があります。キャッシュが大きすぎると、メモリーが浪費されます。

AIXファイル・バッファ・キャッシュは、minpermおよびmaxpermパラメータを調整することで構成できます。一般に、sar -bコマンドで確認したバッファ・ヒット率が低い(90%未満)場合は、minpermパラメータ値を増やします。高いバッファ・ヒット率を維持する必要がない場合は、minpermパラメータ値を減らして使用できる物理メモリーを増やします。AIXファイル・バッファ・キャッシュのサイズを増加する方法の詳細は、AIXのドキュメントを参照してください。

パフォーマンスの向上は、マルチプログラミングの程度およびワークロードの入出力特性によって変化するため、簡単に数値化できません。

minpermおよびmaxpermパラメータのチューニング

AIXには、計算(作業またはプログラム・テキスト)セグメントに使用されるページ・フレームではなく、ファイルに使用されるページ・フレームの比率を大まかに制御するためのメカニズムがあります。次のガイドラインに従ってminpermおよびmaxperm値を調整して制御します。

  • 実メモリー内でファイル・ページが占める割合がminperm値を下回る場合は、再ページ率に関係なく、仮想メモリー・マネージャ(VMM)のページ置換アルゴリズムにより、ファイル・ページと計算ページの両方が取得されます。

  • 実メモリー内でファイル・ページが占める割合がmaxperm値を上回る場合は、VMMのページ置換アルゴリズムにより、ファイル・ページと計算ページの両方が取得されます。

  • 実メモリー内でファイル・ページが占める割合がパラメータ値minpermmaxpermの間にある場合は、VMMにより、通常はファイル・ページのみが取得されます。ただし、ファイル・ページの再ページ率が計算ページの再ページ率よりも高い場合は、計算ページも取得されます。

デフォルト値を計算するには、次のアルゴリズムを使用します。

  • minperm(ページ数)=((ページ・フレーム数)-1024)×0.2

  • maxperm(ページ数)=((ページ・フレーム数)-1024)×0.8

minpermパラメータの値をページ・フレームの総数の5%に変更し、maxpermパラメータの値をページ・フレームの総数の20%に変更するには、次のコマンドを使用します。

# /usr/sbin/vmo -o minperm percent=5 -o maxperm percent=20

デフォルト値は、それぞれ20%と80%です。

新しいデータベース接続をオープンする際のクイック・レスポンスを最適化するには、minfreeパラメータを調整して十分な空きページをシステム内に確保し、空きリストにページを追加せずにアプリケーションをメモリーにロードできるようにします。プロセスの実メモリー・サイズ(常駐セット・サイズ、ワーキング・セット)を確認するには、次のコマンドを使用します。

$ ps v process_id

minfreeパラメータに、この値または8フレームのうち、いずれか大きい方を設定します。

ダイレクト入出力を使用している場合は、minpermおよびmaxpermパラメータを低い値に設定できます。たとえば、それぞれ5%および20%に設定します。これは、AIXファイル・バッファ・キャッシュがダイレクト入出力に使用されないためです。メモリーは、Oracleシステム・グローバル領域などの他の目的に有効に利用できます。

A.1.3 十分なページング領域の割当て

通常、ページング領域(スワップ領域)が十分に割り当てられていないと、システムのレスポンスが停止したり、レスポンス時間が非常に遅くなります。AIXでは、RAWディスク・パーティションにページング領域を動的に追加できます。構成するページング領域の大きさは、実装されている物理メモリーの量およびアプリケーションのページング領域要件によって異なります。ページング領域の使用量を監視するには、lspsコマンドを使用します。システムのページング・アクティビティを監視するには、vmstatコマンドを使用します。ページング領域を増やすには、smit pgspコマンドを使用します。

ページング領域を事前に割り当てる場合は、ページング領域をRAMの量よりも大きい値に設定することをお薦めします。ただし、AIXでは、ページング領域は必要になるまで割り当てられません。システムでは、実メモリーが不足した場合にのみスワップ領域が使用されます。メモリーのサイズを正しく設定した場合は、ページングが行われないため、ページング領域を小さくできます。要求されるページ数が大きく変動しないワークロードの場合は、小さいページング領域でも適切に動作します。ページングが極端に増加する可能性があるワークロードの場合は、最大ページ数を処理できるだけの十分なページング領域が必要です。

一般に、ページング領域の初期設定は、RAMの半分のサイズに4GBを加えた値で、32GBが上限です。lsps -aコマンドを使用してページング領域の使用量を監視し、その結果に従ってページング領域のサイズを増減します。lsps -aにより出力されるメトリック%Usedは、正常なシステムでは通常25%未満です。サイズが適切なデプロイではページング領域はほとんど必要ありませんが、スワッピングが過剰に発生する場合は、システムのRAMのサイズが小さすぎる可能性があります。


注意:

ページング領域のサイズは小さくしないでください。小さくすると、領域が不足してアクティブなプロセスが終了します。一方、ページング領域のサイズが大きすぎても、悪影響はほとんどありません。

A.1.4 ページングの制御

過剰なページングが頻繁に発生する場合は、実メモリーが過剰にコミットされていることを示します。通常は、次のように対処します。

  • ベージングが頻繁に発生しないようにします。ただし、システムに超高速の拡張記憶域を装備し、メモリーと拡張記憶域間のページングが、Oracle DatabaseによるSGAとディスク間のデータの読取り/書込みよりも大幅に速くなる場合を除きます。

  • 制限されたメモリー・リソースを、システム・パフォーマンスが最も向上する場所に割り当てます。場合によっては、メモリー・リソース要件とその影響のバランスを取るために、この処理を繰り返し行う必要があります。

  • メモリーが不足している場合は、システム内のメモリーを必要とするプロセスおよび要素を優先順に並べたリストを作成します。パフォーマンスが最も向上する場所に、メモリーを割り当てます。優先順リストの例を次に示します。

    1. OSおよびRDBMSのカーネル

    2. ユーザー・プロセスおよびアプリケーション・プロセス

    3. REDOログ・バッファ

    4. PGAおよび共有プール

    5. データベース・ブロック・バッファ・キャッシュ

たとえば、Oracle Databaseの動的パフォーマンス表およびビューを問い合せた結果、共有プールとデータベース・バッファ・キャッシュの両方にメモリーを追加する必要があるとします。この場合、制限された予備メモリーは、データベース・ブロック・バッファ・キャッシュではなく共有プールに割り当てるとパフォーマンスが向上します。

次のAIXコマンドを実行すると、ページングのステータスおよび統計が表示されます。

  • vmstat -s

  • vmstat interval [repeats]

  • sar -r interval [repeats]

A.1.5 データベース・ブロック・サイズの設定

Oracle Databaseのブロック・サイズを構成すると、入出力スループットを改善できます。AIXでは、DB_BLOCK_SIZE初期化パラメータの値を2から32KBに設定できます。デフォルト値は4KBです。Oracle Databaseがジャーナル・ファイル・システムにインストールされている場合は、そのブロック・サイズをファイル・システムのブロック・サイズ(JFSでは4KB、GPFSでは16KBから1MB)の倍数にする必要があります。データベースがRAWパーティション上にある場合は、Oracle Databaseのブロック・サイズをオペレーティング・システムの物理ブロック・サイズ(AIXでは512バイト)の倍数にします。

Oracle Databaseのブロック・サイズは、オンライン・トランザクション処理ワークロードまたは複合ワークロードの環境では小さめ(2または4KB)に設定し、意思決定支援システム・ワークロードの環境では大きめ(8、16または32KB)に設定することをお薦めします。

A.1.6 ログ・アーカイブ・バッファのチューニング

トランザクションが長い場合や数が多い場合は特に、LOG_BUFFERサイズを大きくすることで、データベースのアーカイブ速度を向上させることができます。ログ・ファイル入出力アクティビティおよびシステム・スループットを監視して、最適なLOG_BUFFERサイズを決定します。LOG_BUFFERパラメータをチューニングするときは、通常のデータベース・アクティビティの全体的なパフォーマンスが低下しないように注意します。


注意:

LOG_ARCHIVE_BUFFER_SIZEパラメータは、Oracle8i Databaseで廃止されました。

A.1.7 入出力バッファおよびSQL*Loader

SQL*Loaderダイレクト・パス・オプションを使用しながらデータを並行してロードするなど、データを高速にロードする場合は、CPU時間の大半が入出力完了の待機時間として使用されます。バッファ数を増やすことで、CPU使用率を最大化し、スループット全体を向上させることができます。

バッファ数(SQL*LoaderのBUFFERSパラメータで設定)は、使用可能なメモリーの量およびCPU使用率を最大化する程度によって異なります。

パフォーマンスの向上は、CPU使用率およびデータのロード時に使用する並列度によって変化します。


関連項目:

BUFFERSパラメータのファイル処理オプション文字列の調整およびSQL*Loaderユーティリティの詳細は、『Oracle Databaseユーティリティ』を参照してください。

インポート・ユーティリティ用のBUFFERパラメータ

インポート・ユーティリティ用のBUFFERSパラメータには、高速ネットワークの使用時にそのパフォーマンスを最適化するために、大きい値を設定する必要があります。たとえば、IBM RS/6000 Scalable POWER parallel Systemsスイッチを使用する場合は、BUFFERパラメータを1MB以上の値に設定する必要があります。

A.2 ディスク入出力の問題

ディスク入出力の競合は、メモリー管理が良好でない(その結果としてページングおよびスワッピングが発生する)場合や、ディスク間の表領域およびファイルの分散が適切でない場合に発生します。

filemonsariostatなどのAIXユーティリティおよびその他のパフォーマンス・ツールを使用して入出力アクティビティの高いディスクを特定し、複数のディスク・ドライブに入出力アクティビティを均等に分散します。

この項では、次の項目について説明します。

A.2.1 AIX論理ボリューム・マネージャ

AIX論理ボリューム・マネージャは、複数のディスク間にデータをストライプ化して、ディスクの競合を減らすことができます。ストライプ化の主な目的は、大容量の順次ファイルに対する読取り/書込みのパフォーマンスを向上させることです。論理ボリューム・マネージャのストライプ機能を効果的に使用すると、ディスク間に入出力を均等に分散できるようになるため、全体的なパフォーマンスが向上します。


注意:

自動ストレージ管理ディスク・グループには論理ボリュームを追加しないでください。自動ストレージ管理は、RAWディスク・デバイスがディスク・グループに追加された場合に最も効果的に機能します。自動ストレージ管理を使用している場合は、論理ボリューム・マネージャを使用してストライプ化を行わないでください。自動ストレージ管理は、ストライプ化およびミラー化を実装します。

ストライプ化論理ボリュームの設計

ストライプ化論理ボリュームを定義するときは、次の表に示す項目を指定する必要があります。

項目 推奨設定
ドライブ 2つ以上の物理ドライブが必要です。パフォーマンスが重視される順次入出力を実行するときは、これらのドライブのアクティビティを最小にする必要があります。場合によっては、複数のアダプタ間で論理ボリュームをストライプ化する必要があります。
ストライプ・ユニット・サイズ ストライプ・ユニット・サイズには2の累乗(2から128KB)を指定できますが、ほとんどのワークロードには32KBおよび64KBのストライプ・サイズで十分です。Oracle Databaseファイルの場合は、ストライプ・サイズをデータベース・ブロック・サイズの倍数にする必要があります。
サイズ 論理ボリュームに割り当てる物理パーティションの数は、使用するディスク・ドライブ数の倍数にする必要があります。
属性 ミラー化できません。copies属性の値を1に設定します。

その他の考慮事項

論理ボリューム・マネージャを効果的に使用したときのパフォーマンスの向上は、使用する論理ボリューム・マネージャおよびワークロードの特性によって大きく異なります。意思決定支援システム・ワークロードでは、パフォーマンスが大幅に向上します。オンライン・トランザクション処理タイプのワークロードまたは複合ワークロードの場合も、かなりのパフォーマンスの向上が期待できます。

A.2.2 RAW論理ボリュームと比較した場合のジャーナル・ファイル・システムの使用

ジャーナル・ファイル・システムまたはRAW論理ボリュームのどちらを使用するかを決定するときには、次のことを考慮してください。

  • ファイル・システムは、実装の多様化に伴い、継続的に改善されています。

  • ファイル・システムには、追加構成(AIXのminserversおよびmaxserversパラメータ)が必要です。また、ファイル・システムの非同期入出力がカーネルの外部で実行されるため、CPUオーバーヘッドが少し増加します。

  • 様々なベンダーが、各ディスクの長所を生かすために、様々な方法でファイル・システム・レイヤーを実装しています。その結果、プラットフォーム間でファイル・システムを比較することが難しくなっています。

  • より強力な論理ボリューム・マネージャ・インタフェースを導入すると、RAW論理ボリュームに基づいた論理ディスクの構成およびバックアップの作業が大幅に減少します。

  • IBM AIX on POWER Systemsに組み込まれているダイレクト入出力機能および同時入出力機能により、ファイル・システムのパフォーマンスはRAW論理ボリュームと同じレベルまで向上します。

以前のバージョンのAIXでは、ファイル・システムはバッファに対する読取り/書込みのみをサポートしており、inodeロックが不完全なために余計な競合が発生していました。この2つの問題は、JFS2の同時入出力機能およびGPFSのダイレクト入出力機能によって解決されています。


注意:

Oracle RACオプションを使用するには、自動ストレージ管理ディスク・グループまたはGPFSファイル・システムにデータファイルを配置する必要があります。JFSまたはJFS2は使用できません。GPFSを使用すると、ダイレクト入出力が暗黙的に有効になります。

ファイル・システム・オプション

IBM AIX on POWER Systemsでは、ダイレクト入出力および同時入出力がサポートされています。ダイレクト入出力および同時入出力のサポートにより、データベース・ファイルがファイル・システム上に存在できるようになります。これは、Oracle Databaseが提供する機能を使用して、オペレーティング・システムのバッファ・キャッシュを回避し、冗長なinodeロック操作を排除することで実現されます。

可能であれば、Oracleデータファイルが含まれるファイル・システムでは、同時入出力またはダイレクト入出力を有効にすることをお薦めします。次の表に、AIXで使用できるファイル・システムとその推奨設定を示します。

ファイル・システム オプション 説明
JFS dio JFSでは、同時入出力は使用できません。ダイレクト入出力は使用できますが、同時入手力を使用したJFS2と比較してパフォーマンスが劣ります。
JFSラージ・ファイル none 128KBの位置合せ制約によってダイレクト入出力が使用できないため、JFSラージ・ファイルをOracle Databaseに使用することは推奨されません。
JFS2 cio 同時入出力は、同一のファイルに対して複数の同時リーダー/ライターをサポートしているため、ダイレクト入出力よりもJFS2に適した設定です。ただし、JFS2/CIOに対するAIX制限のため、同時入出力はOracleデータファイル、制御ファイルおよびログ・ファイルでのみ使用されます。このような目的専用のファイル・システムにのみ適用してください。同じ理由から、cioオプションでマウントするJFS2ファイル・システムでは、Oracleホーム・ディレクトリはサポートされません。たとえば、インストール時に、CIOオプションでマウントするJFS2ファイル・システムにOracleホーム・ディレクトリを配置するように誤って指定した場合は、Oracleに再リンクしようとすると、次のエラーが表示されることがあります。

"ld: 0711-866 INTERNAL ERROR: Output symbol table size miscalculated"

注意: Oracle Database 11gリリース2 (11.2.0.2)以上の場合、AIX 6.1システムでは、JFS2ファイルシステム上でcioオプションを使用しないことをお薦めします。

GPFS 該当なし Oracle Databaseは、最適なパフォーマンスを得るために、GPFSに対してダイレクト入出力を暗黙的に有効にします。GPFSのダイレクト入出力は、複数のノード上の複数のリーダー/ライターをサポートしています。したがって、GPFSでは、ダイレクト入出力と同時入出力は同じです。

JFSおよびJFS2の考慮事項

JFS2ファイル・システムにOracle Databaseログを配置している場合、構成を最適化するには、agblksize=512オプションを使用してファイル・システムを作成し、cioオプションでマウントします。

Oracle Database 11gより前のリリースでは、JFS/JFS2において、ダイレクト入出力および同時入出力をファイル・レベルで有効にできませんでした。したがって、最適なパフォーマンスを得るために、Oracleホーム・ディレクトリおよびデータファイルを別個のファイル・システムに配置する必要がありました。つまり、Oracleホーム・ディレクトリをデフォルト・オプションでマウントしたファイル・システムに配置し、データファイルおよびログをdioまたはcioオプションを使用してマウントしたファイル・システムに配置していました。

Oracle Database 11gでは、JFS/JFS2において、ダイレクト入出力および同時入出力をファイル・レベルで有効にできます。そのためには、サーバー・パラメータ・ファイルのFILESYSTEMIO_OPTIONSパラメータをsetallまたはdirectIOに設定します。これにより、すべてのデータファイル入出力に対して、JFS2での同時入力およびJFSでのダイレクト入出力が有効になります。これは、directIO設定により、通常は使用しない非同期入出力が無効になるためです。この11gの機能により、Oracleホーム・ディレクトリと同じJFS/JFS2ファイル・システムにデータファイルを配置し、ダイレクト入出力または同時入出力を使用してパフォーマンスを向上させることができます。前述のように、最適なパフォーマンスを得るためには、Oracle Databaseログを別個のJFS2ファイル・システムに配置する必要があります。

GPFSの考慮事項

GPFSを使用している場合、すべての目的に同じファイル・システムを使用できます。Oracleホーム・ディレクトリや、データファイルおよびログの格納などに使用できます。最適なパフォーマンスを得るためには、大規模なGPFSブロック・サイズ(通常は512KB以上)を使用する必要があります。GPFSはスケーラビリティを確保するように設計されており、データ量が1つのGPFSファイル・システムに収まるかぎり、複数のGPFSファイル・システムを作成する必要はありません。

ジャーナル・ファイル・システムからRAW論理ボリュームへの移動

すべてのデータを手動でリロードせずに、ジャーナル・ファイル・システムからRAWデバイスに移動するには、次の手順をrootユーザーとして実行します。

  1. 新しいRAW論理ボリューム・デバイス・タイプ(-T O)を使用して、RAWデバイス(BigVGを推奨)を作成します。これにより、最初のOracleブロックをオフセット0(ゼロ)にでき、最適なパフォーマンスを得ることができます。

    # mklv -T O -y new_raw_device VolumeGroup NumberOfPartitions
    

    注意:

    このRAWデバイスは、既存のファイルよりも大きくする必要があります。また、新しいRAWデバイスのサイズが領域を浪費しないように注意する必要があります。

  2. RAWデバイスに対する権限を設定します。

  3. 次のように、ddを使用してJFSファイルの内容を変換し、新しいRAWデバイスにコピーします。

    # dd if=old_JFS_file of=new_raw_device bs=1m
    
  4. データファイルの名前を変更します。

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、ブロック数を150000と仮定しています。

# dd if=old_raw_device bs=4k skip=1|dd bs=8k count=150000|dd of=new_file bs=256k

A.2.3 非同期入出力の使用

Oracle Databaseでは、AIXが提供する非同期入出力を最大限に利用して、データベース・アクセスを高速化しています。

IBM AIX on POWER Systemsでは、ファイル・システム・パーティション上に作成されたデータベース・ファイルに対して、非同期入出力がサポートされています。ファイル・システムに対して非同期入出力を使用するときは、リクエストがキューから取り出されてから完了するまで、カーネル・データベース・プロセス(aioserver)が各リクエストを制御します。aioserverサーバーの数により、システムで同時に処理できる非同期入出力リクエストの数が決まります。このため、ファイル・システムを使用してOracle Databaseのデータファイルを格納する場合には、aioserverプロセスの数をチューニングすることが重要です。

サーバーの数を設定するには、次のいずれかのコマンドを使用します。これは、ファイル・システムに対して非同期入出力を使用する場合にのみ適用されます。

  • smit aio

  • chdev -l aio0 -a maxservers=' m ' -a minservers='n'


    関連項目:

    • System Management Interface Tool(SMIT)の詳細は、SMITのオンライン・ヘルプを参照してください。

    • smit aioおよびchdevコマンドの詳細は、manページを参照してください。



注意:

  • IBM AIX on POWER Systemsでは、2つの非同期入出力サブシステムを使用できます。Oracle Database 11gでは、Oracleインストール前スクリプトによりレガシー非同期入力(aio0)およびPOSIX AIO (posix_aio0)が有効になる場合でも、レガシー非同期入出力(aio0)が使用されます。どちらの非同期入出力サブシステムも、パフォーマンス特性は同じです。

  • AIX 6.1,から、minserversmaxserversおよびmaxreqsパラメータは、それぞれ、aio_minserversaio_maxserversおよびaio_maxreqsパラメータに置き換えられています。


最小値には、システムの起動時に起動するサーバーの数を設定します。最大値には、大量の同時リクエストに応じて起動できるサーバーの数を設定します。これらのパラメータはファイル・システムにのみ適用されます。

サーバーの最小数のデフォルト値は1です。サーバーの最大数のデフォルト値は10です。カーネル化された非同期入出力を使用していない場合、CPUを4つ以上搭載する大規模なシステムでOracle Databaseを実行するには、通常、これらの値は低すぎます。パラメータには、次の表に示す値を設定することをお薦めします。

パラメータ
minservers 初期値としては、システム上のCPUの数または10のうち、いずれか小さい方を設定することをお薦めします。
maxservers AIX 5Lリリース5.3からは、このパラメータによって各CPUの非同期入出力サーバーの最大数がカウントされます。以前のバージョンのAIXでは、システム全体の値がカウントされていました。General Parallel File System(GPFS)を使用している場合は、maxserversを、CPUの数で除算したworker1threadsに設定します。これが最適な設定です。maxserversを大きくしても、入出力のパフォーマンスは向上しません。

JFS/JFS2を使用する場合は、初期値を、CPUの数で除算した論理ディスクの数(同時に使用するディスク数)を10倍した値(ただし、80以下)に設定します。pstatまたはpsコマンドを使用して、典型的なワークロードで起動されたaioserversの実際の数を監視します。アクティブなaioserversの実際の数がmaxserversと等しい場合は、maxservers値を大きくします。

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パラメータの値を変更します。値の変更は、システムを再起動すると有効になります。


注意:

AIOパラメータのチューニングの詳細は、使用するオペレーティング・システムのベンダーのマニュアルを参照してください。

A.2.4 入出力スレーブ

入出力スレーブは、入出力のみを実行する特殊なOracleプロセスです。非同期入出力がデフォルトであり、AIXでのOracleによる入出力操作の実行に推奨されている方法であるため、入出力スレーブは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つですが、原則として、この数は増やさないでください。

非同期I/Oの無効化が必要な場合があります。たとえば、デバッグのためにOracleサポートから指示された場合などです。DISK_ASYNCH_IOおよびTAPE_ASYNCH_IOパラメータを使用すると、ディスクまたはテープ・デバイスに対する非同期I/Oを無効にできます。TAPE_ASYNCH_IOのサポートは、メディア・マネージャ・ソフトウェアによってサポートされている場合にのみ使用可能であり、Recovery Managerの場合は、BACKUP_TAPE_IO_SLAVESがtrueの場合のみ使用可能です。

DBWR_IO_SLAVESパラメータは、DISK_ASYNCH_IOパラメータがfalseに設定されている場合にのみ、0(ゼロ)より大きい値に設定します。設定しないと、データベース・ライター・プロセスがボトルネックになります。この場合、AIXでのDBWR_IO_SLAVESパラメータの最適値は4です。

A.2.5 DB_FILE_MULTIBLOCK_READ_COUNTパラメータの使用

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パラメータの値との積が論理ボリューム・マネージャのストライプ・サイズよりも大きくなるように設定します。このような設定により、使用できるディスクが増加します。

A.2.6 後書きの使用

後書き機能を使用すると、オペレーティング・システムで書込み入出力をパーティションのサイズまでグループ化できるようになります。これにより、入出力操作の数が減るため、パフォーマンスが向上します。ファイル・システムでは、各ファイルが16KBパーティションに分割されるため、書込みパフォーマンスが向上し、メモリー内のダーティ・ページの数が制限され、ディスクの断片化が最小限に抑えられます。特定のパーティションのページは、プログラムによって次の16KBパーティションの1バイト目が書き込まれるまで、ディスクに書き込まれません。後書き用バッファのサイズを8つの16KBパーティションに設定するには、次のコマンドを入力します。

à        # /usr/sbin/vmo -o numclust=8

後書き機能を無効にするには、次のコマンドを入力します。

à        # /usr/sbin/vmo -o numclust=0 

A.2.7 順次先読みのチューニング


注意:

この項の内容は、ダイレクト入出力も同時入出力も使用していないファイル・システムにのみ適用されます。

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, . . . などです。

A.2.8 ディスク入出力ペーシングのチューニング

ディスク入出力ペーシングとは、システム管理者がファイルに対して保留中の入出力リクエストの数を制限できるようにするAIXのメカニズムです。このメカニズムにより、ディスク入出力が頻繁に発生するプロセスでCPUが飽和状態になるのを防ぐことができます。このため、対話型プロセスやCPU使用量の多いプロセスのレスポンス時間に遅延が発生しません。

ディスク入出力ペーシングを行うには、最高水位標および最低水位標という2つのシステム・パラメータを調整します。保留中の入出力リクエストが最高水位標に達しているファイルに対してプロセスが書込みを実行すると、プロセスはスリープ状態になります。未処理の入出力リクエストの数が最低水位標以下になると、プロセスはスリープ状態から解放されます。

最高水位標および最低水位標を変更するには、smitコマンドを使用します。試行錯誤を重ねて水位標を決定します。水位標はパフォーマンスに影響を与えるため、設定するときには注意が必要です。ディスク入出力が4KBを超える場合は、最高水位標および最低水位標をチューニングしてもほとんど効果はありません。

ディスク入出力の飽和状態を確認するには、iostatの結果、特にiowaitおよびtm_actの割合を分析します。特定のディスクのiowaitおよびtm_actの割合が高い場合は、ディスクが飽和状態にあることを示します。


注意:

iowaitが高いのみでは、必ずしも入出力のボトルネックを示すものではありません。

A.2.9 Oracle Databaseによるミラー復元

RAW論理ボリュームに割り当てられたOracleデータファイルに対してミラー書込み整合性を無効にすると、システム障害後のOracle Databaseのクラッシュ・リカバリ・プロセスでは、ミラー復元を使用したリカバリが行われます。このミラー復元プロセスにより、データベースの不整合または破損を防ぐことができます。

クラッシュ・リカバリ時に、論理ボリュームに割り当てられたデータファイルに複数のコピーがある場合、ミラー復元プロセスでは、すべてのコピーのデータ・ブロックに対してチェックサムを実行します。その後、次のいずれかの処理を実行します。

  • コピー内のデータ・ブロックのチェックサムが有効である場合、そのコピーを使用してチェックサムが無効なコピーを更新します。

  • すべてのコピーでブロックのチェックサムが無効である場合、REDOログ・ファイルの情報を使用してブロックを再構築します。次に、データファイルを論理ボリュームに書き込み、すべてのコピーを更新します。

AIXでは、ミラー復元プロセスは、RAW論理ボリュームに割り当てられたデータファイルのうち、ミラー書込み整合性が無効になっているデータファイルに対してのみ機能します。ミラー化論理ボリューム上のデータファイルのうち、ミラー書込み整合性が有効になっているデータファイルには、ミラー書込み整合性によってすべてのコピーの同期が保証されているため、ミラー復元は必要ありません。

以前のリリースのOracle Databaseのアップグレード中にシステムに障害が発生し、論理ボリューム上のデータファイルのミラー書込み整合性が無効になっていた場合は、syncvgコマンドを実行してミラー化論理ボリュームを同期化してからOracle Databaseを起動してください。ミラー化論理ボリュームを同期化せずにデータベースを起動すると、論理ボリュームのコピーから誤ったデータを読み取る場合があります。


注意:

ディスク・ドライブに障害が発生した場合、ミラー復元は行われません。syncvgコマンドを実行してから、論理ボリュームを再度アクティブにする必要があります。


注意:

ミラー復元は、データファイルに対してのみサポートされています。REDOログ・ファイルのミラー書込み整合性は無効にしないでください。

A.3 CPUのスケジューリングおよびプロセスの優先順位

CPUも、プロセスの競合が発生する可能性があるシステム・コンポーネントです。ほとんどの場合、AIXカーネルによってCPUは効果的に割り当てられますが、プロセスの多くはCPUサイクルをめぐって競合します。システムに複数のCPU(SMP)が搭載されている場合は、各CPUで様々なレベルの競合が発生する可能性があります。

次の各項では、CPUのスケジューリングおよびプロセスの優先順位について説明します。

A.3.1 プロセスのランタイム・スライスの変更

AIX RRディスパッチャのランタイム・スライスのデフォルト値は10ミリ秒です。タイム・スライスを変更するには、schedoコマンドを使用します。タイム・スライスを長くすると、アプリケーションの自発的な切替率の平均が低い場合に、コンテキストの切替率も低くなります。その結果、プロセスのコンテキストの切替えに消費されるCPUサイクルが少なくなるため、システムのスループットが向上します。

ただし、ランタイム・スライスを長くすると、特に単一プロセッサ・システムの場合に、レスポンス時間が遅くなる可能性があります。デフォルトのランタイム・スライスは通常、ほとんどのアプリケーションに使用できます。実行キューが大きく、ほとんどのアプリケーションとOracleシャドウ・プロセスがかなり長時間にわたって実行できる場合は、次のコマンドを入力してタイム・スライスを長くできます。

f # /usr/sbin/schedo -t n

このコマンドで、nの値を0(ゼロ)に設定すると、スライスは10ミリ秒になり、値を1に設定すると20ミリ秒、2に設定すると30ミリ秒になります。

A.3.2 SMPシステムでのプロセッサ・バインディングの使用

SMPシステムでは、特定のプロセスを1台のプロセッサにバインドすると、パフォーマンスが大幅に向上する場合があります。AIX 5Lでは、プロセッサ・バインディングとそのすべての機能を使用できます。

ただし、AIX 5Lからは、AIXスケジューラの特殊な改良により、プロセッサ・バインディングを使用せずに、Oracle Databaseプロセスを最適にスケジュール設定できます。したがって、AIX 5Lリリース5.3以上で実行する場合は、プロセッサへのプロセスのバインディングは推奨されません。

A.4 環境変数AIXTHREAD_SCOPEの設定

AIXのスレッドは、プロセス全体の競合範囲(M:N)またはシステム全体の競合範囲(1:1)により動作できます。環境変数AIXTHREAD_SCOPEは、使用する競合範囲を制御します。

環境変数AIXTHREAD_SCOPEのデフォルト値は、P(プロセス全体の競合範囲)です。プロセス全体の競合範囲を使用する場合、Oracleスレッドはカーネル・スレッドのプールにマップされます。Oracleがイベントを待機中にOracleスレッドがスワップ・アウトされると、スレッドIDが異なる別のカーネル・スレッドに戻る場合があります。OracleではスレッドIDを使用して待機中のプロセスをポストするため、スレッドIDが同じままであることが重要です。システム全体の競合範囲を使用する場合、Oracleスレッドはカーネル・スレッドに1対1で静的にマップされます。このため、システム全体の競合を使用することをお薦めします。システム全体の競合の使用は、特にOracle Real Application Clusters(Oracle RAC)インスタンスには重要です。

さらに、AIX 5Lリリース5.3以上では、システム全体の競合範囲を設定すると、各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プロセスの実行に対してシステム全体のスレッド範囲が有効になります。

A.5 ネットワーク情報サービスの外部ネーミングのサポート

AIXでは、ネットワーク情報サービスの外部ネーミング・アダプタがサポートされています。ネットワーク情報サービスの外部ネーミングを構成および使用する方法の詳細は、『Oracle Database Net Services管理者ガイド』の外部ネーミング・メソッドの構成に関する項を参照してください。

A.6 AIX 5.3以上のバージョンでのマルチスレッド同時処理

マルチスレッド同時処理が有効で、AIX 5.3以上のバージョンのオペレーティング・システムを使用している場合、v$osstatビューは、オンライン論理CPU(NUM_LCPUS)および仮想CPU(NUM_VCPUS)に対応した2つの行を追加して報告します。

AIX 5.3以上のバージョンでマルチスレッド同時処理を使用せずにOracleを実行している場合、これらの行は報告されません。

A.7 Oracle JDBC Thinドライバを使用したIBM JSSE Providerの構成

IBM JDKにSSLを構成する場合は、次の問題が発生する場合があります。

  • IBM JSSEがSSLv2Hello SSLプロトコルをサポートしない

    Thin JDBCコネクタを使用するSSLクライアントでは、oracle.net.ss1_versionシステム・プロパティをTLSv1 SSLプロトコルまたはSSLv3 SSLプロトコルを選択するように設定する必要があります。

  • IBM JSSEは匿名暗号を許可しない

    匿名暗号を使用するSSLクライアントでは、デフォルトのトラスト・マネージャを、匿名暗号を許可するカスタム・トラスト・マネージャに置き換える必要があります。


    関連項目:

    カスタム・トラスト・マネージャの作成およびインストールの詳細は、IBM JSSEのドキュメントを参照してください。