Oracle® Database管理者リファレンス 11gリリース2 (11.2) for Linux and UNIX-Based Operating Systems B56317-12 |
|
前 |
次 |
この付録では、AIXシステムでOracle Databaseを管理する方法について説明します。内容は次のとおりです。
メモリーの競合は、プロセスに必要なメモリー量が、使用できる容量よりも大きくなったときに発生します。このようなメモリー不足に対処するため、メモリーとディスク間でプログラムおよびデータのページングが行われます。
この項では、次の項目について説明します。
ページング・アクティビティが過剰に実行されると、パフォーマンスが大幅に低下します。これは、ジャーナル・ファイル・システム(JFSおよびJFS2)上に作成されたデータベース・ファイルで問題になることがあります。この状況では、大量のSGAデータ・バッファに、参照頻度の最も高いデータを含む、類似したファイル・システム・バッファが存在する可能性があります。AIXファイル・バッファ・キャッシュ・マネージャの動作は、パフォーマンスに大きく影響します。このため、入出力ボトルネックが発生し、システム全体のスループットが低下する可能性があります。
バッファ・キャッシュのページング・アクティビティはチューニングできますが、頻度を制限して慎重に行う必要があります。/usr/sbin/vmo
コマンドを使用して、次の表に示すAIXシステム・パラメータをチューニングします。
関連項目: AIXシステム・パラメータの詳細は、『AIX 5L Performance Management Guide』を参照してください。 |
AIXファイル・バッファ・キャッシュの目的は、ジャーナル・ファイル・システム使用時のディスクへのアクセス頻度を減らすことです。このキャッシュが小さすぎると、ディスク使用率が増加して、1つ以上のディスクが一杯になる可能性があります。キャッシュが大きすぎると、メモリーが浪費されます。
AIXファイル・バッファ・キャッシュは、minperm
およびmaxperm
パラメータを調整することで構成できます。一般に、sar -b
コマンドで確認したバッファ・ヒット率が低い(90%未満)場合は、minperm
パラメータ値を増やします。高いバッファ・ヒット率を維持する必要がない場合は、minperm
パラメータ値を減らして使用できる物理メモリーを増やします。AIXファイル・バッファ・キャッシュのサイズを増加する方法の詳細は、AIXのドキュメントを参照してください。
パフォーマンスの向上は、マルチプログラミングの程度およびワークロードの入出力特性によって変化するため、簡単に数値化できません。
AIXには、計算(作業またはプログラム・テキスト)セグメントに使用されるページ・フレームではなく、ファイルに使用されるページ・フレームの比率を大まかに制御するためのメカニズムがあります。次のガイドラインに従ってminperm
およびmaxperm
値を調整して制御します。
実メモリー内でファイル・ページが占める割合がminperm
値を下回る場合は、再ページ率に関係なく、仮想メモリー・マネージャ(VMM)のページ置換アルゴリズムにより、ファイル・ページと計算ページの両方が取得されます。
実メモリー内でファイル・ページが占める割合がmaxperm
値を上回る場合は、VMMのページ置換アルゴリズムにより、ファイル・ページと計算ページの両方が取得されます。
実メモリー内でファイル・ページが占める割合がパラメータ値minperm
とmaxperm
の間にある場合は、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システム・グローバル領域などの他の目的に有効に利用できます。
通常、ページング領域(スワップ領域)が十分に割り当てられていないと、システムのレスポンスが停止したり、レスポンス時間が非常に遅くなります。AIXでは、RAWディスク・パーティションにページング領域を動的に追加できます。構成するページング領域の大きさは、実装されている物理メモリーの量およびアプリケーションのページング領域要件によって異なります。ページング領域の使用量を監視するには、lsps
コマンドを使用します。システムのページング・アクティビティを監視するには、vmstat
コマンドを使用します。ページング領域を増やすには、smit pgsp
コマンドを使用します。
ページング領域を事前に割り当てる場合は、ページング領域をRAMの量よりも大きい値に設定することをお薦めします。ただし、AIXでは、ページング領域は必要になるまで割り当てられません。システムでは、実メモリーが不足した場合にのみスワップ領域が使用されます。メモリーのサイズを正しく設定した場合は、ページングが行われないため、ページング領域を小さくできます。要求されるページ数が大きく変動しないワークロードの場合は、小さいページング領域でも適切に動作します。ページングが極端に増加する可能性があるワークロードの場合は、最大ページ数を処理できるだけの十分なページング領域が必要です。
一般に、ページング領域の初期設定は、RAMの半分のサイズに4GBを加えた値で、32GBが上限です。lsps -a
コマンドを使用してページング領域の使用量を監視し、その結果に従ってページング領域のサイズを増減します。lsps -a
により出力されるメトリック%Usedは、正常なシステムでは通常25%未満です。サイズが適切なデプロイではページング領域はほとんど必要ありませんが、スワッピングが過剰に発生する場合は、システムのRAMのサイズが小さすぎる可能性があります。
注意: ページング領域のサイズは小さくしないでください。小さくすると、領域が不足してアクティブなプロセスが終了します。一方、ページング領域のサイズが大きすぎても、悪影響はほとんどありません。 |
過剰なページングが頻繁に発生する場合は、実メモリーが過剰にコミットされていることを示します。通常は、次のように対処します。
ベージングが頻繁に発生しないようにします。ただし、システムに超高速の拡張記憶域を装備し、メモリーと拡張記憶域間のページングが、Oracle DatabaseによるSGAとディスク間のデータの読取り/書込みよりも大幅に速くなる場合を除きます。
制限されたメモリー・リソースを、システム・パフォーマンスが最も向上する場所に割り当てます。場合によっては、メモリー・リソース要件とその影響のバランスを取るために、この処理を繰り返し行う必要があります。
メモリーが不足している場合は、システム内のメモリーを必要とするプロセスおよび要素を優先順に並べたリストを作成します。パフォーマンスが最も向上する場所に、メモリーを割り当てます。優先順リストの例を次に示します。
OSおよびRDBMSのカーネル
ユーザー・プロセスおよびアプリケーション・プロセス
REDOログ・バッファ
PGAおよび共有プール
データベース・ブロック・バッファ・キャッシュ
たとえば、Oracle Databaseの動的パフォーマンス表およびビューを問い合せた結果、共有プールとデータベース・バッファ・キャッシュの両方にメモリーを追加する必要があるとします。この場合、制限された予備メモリーは、データベース・ブロック・バッファ・キャッシュではなく共有プールに割り当てるとパフォーマンスが向上します。
次のAIXコマンドを実行すると、ページングのステータスおよび統計が表示されます。
vmstat -s
vmstat
interval
[
repeats
]
sar -r
interval
[
repeats
]
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)に設定することをお薦めします。
トランザクションが長い場合や数が多い場合は特に、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ユーティリティ』 を参照してください。 |
インポート・ユーティリティ用のBUFFERS
パラメータには、高速ネットワークの使用時にそのパフォーマンスを最適化するために、大きい値を設定する必要があります。たとえば、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論理ボリュームに基づいた論理ディスクの構成およびバックアップの作業が大幅に減少します。
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に再リンクしようとすると、次のエラーが表示されることがあります。
注意: Oracle Database 11gリリース2 (11.2.0.2)以上の場合、AIX 6.1システムでは、JFS2ファイルシステム上で |
GPFS | 該当なし | Oracle Databaseは、最適なパフォーマンスを得るために、GPFSに対してダイレクト入出力を暗黙的に有効にします。GPFSのダイレクト入出力は、複数のノード上の複数のリーダー/ライターをサポートしています。したがって、GPFSでは、ダイレクト入出力と同時入出力は同じです。 |
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を使用している場合、すべての目的に同じファイル・システムを使用できます。Oracleホーム・ディレクトリや、データファイルおよびログの格納などに使用できます。最適なパフォーマンスを得るためには、大規模なGPFSブロック・サイズ(通常は512KB以上)を使用する必要があります。GPFSはスケーラビリティを確保するように設計されており、データ量が1つの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、ブロック数を150000と仮定しています。
# dd if=old_raw_device bs=4k skip=1|dd bs=8k count=150000|dd of=new_file bs=256k
Oracle Databaseでは、AIXが提供する非同期入出力を最大限に利用して、データベース・アクセスを高速化しています。
IBM AIX on POWER Systemsでは、ファイル・システム・パーティション上に作成されたデータベース・ファイルに対して、非同期入出力がサポートされています。ファイル・システムに対して非同期入出力を使用するときは、リクエストがキューから取り出されてから完了するまで、カーネル・データベース・プロセス(aioserver
)が各リクエストを制御します。aioserver
サーバーの数により、システムで同時に処理できる非同期入出力リクエストの数が決まります。このため、ファイル・システムを使用してOracle Databaseのデータファイルを格納する場合には、aioserver
プロセスの数をチューニングすることが重要です。
サーバーの数を設定するには、次のいずれかのコマンドを使用します。これは、ファイル・システムに対して非同期入出力を使用する場合にのみ適用されます。
smit aio
chdev -l aio0 -a maxservers='
m
' -a minservers='
n
'
関連項目:
|
注意:
|
最小値には、システムの起動時に起動するサーバーの数を設定します。最大値には、大量の同時リクエストに応じて起動できるサーバーの数を設定します。これらのパラメータはファイル・システムにのみ適用されます。
サーバーの最小数のデフォルト値は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以下)に設定します。 |
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パラメータのチューニングの詳細は、使用するオペレーティング・システムのベンダーのマニュアルを参照してください。 |
入出力スレーブは、入出力のみを実行する特殊な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です。
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は、順次ファイルのページの必要性を予測します。また、プロセスがファイルにアクセスするパターンを監視しています。プロセスがファイルの連続する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 コマンドを実行してから、論理ボリュームを再度アクティブにする必要があります。 |
注意: ミラー復元は、データファイルに対してのみサポートされています。REDOログ・ファイルのミラー書込み整合性は無効にしないでください。 |
CPUも、プロセスの競合が発生する可能性があるシステム・コンポーネントです。ほとんどの場合、AIXカーネルによってCPUは効果的に割り当てられますが、プロセスの多くはCPUサイクルをめぐって競合します。システムに複数のCPU(SMP)が搭載されている場合は、各CPUで様々なレベルの競合が発生する可能性があります。
次の各項では、CPUのスケジューリングおよびプロセスの優先順位について説明します。
AIX RRディスパッチャのランタイム・スライスのデフォルト値は10ミリ秒です。タイム・スライスを変更するには、schedo
コマンドを使用します。タイム・スライスを長くすると、アプリケーションの自発的な切替率の平均が低い場合に、コンテキストの切替率も低くなります。その結果、プロセスのコンテキストの切替えに消費されるCPUサイクルが少なくなるため、システムのスループットが向上します。
ただし、ランタイム・スライスを長くすると、特に単一プロセッサ・システムの場合に、レスポンス時間が遅くなる可能性があります。デフォルトのランタイム・スライスは通常、ほとんどのアプリケーションに使用できます。実行キューが大きく、ほとんどのアプリケーションとOracleシャドウ・プロセスがかなり長時間にわたって実行できる場合は、次のコマンドを入力してタイム・スライスを長くできます。
f # /usr/sbin/schedo -t n
このコマンドで、n
の値を0(ゼロ)に設定すると、スライスは10ミリ秒になり、値を1に設定すると20ミリ秒、2に設定すると30ミリ秒になります。
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プロセスの実行に対してシステム全体のスレッド範囲が有効になります。
AIXでは、ネットワーク情報サービスの外部ネーミング・アダプタがサポートされています。ネットワーク情報サービスの外部ネーミングを構成および使用する方法の詳細は、『Oracle Database Net Services管理者ガイド』の外部ネーミング・メソッドの構成に関する項を参照してください。
マルチスレッド同時処理が有効で、AIX 5.3以上のバージョンのオペレーティング・システムを使用している場合、v$osstat
ビューは、オンライン論理CPU(NUM_LCPUS
)および仮想CPU(NUM_VCPUS
)に対応した2つの行を追加して報告します。
AIX 5.3以上のバージョンでマルチスレッド同時処理を使用せずにOracleを実行している場合、これらの行は報告されません。
IBM JDKにSSLを構成する場合は、次の問題が発生する場合があります。
IBM JSSEがSSLv2Hello
SSLプロトコルをサポートしない
Thin JDBCコネクタを使用するSSLクライアントでは、oracle.net.ss1_version
システム・プロパティをTLSv1
SSLプロトコルまたはSSLv3
SSLプロトコルを選択するように設定する必要があります。
IBM JSSEは匿名暗号を許可しない
匿名暗号を使用するSSLクライアントでは、デフォルトのトラスト・マネージャを、匿名暗号を許可するカスタム・トラスト・マネージャに置き換える必要があります。
関連項目: カスタム・トラスト・マネージャの作成およびインストールの詳細は、IBM JSSEのドキュメントを参照してください。 |