ヘッダーをスキップ

Oracle Database 管理者リファレンス
10g リリース2(10.2) for UNIX Systems

B19278-06
目次
目次
索引
索引

戻る 次へ

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

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

A.1 メモリーとページング

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

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

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

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

バッファ・キャッシュ・ページング・アクティビティをチューニングできますが、回数を絞って十分注意して行う必要があります。/usr/sbin/vmoコマンドを使用して、次の表のAIXシステム・パラメータをチューニングします。

パラメータ  説明 

minfree 

空きリスト・サイズの最小値。バッファ内の空きリストの容量がこのサイズを下回ると、ページ・スティーリングによって空きリストが補充されます。 

maxfree 

空きリスト・サイズの最大値。バッファ内の空きリストの容量がこのサイズを上回ると、ページ・スティーリングによる空きリストの補充が中止されます。 

minperm 

ファイルI/Oの永続バッファ・ページの最小数。 

maxperm 

ファイルI/Oの永続バッファ・ページの最大数。 

関連項目:

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

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

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

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

パフォーマンスの向上は、マルチプログラミングの量や作業負荷のI/O特性によって変化するため、簡単には数値化できません。

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

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

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

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

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

デフォルト値は、それぞれ20パーセントと80パーセントです。

新しいデータベース接続をオープンする際の即時応答を最適化するには、minfreeパラメータを調節して、システムが空きリストにページを追加せずにアプリケーションをメモリーにロードできるように、十分な空きページを確保します。プロセスの実メモリー・サイズ(常駐セット・サイズ、作業用セット)を判断するには、次のコマンドを使用します。

$ ps v process_id

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

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

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

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

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

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


注意:

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


A.1.4 ページングの制御

過剰なページングが頻繁に発生する場合は、実メモリーが不足していることを意味します。通常は、次のように対処してください。

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

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

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

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

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

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

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


注意:

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


A.1.7 I/OバッファおよびSQL*Loader

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

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

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

関連項目:

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

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

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

A.2 ディスクI/Oの問題

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

filemonsariostatなどのAIXユーティリィティや、その他のパフォーマンス・ツールを使用して、I/O負荷が高いディスクを識別し、すべてのディスク・ドライブにI/O負荷を均等に分散します。

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

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


注意:

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


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

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

項目  推奨される設定値 

ドライブ 

2つ以上の物理ドライブが必要です。パフォーマンスが重視される順次I/Oを実行するときは、2つ以上の物理ドライブのアクティビティを最小にする必要があります。場合によっては、複数のアダプタ間で論理ボリュームをストライプ化する必要があります。 

ストライプ・ユニット・サイズ 

ストライプ・ユニット・サイズには、2の累乗(2〜128KBの範囲)を指定できます。ただし、ほとんどの作業負荷には、32KBと64KBのストライプ・サイズで十分です。Oracle Databaseファイルでは、ストライプ・サイズをデータベース・ブロック・サイズの倍数にする必要があります。 

サイズ 

論理ボリュームに割り当てる物理パーティションの数は、使用するディスク・ドライブ数の倍数にする必要があります。 

属性 

ミラー化することはできません。copies属性の値を1に設定します。 

その他の考慮事項

LVMを使用したときのパフォーマンスの向上度は、使用するLVMや作業負荷の特性によって大きく異なります。DSS作業負荷では、パフォーマンスが大幅に向上します。OLTPタイプまたは複合作業負荷の場合も、かなりのパフォーマンスの向上を期待できます。

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

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

ジャーナル・ファイル・システムを使用した場合は、RAWデバイスを使用した場合と比較して、データベース・ファイルの管理や保守が容易になります。以前のバージョンのAIXでは、ファイル・システムはバッファに対する読取り/書込みのみサポートしており、inodeロックが不完全なために余計な競合が発生していました。この2つの問題は、JFS2コンカレントI/O機能およびGPFSダイレクトI/O機能によって解決されており、最高のパフォーマンスが必要な場合でも、RAWデバイスのかわりにファイル・システムを使用できます。


注意:

RACオプションを使用するには、ASMディスク・グループ内のRAWデバイスまたはGPFSファイル・システムにデータファイルを配置する必要があります。JFSまたはJFS2は使用できません。GPFSを使用すると、ダイレクトI/Oが暗黙的に有効になります。 


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

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

