Oracle Database 管理者リファレンス 10g リリース2(10.2) for UNIX Systems B19278-06 |
|
この付録では、AIXシステムでOracle Databaseを管理する方法について説明します。次の項目について説明します。
メモリーの競合は、プロセスに必要なメモリー量が、利用できる容量よりも大きくなったときに発生します。このようなメモリー不足に対処するために、メモリーとディスクとの間でプログラムやデータのページングが行われます。
この項では、次の項目について説明します。
ページング・アクティビティが過剰に行われると、パフォーマンスが大幅に低下します。ジャーナル・ファイル・システム(JFSおよびJFS2)上に作成されたデータベース・ファイルでは、このページングが問題になることがあります。この状況では、大量のSGAデータ・バッファ内に、参照頻度の最も高いデータを含む、似たようなジャーナル・ファイル・システムのバッファが存在する可能性があります。AIXファイル・バッファ・キャッシュ・マネージャの動作は、パフォーマンスに大きく影響します。この動作によっては、I/Oボトルネックが発生し、システム全体のスループットが低下する可能性があります。
バッファ・キャッシュ・ページング・アクティビティをチューニングできますが、回数を絞って十分注意して行う必要があります。/usr/sbin/vmo
コマンドを使用して、次の表のAIXシステム・パラメータをチューニングします。
AIXファイル・バッファ・キャッシュの目的は、ジャーナル・ファイル・システム使用時のディスクへのアクセス頻度を減少させることです。このキャッシュが小さすぎると、ディスク使用率が増加して、1つ以上のディスクが一杯になることがあります。このキャッシュが大きすぎると、メモリーが無駄になります。
AIXファイル・バッファ・キャッシュは、minperm
およびmaxperm
パラメータの調整によって構成できます。一般に、sar -b
コマンドで指定するバッファ・ヒット率が低い(90パーセント未満の)場合は、minperm
パラメータ値を増やします。バッファ・ヒット率を高くする必要がない場合は、minperm
パラメータ値を減らし、利用できる物理メモリーを増やします。AIXファイル・バッファ・キャッシュのサイズの増加については、AIXのドキュメントを参照してください。
パフォーマンスの向上は、マルチプログラミングの量や作業負荷のI/O特性によって変化するため、簡単には数値化できません。
AIXでは、ファイルに使用されるページ・フレームと、計算可能(作業用またはプログラム・テキスト)セグメントに使用されるページ・フレームとの比率を、大まかに制御できます。次のガイドラインに従って、minperm
およびmaxperm
の値を調整してください。
minperm
値を下回る場合は、再ページ率に関係なく、Virtual Memory Manager(VMM)のページ置換アルゴリズムによって、ファイル・ページおよび計算可能ページが取得されます。
maxperm
値を上回る場合は、VMMのページ置換アルゴリズムによって、ファイル・ページおよび計算可能ページが取得されます。
minperm
とmaxperm
の間にある場合は、VMMによって、通常はファイル・ページのみが取得されます。ただし、ファイル・ページの再ページ率が計算可能ページの再ページ率よりも大きい場合は、計算可能ページも同様に取得されます。
デフォルト値を計算するには、次のアルゴリズムを使用します。
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システム・グローバル領域など、他の目的に有効に利用できます。
ページング領域(スワップ領域)が十分に割り当てられていないと、システムの応答が停止したり、応答時間が非常に遅くなります。AIXでは、RAWディスク・パーティションにページング領域を動的に追加できます。設定するページング領域の大きさは、実装されている物理メモリーの量およびアプリケーションのページング領域要件によって異なります。ページング領域の使用量を監視するには、lsps
コマンドを使用します。システムのページング・アクティビティを監視するには、vmstat
コマンドを使用します。ページング領域を増やすには、smit pgsp
コマンドを使用します。
ページング領域が事前に割り当てられる場合は、ページング領域をRAMの量よりも大きい値に設定することをお薦めします。AIXでは、ページング領域は必要になるまで割り当てられません。システムでは、実メモリーが不足した場合にのみスワップ領域が使用されます。メモリーのサイズを正しく設定した場合は、ページングが行われないため、ページング領域を小さくできます。要求されるページ数が大幅に増減しない場合は、ページング領域が小さくてもシステムは適切に動作します。ページングが大幅に増加する可能性がある場合は、その最大ページ数を処理できるページング領域が必要になります。
一般に、ページング領域の初期設定は、32GBを上限として、RAMの半分のサイズに4GBを加えた値です。lsps -a
コマンドを使用してページング領域を監視し、その結果に従ってページング領域のサイズを増減します。lsps -a
コマンドによって出力される使用率(%Used
)は、適正なシステムの場合は通常25パーセント未満になります。メモリー・サイズが適切に割り当てられている場合、ページング領域はほとんど必要ありません。また、スワッピングが過剰に発生する場合は、システムに対してRAMサイズが小さすぎる可能性があります。
過剰なページングが頻繁に発生する場合は、実メモリーが不足していることを意味します。通常は、次のように対処してください。
たとえば、Oracle Databaseの動的パフォーマンス表およびビューを問い合せた結果、共有プールおよびデータベース・バッファ・キャッシュにメモリーを追加する必要があるとします。この場合、制限された予備メモリーは、データベース・ブロック・バッファ・キャッシュではなく共有プールに割り当てるとパフォーマンスが向上します。
次のAIXコマンドを実行すると、ページングの状況および統計が表示されます。
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)に設定することをお薦めします。
トランザクションが長い場合やトランザクションの数が多い場合は特に、LOG_BUFFER
サイズを増やすことで、データベースのアーカイブ速度を向上させることができます。ログ・ファイルI/Oアクティビティおよびシステム・スループットを監視して、最適なLOG_BUFFER
サイズを判断します。LOG_BUFFER
パラメータをチューニングするときは、通常のデータベース・アクティビティの全体的なパフォーマンスが低下しないように注意してください。
SQL*Loaderダイレクト・パス・オプションを使用しながらデータを並行してロードする場合など、データを高速にロードするときは、CPU時間の大半がI/O完了の待ち時間として使用されます。バッファの数を増やすことにより、CPU使用率が最大になり、スループット全体も向上します。
選択するバッファの数(SQL*LoaderのBUFFERS
パラメータで設定)は、使用可能なメモリー量やCPU使用率を最大化する程度によって異なります。
パフォーマンスの向上は、CPU使用率やデータのロード時に使用する並列度によって変化します。
インポート・ユーティリティ用のBUFFER
パラメータには、高速ネットワークのパフォーマンスを最適化するために、大きい値を設定する必要があります。たとえば、IBM RS/6000 Scalable POWERparallel Systems(SP)スイッチを使用する場合は、BUFFER
パラメータの値を1MB以上に設定する必要があります。
ディスクI/Oの競合は、メモリー管理が良好でない場合(その結果として発生するページングおよびスワッピングを含む)や、ディスク間の表領域とファイルの配分が適切でない場合に発生します。
filemon
、sar
、iostat
などのAIXユーティリィティや、その他のパフォーマンス・ツールを使用して、I/O負荷が高いディスクを識別し、すべてのディスク・ドライブにI/O負荷を均等に分散します。
AIX論理ボリューム・マネージャ(LVM)は、複数のディスクにデータをストライプ化して、ディスクの競合を軽減できます。ストライプ化の主な目的は、大容量の順次ファイルに対する読取り/書込みのパフォーマンスを向上させることです。LVMのストライプ機能を効果的に使用すると、ディスク間にI/Oを均等に分散できるため、全体的なパフォーマンスが向上します。
ストライプ化された論理ボリュームを定義するときは、次の表に示す項目を指定する必要があります。
LVMを使用したときのパフォーマンスの向上度は、使用するLVMや作業負荷の特性によって大きく異なります。DSS作業負荷では、パフォーマンスが大幅に向上します。OLTPタイプまたは複合作業負荷の場合も、かなりのパフォーマンスの向上を期待できます。
ジャーナル・ファイル・システムまたはRAW論理ボリュームを使用するかどうかを決定する場合は、次のことを考慮してください。
minservers
およびmaxservers
パラメータ)が必要であり、ファイル・システムの非同期I/Oがカーネルの外部で実行されるため、CPUオーバーヘッドが少し増加します。
ジャーナル・ファイル・システムを使用した場合は、RAWデバイスを使用した場合と比較して、データベース・ファイルの管理や保守が容易になります。以前のバージョンのAIXでは、ファイル・システムはバッファに対する読取り/書込みのみサポートしており、inodeロックが不完全なために余計な競合が発生していました。この2つの問題は、JFS2コンカレントI/O機能およびGPFSダイレクトI/O機能によって解決されており、最高のパフォーマンスが必要な場合でも、RAWデバイスのかわりにファイル・システムを使用できます。
AIX 5Lでは、ダイレクトI/OおよびコンカレントI/Oがサポートされています。ダイレクトI/OおよびコンカレントI/Oのサポートによって、データベース・ファイルがファイル・システム上に存在できるようになります。これは、Oracle Databaseが提供する機能を使用して、オペレーティング・システムのバッファ・キャッシュを回避し、冗長なinodeロック操作を排除することによって実現されます。
Oracleのデータファイルが含まれるファイル・システムでは、コンカレントI/OまたはダイレクトI/Oをできるかぎり有効にすることをお薦めします。次の表に、AIXで使用可能なファイル・システムとその推奨設定を示します。
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を使用している場合は、すべての目的に同じファイル・システムを使用できます。Oracleホーム・ディレクトリや、データファイルとログの格納などに使用できます。最適なパフォーマンスを得るためには、大規模なGPFSブロック・サイズ(通常は512KB以上)を使用してください。GPFSはスケーラビリティを確保するように設計されており、データ量が単一のGPFSファイル・システムに収まるかぎり、複数のGPFSファイル・システムを作成する必要はありません。
すべてのデータを手動で再ロードせずに、ジャーナル・ファイル・システムからRAWデバイスにデータを移動するには、次の手順をroot
ユーザーで実行します。
-T O
)を使用して、RAWデバイス(BigVGを推奨)を作成します。これにより、最初のOracleブロックをオフセット0(ゼロ)にでき、最適なパフォーマンスを得ることができます。
# mklv -T O -y new_raw_device VolumeGroup NumberOfPartitions
dd
を使用してJFSファイルの内容を変換し、新規RAWデバイスにコピーします。
# dd if=old_JFS_file of=new_raw_device bs=1m
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が提供する非同期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を実行するには、通常、これらの値では低すぎます。次の表に示されている値に設定することをお薦めします。
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
パラメータの値を変更してください。パラメータの変更は、システムが再起動されるときに有効になります。
I/Oスレーブは、I/Oのみを実行する特別なOracleプロセスです。非同期I/Oがデフォルトであり、AIXに対するI/O操作はOracleでの実行が推奨されている方法であるため、I/OスレーブはAIXではほとんど使用されません。I/Oスレーブは、共有メモリー・バッファから割り当てられます。I/Oスレーブには、次の表に示す初期化パラメータを使用します。
パラメータ | 許容値 | デフォルト値 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
0 - 999 |
0 |
|
1-20 |
1 |
通常、この表のパラメータは調整しません。ただし、作業負荷が大きい場合に、データベース・ライターがボトルネックになることがあります。その場合は、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です。
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ストライプ・サイズよりも大きくなるように設定します。このように設定することによって、使用できるディスク数が増加します。
後書き機能を使用すると、オペレーティング・システムで書込みI/Oをパーティションのサイズまでグループ化できるようになります。これによって、I/O処理数が少なくなるため、パフォーマンスが向上します。ファイル・システムでは、各ファイルが複数の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, . . . などです。
ディスク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ボトルネックを表すものではないことに注意してください。
RAW論理ボリューム(LV)に割り当てられたOracleデータファイルに対してミラー書込み整合性(MWC)を無効にすると、Oracle Databaseのクラッシュ・リカバリ・プロセスによるシステム・エラー後のリカバリで、ミラーの復元が行われます。このミラー復元プロセスを実行することによって、データベースの不整合や破損を防止できます。
クラッシュ・リカバリ時に、論理ボリューム上のデータファイルに複数のコピーが割り当てられている場合、ミラー復元プロセスでは、それらのすべてのコピーのデータ・ブロックに対してチェックサムを実行します。その後、次のいずれかの処理を実行します。
AIXの場合、ミラー復元プロセスは、RAW論理ボリュームに割り当てられたデータファイルのうち、MWCが無効になっているデータファイルに対してのみ有効です。ミラー化論理ボリューム上のデータファイルのうち、MWCが有効になっているデータファイルには、MWCによってすべてのコピーの同期が保証されているため、ミラー復元は必要ありません。
以前のリリースのOracle Databaseのアップグレード中にシステムがクラッシュし、論理ボリューム上のデータファイルのMWCが無効になっていた場合は、syncvg
コマンドを実行してミラー化LVを同期化してから、Oracle Databaseを起動してください。ミラー化LVを同期せずにデータベースを起動すると、LVコピーからデータが正しく読み込めないことがあります。
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
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になります。
SMPシステムでは、複数のプロセスを1台のプロセッサにバインドすると、パフォーマンスが大幅に向上する場合があります。プロセッサ・バインディングは、AIX 5Lですべての機能を利用できます。
ただし、AIX 5Lリリース5.2以降は、AIXスケジューラの特殊な改良により、プロセッサ・バインディングを使用せずにOracle Databaseプロセスを最適にスケジュール設定できます。したがって、AIX 5Lリリース5.2以降で実行する場合は、プロセッサへのプロセスのバインドは、特にお薦めしません。
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
に設定することをお薦めします。
~/.profile
または/usr/local/bin/oraenv
スクリプトに次の行を追加します。
AIXTHREAD_SCOPE=S; export AIXTHREAD_SCOPE
~/.login
または/usr/local/bin/coraenv
スクリプトに次の行を追加します。
setenv AIXTHREAD_SCOPE S
これにより、すべてのOracleプロセスの実行に対してシステム全体のスレッド範囲が有効になります。
AIXシステムでは、NIS外部ネーミング・アダプタがサポートされています。NIS外部ネーミングの構成方法と使用方法の詳細は、『Oracle Database Net Services管理者ガイド』の外部ネーミング・メソッドの構成に関する項を参照してください。
マルチスレッド同時処理(SMT)が有効で、AIX 5.3オペレーティング・システムを使用している場合、v$osstat
ビューは、オンライン論理(NUM_LCPUS
)および仮想CPU(NUM_VCPUS
)に対応した2つの行を追加して報告します。
AIX 5.2システムまたはAIX 5.3システムでSMTを使用せずにOracleを実行している場合、これらの行は報告されません。