Oracleのデータファイルが含まれるファイル・システムでは、コンカレントI/OまたはダイレクトI/Oをできるかぎり有効にすることをお薦めします。次の表に、AIXで使用可能なファイル・システムとその推奨設定を示します。

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

JFS 

dio 

JFSではコンカレントI/Oは使用できません。ダイレクトI/Oを使用できます。ただし、コンカレントI/Oを使用したJFS2に比べてパフォーマンスは劣ります。 

JFSラージ・ファイル 

none 

128KBの位置合せ制約によってダイレクトI/Oの使用が回避されるため、サイズの大きいJFSファイルをOracle Databaseに使用することはお薦めしません。 

JFS2 

cio 

コンカレントI/Oは同一のファイルに対して複数のコンカレント・リーダー/ライターをサポートしているため、JFS2では、ダイレクトI/OよりもコンカレントI/Oを設定するほうが有効です。ただし、JFS2/CIOに対するAIX制限のため、コンカレントI/Oは、Oracleデータファイル、制御ファイルおよびログ・ファイルでのみ使用されます。コンカレントI/Oは、このような目的専用のファイル・システムにのみ適用してください。同じ理由から、cioオプションでマウントするJFS2ファイル・システムでは、Oracleホーム・ディレクトリはサポートされません。たとえば、インストール時に、Oracleホーム・ディレクトリをcioオプションでマウントするJFS2ファイル・システムに配置するように誤って指定した場合は、Oracleに再リンクしようとすると、次のエラーが表示される場合があります。

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

GPFS 

該当なし 

Oracle Databaseは、最適なパフォーマンスとなるようにGPFSに対してダイレクトI/Oを暗黙的に有効にします。GPFSのダイレクトI/Oは、すでに複数のノード上の複数のリーダー/ライターをサポートしています。したがって、GPFSの場合、ダイレクトI/OとコンカレントI/Oは同じです。 

JFSおよびJFS2の考慮事項

JFS2ファイル・システムにOracle Databaseログを置いている場合、agblksize=512オプションを使用してファイル・システムを作成し、cioオプションでこれをマウントすると最適な構成となります。これによって、ロギング・パフォーマンスがRAWデバイスのパフォーマンスの数パーセント以内に抑えられます。

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

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

GPFSの考慮事項

GPFSを使用している場合は、すべての目的に同じファイル・システムを使用できます。Oracleホーム・ディレクトリや、データファイルとログの格納などに使用できます。最適なパフォーマンスを得るためには、大規模なGPFSブロック・サイズ(通常は512KB以上)を使用してください。GPFSはスケーラビリティを確保するように設計されており、データ量が単一の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 非同期I/Oの使用

Oracle Databaseでは、AIXが提供する非同期I/O(AIO)を最大限に利用して、データベース・アクセスの高速化を図っています。

AIX 5Lは、ファイル・システム・パーティションおよびRAWデバイスで作成されたデータベース・ファイルに対して、非同期I/O(AIO)をサポートしています。RAWデバイスに対するAIOは、AIXカーネル内に完全に実装されるため、サーバーのプロセスでAIO要求を処理する必要はありません。ファイル・システムに対してAIOを使用するときは、要求がキューから取り出されてから処理が完了するまで、カーネル・サーバー・プロセス(aioserver)が各要求を制御します。aioserverサーバーの数によって、システムで同時に処理できるAIO要求の数が決定します。このため、Oracle Databaseのデータファイルの格納にファイル・システムを使用する場合には、aioserverプロセスの数をチューニングすることが重要です。

サーバー数を設定するには、次のいずれかのコマンドを使用します。このコマンドは、RAWデバイスではなくファイル・システムで非同期I/Oを使用している場合にのみ適用されます。

最小値には、システムの起動時に起動するサーバーの数を指定します。最大値には、多数の同時要求に応答するために起動できるサーバーの数を指定します。これらのパラメータは、ファイル・システムにのみ適用されます。RAWデバイスには適用されません。

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

パラメータ   

minservers 

初期値としては、システム上のCPUの数または10のうち、いずれか小さい値を設定することをお薦めします。 

maxservers 

AIX 5Lリリース5.2からは、このパラメータでCPUごとのAIOサーバーの最大数がカウントされるようになりました。以前のバージョンのAIXでは、システム全体の値がカウントされていました。GPFSを使用している場合は、maxserversを、CPUの数で割ったworker1threadsに設定します。これが最適な設定です。maxserversの値を大きくしても、I/Oのパフォーマンスは向上しません。

JFSまたはJFS2を使用している場合、初期値を、10×論理ディスク数÷CPU数に設定します。pstatまたはpsコマンドを使用して、典型的な作業負荷で起動されたaioserversの実際の数を監視します。実際にアクティブなAIOサーバー数がmaxserversと等しい場合は、maxserversの値を増加します。 

maxreqs 

初期値を、4×論理ディスク数×キューの深さに設定します。キューの深さは次のコマンドを実行することによって判断できます。

$ lsattr -E -l hdiskxx

通常、キューの深さは3です。 

maxserversまたはmaxreqsパラメータの値が低すぎると、次の警告メッセージが繰り返し表示される場合があります。

Warning: lio_listio returned EAGAIN
Performance degradation may be seen.

これらのエラーが表示されないようにするには、maxserversパラメータの値を大きくします。稼動しているAIOサーバーの数を表示するには、次のコマンドをrootユーザーで入力します。

# pstat -a | grep -c aios
# ps -k | grep aioserver

アクティブなAIOサーバーの数を定期的にチェックし、必要に応じてminserversおよびmaxserversパラメータの値を変更してください。パラメータの変更は、システムが再起動されるときに有効になります。

A.2.4 I/Oスレーブ

I/Oスレーブは、I/Oのみを実行する特別なOracleプロセスです。非同期I/Oがデフォルトであり、AIXに対するI/O操作はOracleでの実行が推奨されている方法であるため、I/OスレーブはAIXではほとんど使用されません。I/Oスレーブは、共有メモリー・バッファから割り当てられます。I/Oスレーブには、次の表に示す初期化パラメータを使用します。

パラメータ  許容値  デフォルト値 

DISK_ASYNCH_IO 

true/false 

true 

TAPE_ASYNCH_IO 

true/false 

true 

BACKUP_TAPE_IO_SLAVES 

true/false 

false 

DBWR_IO_SLAVES 

0 - 999 

DB_WRITER_PROCESSES 

1-20 

通常、この表のパラメータは調整しません。ただし、作業負荷が大きい場合に、データベース・ライターがボトルネックになることがあります。その場合は、DB_WRITER_PROCESSESの値を大きくします。このデータベース・ライター・プロセスの数は、システムまたはパーティション内でCPUのペアにつき1つですが、原則として、この数は増やさないでください。

デバッグのためにオラクル社カスタマ・サポート・センターにより指示された場合などは、非同期I/Oの無効化が必要な場合があります。DISK_ASYNCH_IOおよびTAPE_ASYNCH_IOの各パラメータを使用して、ディスクまたはテープ・デバイスに対する非同期I/Oを無効にできます。各プロセス・タイプのI/Oスレーブ数のデフォルトは0(ゼロ)であるため、デフォルトではI/Oスレーブは割り当てられません。

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

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

Oracle Database 10gでダイレクトI/OまたはコンカレントI/Oを使用している場合、AIXファイル・システムでは順次スキャンでの先読みは実行されません。このため、ダイレクトI/OまたはコンカレントI/OがOracleデータファイルで有効な場合、サーバー・パラメータ・ファイルのDB_FILE_MULTIBLOCK_READ_COUNTの値を増やす必要があります。DB_FILE_MULTIBLOCK_READ_COUNT初期化パラメータの指定どおり、Oracle Databaseにより先読みが実行されます。

DB_FILE_MULTIBLOCK_READ_COUNT初期化パラメータの値を大きくすると、通常は順次スキャンでのI/Oスループットが向上します。AIXでは、このパラメータの範囲は1〜512ですが、16を超える値を使用しても、通常はそれ以上のパフォーマンス効果は得られません。

このパラメータの値は、DB_BLOCK_SIZEパラメータの値との積がLVMストライプ・サイズよりも大きくなるように設定します。このように設定することによって、使用できるディスク数が増加します。

A.2.6 後書きの使用

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

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

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

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

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


注意:

この項の内容は、ダイレクトI/OもコンカレントI/Oも使用していないファイル・システムにのみ適用されます。 


VMMは、順次ファイルのページの必要性を予測します。また、プロセスがファイルにアクセスするパターンを監視しています。プロセスがファイルの2つのページに連続してアクセスすると、VMMはプログラムがファイルへの順次アクセスを続行すると予測し、ファイルに対する後続の順次読込みをスケジュールします。この結果、プログラム処理がオーバーラップし、プログラムはデータをより高速に利用できます。次の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 ディスクI/Oの歩調合せのチューニング

ディスクI/Oの歩調合せとは、システム管理者がファイルに対して保留されるI/O要求の数を制限するためのAIXのメカニズムです。このメカニズムによって、ディスクI/Oが頻繁に発生するプロセスのためにCPUが飽和状態に陥ることを回避できます。この結果、対話型プロセスやCPU使用量の多いプロセスの応答時間に遅延が発生しません。

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

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

ディスクI/Oの飽和状態を判断するには、iostatの結果、特にiowaitおよびtm_actの割合を分析します。特定のディスクのiowaitの割合とtm_actの割合が大きい場合、ディスクが飽和状態であることを表します。iowaitの割合のみが大きい場合は、必ずしもI/Oボトルネックを表すものではないことに注意してください。

A.2.9 Oracle Databaseでのミラー復元

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

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

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

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


注意:

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



注意:

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


A.2.10 RAWデバイスのバックアップ

RAWデバイスをバックアップするにはRMANの使用をお薦めします。ddコマンドを使用してRAWデバイスのバックアップを実行する場合は、この項で説明する指示に従ってください。

RAWデバイスの最初のOracleブロックのオフセットは、デバイス・タイプによって0(ゼロ)、4Kまたは128Kになります。offsetコマンドを使用して、適切なオフセットを判断できます。

論理ボリュームを作成する場合、オフセット0(ゼロ)を使用することをお薦めします。これは、-T Oオプションを使用した場合に可能です。ただし、以前のバージョンのOracle Databaseで作成された既存のRAW論理ボリュームでは、通常は0(ゼロ)以外のオフセットです。次の例では、最初のOracleブロックのオフセットが4KであるRAWデバイスのバックアップおよびリストア方法を示しています。

$ dd if=/dev/raw_device of=/dev/rmt0.1 bs=256k

RAWデバイスをテープからリストアするには、次のようなコマンドを入力します。

$ dd if=/dev/rmt0.1 of=/dev/raw_device count=63 seek=1 skip=1 bs=4k
$ mt -f /dev/rmt0.1 bsf 1
$ dd if=/dev/rmt0.1 of=/dev/raw_device seek=1 skip=1 bs=256k

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

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

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

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

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

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

# /usr/sbin/schedo -t n

前のコマンドで、nの値に0(ゼロ)を設定すると、タイム・スライスは10msecになり、1を設定すると20msec、2を設定すると30msecになります。

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

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

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

A.4 環境変数AIXTHREAD_SCOPEの設定

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

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

さらに、AIX 5Lリリース5.2以上では、システム全体の競合範囲を設定した場合、各Oracleプロセスに割り当てられるメモリー量がかなり少なくなります。

Oracle DatabaseインスタンスまたはOracle Net Listenerプロセスにおいて、環境変数ORACLE_HOMEまたはORACLE_SIDの設定に使用する環境スクリプトで、次のように、環境変数AIXTHREAD_SCOPEの値をSに設定することをお薦めします。

これにより、すべてのOracleプロセスの実行に対してシステム全体のスレッド範囲が有効になります。

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

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

A.6 AIX 5.3システムでのマルチスレッド同時処理(SMT)

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

AIX 5.2システムまたはAIX 5.3システムでSMTを使用せずにOracleを実行している場合、これらの行は報告されません。


戻る 次へ
Oracle
Copyright © 2006, 2009, Oracle and/or its affiliates.
All Rights Reserved.
目次
目次
索引
索引