Oracle® Database管理者リファレンス 11gリリース2 (11.2) for Linux and UNIX-Based Operating Systems B56317-12 |
|
前 |
次 |
この章では、Oracle Databaseのチューニング方法について説明します。内容は次のとおりです。
この項では、Oracle Databaseを効率的にチューニングし、パフォーマンスを最適化することを目的としています。チューニングを頻繁に行うことで、システム・パフォーマンスが強化され、データのボトルネックの発生を防ぐことができます。
データベースのチューニングを始める前に、「オペレーティング・システムのツール」で説明するツールを使用して、通常の動作を監視する必要があります。
データベースのパフォーマンスを評価し、データベース要件を決定できるオペレーティング・システム・ツールがいくつかあります。これらのツールは、Oracleプロセスの統計に加えて、システム全体のCPU使用率、割込み、スワッピング、ページング、コンテキストのスイッチング、入出力についての統計情報も提供します。
この項では、次に示す共通のツールについて説明します。
関連項目: これらのツールの詳細は、オペレーティング・システムのドキュメントおよびmanページを参照してください。 |
プロセス、仮想メモリー、ディスク、トラップおよびCPUアクティビティを表示するときは、vmstat
コマンドを使用します。表示内容はコマンドで切り替えます。CPUアクティビティのサマリーを5秒間隔で6回表示する場合は、次のいずれかのコマンドを実行します。
HP-UXおよびSolarisの場合
$ vmstat -S 5 6
AIXおよびLinuxの場合
$ vmstat 5 6
次に、このコマンドをHP-UXで実行した場合の出力例を示します。
procs memory page disk faults cpu r b w swap free si so pi po fr de sr f0 s0 s1 s3 in sy cs us sy id 0 0 0 1892 5864 0 0 0 0 0 0 0 0 0 0 0 90 74 24 0 0 99 0 0 0 85356 8372 0 0 0 0 0 0 0 0 0 0 0 46 25 21 0 0 100 0 0 0 85356 8372 0 0 0 0 0 0 0 0 0 0 0 47 20 18 0 0 100 0 0 0 85356 8372 0 0 0 0 0 0 0 0 0 0 2 53 22 20 0 0 100 0 0 0 85356 8372 0 0 0 0 0 0 0 0 0 0 0 87 23 21 0 0 100 0 0 0 85356 8372 0 0 0 0 0 0 0 0 0 0 0 48 41 23 0 0 100
procs
列の下にあるw
サブ列は、スワップ・アウトされてディスクに書き込まれたプロセスの数を示します。値が0(ゼロ)以外の場合は、スワッピングが発生してシステムがメモリー不足になっています。
page
列の下にあるsi
列およびso
列は、それぞれ1秒当たりのスワップ・インとスワップ・アウトの回数を示します。スワップ・インとスワップ・アウトは、常に0(ゼロ)にしてください。
page
列の下にあるsr
列は、スキャン率を示します。利用できるメモリーが不足すると、スキャン率が高くなります。
page
列の下にあるpi
列およびpo
列は、それぞれ1秒当たりのページインとページアウトの回数を示します。ページインおよびページアウトの回数は通常、増加します。使用できるメモリーが十分にあるシステムでも、常に多少のページングは行われます。
注意: vmstat コマンドの出力は、プラットフォーム間で異なります。 |
関連項目: 出力の解釈については、manページを参照してください。 |
オペレーティング・システムのアクティビティ・カウンタの累計を表示するときは、sar
(system activity reporter)コマンドを使用します。表示内容はコマンドで切り替えます。
HP-UXシステムの場合、次のコマンドは、入出力アクティビティのサマリーを10秒ごとに表示します。
$ sar -b 10 10
次に、このコマンドを実行した場合の出力例を示します。
13:32:45 bread/s lread/s %rcache bwrit/s lwrit/s %wcache pread/s pwrit/s 13:32:55 0 14 100 3 10 69 0 0 13:33:05 0 12 100 4 4 5 0 0 13:33:15 0 1 100 0 0 0 0 0 13:33:25 0 1 100 0 0 0 0 0 13:33:35 0 17 100 5 6 7 0 0 13:33:45 0 1 100 0 0 0 0 0 13:33:55 0 9 100 2 8 80 0 0 13:34:05 0 10 100 4 4 5 0 0 13:34:15 0 7 100 2 2 0 0 0 13:34:25 0 0 100 0 0 100 0 0 Average 0 7 100 2 4 41 0 0
sar
出力は、ある時点におけるシステムの入出力アクティビティのスナップショットを提供します。複数のオプションを使用して時間隔を指定すると、出力の読取りができなくなることがあります。時間隔を4以下に指定すると、sar
アクティビティ自体が出力に影響を与えることがあります。
関連項目: sar の詳細は、manページを参照してください。 |
端末およびディスクのアクティビティを表示するときは、iostat
コマンドを使用します。表示内容は、コマンドで切り替えます。iostat
コマンドの出力には、ディスク要求キューは表示されず、ビジー状態のディスクが表示されます。この情報は、入出力負荷のバランスを調整する場合に役立ちます。
次のコマンドは、端末およびディスク・アクティビティを5秒間隔で5回表示します。
$ iostat 5 5
次に、このコマンドをSolarisで実行した場合の出力例を示します。
tty fd0 sd0 sd1 sd3 cpu tin tout Kps tps serv Kps tps serv Kps tps serv Kps tps serv us sy wt id 0 1 0 0 0 0 0 31 0 0 18 3 0 42 0 0 0 99 0 16 0 0 0 0 0 0 0 0 0 1 0 14 0 0 0 100 0 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 16 0 0 0 0 0 0 2 0 14 12 2 47 0 0 1 98
大きなディスク要求キューを調べるときは、iostat
コマンドを使用します。要求キューは、特定のディスク・デバイスに対する入出力要求が実行されるまでにかかる時間を示します。要求キューが発生する原因は、特定のディスクに対する入出力要求のボリュームが大きいこと、または入出力の平均シーク時間が長いことです。ディスク要求キューは、0(ゼロ)またはそれに近い値であることが理想的です。
スワップ領域の使用量に関する情報を表示するときは、swap
、swapinfo
、swapon
またはlsps
の各コマンドを使用します。スワップ領域が不足するとプロセスの応答が停止し、Out of Memory
エラーでプロセスが生成できなくなることがあります。次の表は、プラットフォームごとの適切なコマンドの一覧です。
プラットフォーム | コマンド |
---|---|
AIX | lsps -a |
HP-UX | swapinfo -m |
Linux | swapon -s |
Solaris | swap -l およびswap -s |
次に、swap -l
コマンドをSolarisで実行した場合の出力例を示します。
swapfile dev swaplo blocks free /dev/dsk/c0t3d0s1 32,25 8 197592 162136
次の項では、AIXシステム上で使用可能なツールについて説明します。
関連項目: これらのツールの詳細は、AIXオペレーティング・システムのドキュメントおよびmanページを参照してください。 |
AIXのBase Operation Systemには、UNIXシステムに以前から含まれていたパフォーマンス・ツールや、AIXの実装固有の機能を管理するために必要なパフォーマンス・ツールが含まれます。次の表に、最も重要なBase Operation Systemツールを示します。
ツール | 機能 |
---|---|
lsattr |
デバイスの属性を表示します。 |
lslv |
論理ボリューム、つまり物理ボリュームに対する論理ボリュームの割当てに関する情報を表示します。 |
netstat |
ネットワーク関連のデータ構造の内容を表示します。 |
nfsstat |
ネットワーク・ファイル・システムおよびリモート・プロシージャ・コールのアクティビティに関する統計を表示します。 |
nice |
プロセスの初期優先順位を変更します。 |
no |
ネットワーク・オプションを表示または設定します。 |
ps |
1つ以上のプロセスのステータスを表示します。 |
reorgvg |
ボリューム・グループ内の物理パーティション割当てを再編成します。 |
time |
経過した実行時間、ユーザーのCPU処理時間およびシステムのCPU処理時間を表示します。 |
trace |
選択したシステム・イベントを記録および報告します。 |
vmo |
仮想メモリー・マネージャのチューニング可能なパラメータを管理します。 |
AIXのPerformance Toolboxには、システム・アクティビティをローカルおよびリモートで監視しチューニングするためのツールが含まれます。Performance Tool Boxは、Performance Tool Box ManagerおよびPerformance Tool Box Agentの2つのコンポーネントで主に構成されています。Performance Tool Box Managerは、xmperf
ユーティリティを使用して、構成内の様々なシステムからデータを収集および表示します。Performance Tool Box Agentは、xmserd
デーモンを使用して、Performance Tool Box Managerからデータを収集しデータを転送します。Performance Tool Box Agentは、Performance Aide for AIXと呼ばれる個別の製品としても使用できます。
Performance Tool BoxおよびPerformance Aideの両方に、次の表に示す監視およびチューニング・ツールが含まれます。
ツール | 説明 |
---|---|
fdpr |
特定のワークロードに対する実行可能プログラムを最適化します。 |
filemon |
トレース機能を使用して、ファイル・システムのアクティビティを監視および報告します。 |
fileplace |
論理または物理ボリューム内のファイルのブロックの配置を表示します。 |
lockstat |
カーネル・ロックの競合に関する統計を表示します。 |
lvedit |
ボリューム・グループ内の論理ボリュームを対話方式で配置します。 |
netpmon |
トレース機能を使用して、ネットワークの入出力およびネットワーク関連のCPU使用率を報告します。 |
rmss |
システムを様々なメモリー・サイズでシミュレートし、パフォーマンスをテストします。 |
svmon |
仮想メモリーの使用量に関する情報を取得および分析します。 |
syscalls |
システム・コールを記録し、件数をカウントします。 |
tprof |
trace 機能を使用して、モジュールおよびソース・コード文レベルのCPU使用率を報告します。 |
BigFoot |
プロセスのメモリー・アクセスのパターンを報告します。 |
stem |
サブルーチン・レベルのエントリを許可し、既存の実行可能ファイルのインスツルメント処理を終了します。 |
関連項目:
|
次のパフォーマンス分析ツールが、HP-UXシステムで使用できます。
このHP-UXユーティリティは、システムのアクティビティを測定するオンライン診断ツールです。GlancePlusでは、システム・リソースの使用状況に関する情報が表示されます。システムの入出力、CPUおよびメモリー使用量に関する動的な情報が、一連の画面に表示されます。このユーティリティを使用して、プロセスごとのリソースの使用状況を監視できます。
HP Programmer's Analysis Kitには、次のツールが含まれます。
Puma
このツールは、プログラムの実行中にパフォーマンス統計を収集します。グラフ表示により、収集した統計を表示および分析できます。
Thread Trace Visualizer
このツールは、インスツルメント処理スレッド・ライブラリ、libpthread_tr.sl
により作成されるトレース・ファイルを、グラフ表示します。これにより、スレッドの相互作用を表示し、スレッドがブロックされてリソースを待機している箇所を確認できます。
HP Programmer's Analysis Kitは、HP Fortran 77、HP Fortran 90、HP C、HP C++、HP ANSI C++およびHP Pascalのコンパイラに同梱されています。
次の表に、HP-UXでパフォーマンス・チューニングの追加に使用できるパフォーマンス・チューニング・ツールを示します。
ツール | 機能 |
---|---|
caliper (Itaniumのみ) |
高速の動的インスツルメント処理とともに、キャッシュ・ミス、Translation Look-aside Bufferまたは命令サイクルなどの分析タスクのためにランタイム・アプリケーション・データを収集します。これは、C、C++、Fortranおよびアセンブリ・アプリケーション用の動的パフォーマンス測定ツールです。 |
gprof |
プログラムの実行プロファイルを作成します。 |
monitor |
プログラム・カウンタを監視し、特定の関数をコールします。 |
netfmt |
ネットワークを監視します。 |
netstat |
ネットワーク・パフォーマンスに関する統計を報告します。 |
nfsstat |
ネットワーク・ファイル・システムおよびリモート・プロシージャ・コールのアクティビティに関する統計を表示します。 |
nettl |
ロギングおよびトレースにより、ネットワーク・イベントまたはパケットを取得します。 |
prof |
Cプログラムの実行プロファイルを作成してプログラムのパフォーマンス統計を表示し、プログラムの実行時間の大半が消費されている箇所を示します。 |
profil |
プログラム・カウンタ情報をバッファにコピーします。 |
top |
システム上の上位プロセスを表示し、情報を定期的に更新します。 |
Solarisシステムでは、mpstat
コマンドを使用して、マルチプロセッサ・システムの各プロセッサの統計を表示します。表の各行は、1プロセッサのアクティビティを示します。1行目は、システムが再起動してからのすべてのアクティビティをまとめて表示します。後続の各行は、前の時間隔のアクティビティをまとめて表示します。すべての値は、特に明記されていない場合は、1秒当たりのイベント数です。引数は、統計および反復回数の間の時間隔です。
次に、mpstat
コマンドを実行した場合の出力例を示します。
CPU minf mjf xcal intr ithr csw icsw migr smtx srw syscl usr sys wt idl 0 0 0 1 71 21 23 0 0 0 0 55 0 0 0 99 2 0 0 1 71 21 22 0 0 0 0 54 0 0 0 99 CPU minf mjf xcal intr ithr csw icsw migr smtx srw syscl usr sys wt idl 0 0 0 0 61 16 25 0 0 0 0 57 0 0 0 100 2 1 0 0 72 16 24 0 0 0 0 59 0 0 0 100
メモリー・チューニング・プロセスでは、最初にページングおよびスワッピング領域を測定して、使用可能なメモリー量を確認します。 システムのメモリー使用量の確認後、Oracleバッファ・キャッシュをチューニングします。
Oracleバッファ・マネージャによって、アクセス頻度の最も高いデータをキャッシュに長く保存できます。バッファ・マネージャを監視し、バッファ・キャッシュをチューニングすると、Oracle Databaseのパフォーマンスが大幅に向上することがあります。各システムのOracle Databaseバッファ・サイズの最適値は、システム全体の負荷や他のアプリケーションと比較した場合のOracle Databaseの優先順位によって異なります。
この項では、次の項目について説明します。
スワッピングは、オペレーティング・システムのオーバーヘッドに大きく影響するため、最小限に抑える必要があります。スワッピングが行われているかどうかを調べるには、sar
コマンドまたはvmstat
コマンドを使用します。これらのコマンドで使用するオプションについては、manページを参照してください。
システムでスワッピングが行われている場合は、メモリーを節約するために、次の処理を行います。
必要以上にシステム・デーモン・プロセスまたはアプリケーション・プロセスを実行しないようにします。
データベース・バッファの数を減らし、一部のメモリーを解放します。
オペレーティング・システム・ファイル・バッファの数を減らします。
スワップ領域の使用量を確認するには、プラットフォームに応じて、次のいずれかのコマンドを実行します。
プラットフォーム | コマンド |
---|---|
AIX | lsps -a |
HP-UX | swapinfo -m |
Linux | swapon -s |
Solaris | swap -l およびswap -s |
スワップ領域をシステムに追加するには、プラットフォームに応じて、次のいずれかのコマンドを実行します。
プラットフォーム | コマンド |
---|---|
AIX | chps またはmkps |
HP-UX | swapon |
Linux | swapon -a |
Solaris | swap -a |
スワップ領域は、使用している物理RAMとメモリー機能に基づいて、プラットフォーム固有のインストレーション・ガイドに示されているレベルに設定します。
関連項目:
|
プログラムを実行するためにプログラム全体をメモリーに格納しておく必要はないため、ページングはスワッピングほど深刻な問題ではありません。少量のページアウトでは、システムのパフォーマンスにほとんど影響はありません。
大量のページングを検出するには、高速応答時またはアイドル時の測定値と、低速応答時の測定値を比較します。
ページングを監視するには、vmstat
コマンドおよびsar
コマンドを使用します。
関連項目: プラットフォームの監視結果の解釈については、manページまたはオペレーティング・システムのドキュメントを参照してください。 |
次の表に、これらのコマンドの重要な出力列を示します。
プラットフォーム | 列 | 機能 |
---|---|---|
Solaris | vflt/s |
アドレス変換ページ・フォルトの数を示します。アドレス変換フォルトは、メモリー内にない有効なページをプロセスが参照した場合に発生します。 |
HP-UX | at |
アドレス変換ページ・フォルトの数を示します。アドレス変換フォルトは、メモリー内にない有効なページをプロセスが参照した場合に発生します。 |
HP-UX | re |
ページアウト・アクティビティにより解放され、空きリストに追加された有効ページ数を示します。この値は、0(ゼロ)である必要があります。 |
システムで大量のページアウト・アクティビティが常に発生している場合は、次の方法で解決してください。
メモリーを増設します。
一部の作業を別のシステムに移します。
システム・グローバル領域(SGA)で使用するメモリーを少なく設定します。
読取り操作時には、オペレーティング・システムのブロック全体がディスクから読み取られます。データベースのブロック・サイズが、オペレーティング・システムのファイル・システムのブロック・サイズより小さい場合は、入出力バンド幅の効率が悪くなります。Oracle Databaseのブロック・サイズをファイル・システムのブロック・サイズの倍数になるように設定すると、パフォーマンスを最大5%向上させることができます。
データベースのブロック・サイズは、DB_BLOCK_SIZE
初期化パラメータで設定します。ただし、このパラメータの値を変更するには、データベースを再作成する必要があります。
DB_BLOCK_SIZE
パラメータの現在の設定値を調べるには、SQL*PlusのSHOW PARAMETER
DB_BLOCK_SIZE
コマンドを実行します。
パラメータを設定して、ワークロードの要件、および同じシステムで稼働している様々なデータベース・インスタンスの要件に基づいて、自動的にメモリーを割り当てることができます。MEMORY_TARGET
パラメータは、そのインスタンスに対してOracleシステム全体の使用可能メモリーを指定し、SGAおよびProcess Global Area(PGA)コンポーネントを自動的にチューニングします。MEMORY_MAX_TARGET
パラメータは、MEMORY_TARGET
パラメータが動的に増加できる上限値を示します。
デフォルトでは、これらのパラメータの値は両方とも0であり、自動チューニングは行われません。自動チューニングをアクティブにするには、MEMORY_TARGET
パラメータを0以外の値に設定します。MEMORY_TARGET
パラメータを動的に有効にするには、起動時にMEMORY_MAX_TARGET
パラメータを設定する必要があります。
注意: MEMORY_TARGET パラメータを0以外の値に設定すれば、MEMORY_MAX_TARGET パラメータは自動的にこの値を取得します。
Solarisでは、 Linuxでは、 |
ヒント: MEMORY_TARGET およびMEMORY_MAX_TARGET パラメータは、元の設定、コンピュータ上のOracleに使用可能なメモリー、およびワークロードのメモリー要件に基づいて設定できます。 |
使用可能なディスク全体で入出力を均等に分散して、ディスクへのアクセス時間が短くなるようにしてください。小規模なデータベースやRAIDを使用しないデータベースでは、それぞれのデータファイルと表領域を使用可能なディスク間に分散してください。
この項では、次の項目について説明します。
データベース記憶域に自動ストレージ管理を使用すると、すべてのデータベース入出力が、自動ストレージ管理ディスク・グループ内の使用可能なすべてのディスク・デバイス間に分散されます。
自動ストレージ管理を使用することで、ディスク入出力を手動でチューニングする必要がなくなります。
オペレーティング・システムに応じて、いくつかのファイル・システム・タイプから選択できます。ファイル・システム・タイプごとにそれぞれ特性が異なります。このことが、データベースのパフォーマンスに大きな影響を与えます。次の表に、一般的なファイル・システム・タイプを示します。
ファイル・システムとアプリケーションには、必ずしも互換性があるとはかぎりません。たとえば、Unifiedファイル・システムの各実装間でさえ、互換性の比較は容易ではありません。選択したファイル・システムによって、パフォーマンスに最大20%の開きが出る場合があります。ファイル・システムを使用する場合は、次のことを行ってください。
ハードディスクがクリーンで断片化されないように、ファイル・システムのパーティションを新しく作成します。
データベース・ファイルに対してファイル・システムを使用する前に、パーティションでファイル・システム・チェックを行います。
ディスク入出力をできるだけ均等に分散します。
論理ボリューム・マネージャまたはRAIDデバイスを使用していない場合、データファイルとは異なるファイル・システムにログ・ファイルを格納することを検討してください。
次の項では、ディスク・パフォーマンスの監視方法について説明します。
ディスク・パフォーマンスを監視するには、sar -b
およびsar -u
コマンドを使用します。
次の表に、sar -b
コマンド出力の列をいくつか示します。これらの列は、ディスク・パフォーマンスの分析に重要です。
列 | 説明 |
---|---|
bread/s 、bwrit/s |
1秒ごとに読み取られるブロック数と書き込まれるブロック数(ファイル・システム・データベースに重要) |
pread/s 、pwrit/s |
RAW特性デバイスに対する1秒当たりの読取り数または書込み数 |
ディスク・パフォーマンスの分析に重要なsar -u
列の1つに、%wio
があります。これによって、ブロックされた入出力で待機するCPU時間の割合がわかります。
注意: 一部のLinuxでは、sar -u コマンドの出力結果に%wio 列が表示されません。詳細な入出力統計を表示するには、iostat -x コマンドを使用できます。 |
キー・インジケータは次のとおりです。
bread
、bwrit
、pread
およびpwrit
列の値の合計は、ディスク入出力サブシステムのアクティビティのレベルを示します。合計値が大きいほど、入出力サブシステムはビジーになります。物理ドライブの数が多いほど、合計のしきい値が高くなる可能性があります。デフォルトの最適値は、ドライブ2個の場合は40以下、ドライブ4から8個の場合は60以下です。
%rcache
列の値は91以上、%wcache
列の値は61以上である必要がありますそれ以外の場合は、システムがディスク入出力バウンドになる可能性があります。
%wio
列の値が常に21以上の場合、システムは入出力バウンドになります。
alter diskgroup disk online
およびalter diskgroup disk offline
コマンドを使用して、ディスク・セットへの入出力を一時的に停止します。これらのコマンドを使用すると、定期的なメンテナンス・タスクを実行したり、ディスク・ファームウェアのアップグレードなどのアップグレードを実行することができます。ディスク・グループ内の一部のディスクで一時的な障害が発生した場合は、alter diskgroup disk online
を使用して、ディスク・グループを迅速にリカバリします。
SGAとは、共有メモリーに格納されているOracle構造体のことです。これには、静的データ構造体、ロックおよびデータ・バッファが含まれています。
1つの共有メモリー・セグメントの最大サイズは、shm
max
カーネル・パラメータで指定します。
次の表に、このパラメータの推奨値をプラットフォームごとに示します。
プラットフォーム | 推奨値 |
---|---|
AIX | 該当なし |
HP-UX | システムに搭載された物理メモリーのサイズ。 |
Linux | 次の値のうち小さいほう。
|
Solaris | 4294967295または4GB - 16MB。
注意: システムで、Oracle9i DatabaseおよびOracle Database 11gの両方のインスタンスが実行されている場合、 |
SGAのサイズが共有メモリー・セグメントの最大サイズ(shm
max
またはshm
_max
)を超える場合、Oracle Databaseでは、要求されたSGAサイズになるように、連続したセグメントが連結されます。shm
seg
カーネル・パラメータには、任意のプロセスで連結できるセグメントの最大数を指定します。SGAのサイズを制御するには、次の初期化パラメータを設定します。
または、SGAサイズを自動的にチューニングできるように、SGA_TARGET
初期化パラメータを設定します。
注意: これらのパラメータの値が適切に設定されていることを確認します。値を大きく設定しすぎると、物理メモリーに対する共有メモリーの割合が非常に高くなります。そのため、パフォーマンスが低下します。 |
共有サーバーで構成されているOracle Databaseでは、SHARED_POOL_SIZE
初期化パラメータの値を大きく設定するか、LARGE_POOL_SIZE
初期化パラメータを使用したカスタム構成が必要です。Oracle Universal Installerを使用してデータベースをインストールした場合、SHARED_POOL_SIZE
パラメータの値は、Oracle Database Configuration Assistantによって自動的に設定されます。ただし、データベースを手動で作成した場合は、パラメータ・ファイルでSHARED_POOL_SIZE
パラメータの値を同時ユーザーごとに1KBずつ増やしてください。
各OracleプロセスがSGA全体をアドレス指定するためには、十分な共有メモリーが必要です。
次のいずれかの方法で、SGAサイズを確認できます。
次のSQL*Plusコマンドを実行して、実行中のデータベースのSGAサイズを表示します。
SQL> SHOW SGA
結果はバイト単位で表示されます。
データベース・インスタンスを起動すると、SGAがシステム・グローバル領域の合計ヘッダーの横に表示されます。
oracle
ユーザーでipcs
コマンドを実行します。
システム・リソース検証ユーティリティ(sysresv
)は、Oracle Database 8i
以上のリリースで使用できます。これを使用すると、指定したOracleシステム識別子(ORACLE_SID
)に対してOracleインスタンスおよびオペレーティング・システム・リソースの情報が提供されます。このユーティリティは$ORACLE_HOME/bin
にありますが、他の場所から使用できます。
sysresv
ユーティリティを使用して、Oracleインスタンスのステータスを表示したり、そのインスタンスが使用するオペレーティング・システム・リソース(メモリーやセマフォ・パラメータなど)を特定します。このユーティリティは、複数のインスタンスが実行されている場合に特に役立ちます。たとえば、インスタンスが応答しない場合は、このユーティリティを使用してオペレーティング・システム・リソースを削除できます。
Oracleインスタンスがクラッシュしたか、強制終了された場合にこのインスタンスに関連するメモリーおよびセマフォが自動的にクリーンアップされなかったときに、このユーティリティを使用できます。このユーティリティは、実行されているOracleインスタンスを判断する際にも役立ちます。
sysresv
ユーティリティを使用するには、システム・グローバル領域(SGA)へのアクセス権が必要です。SGAにアクセスするには、Oracle所有者またはOracleバイナリを所有するグループのメンバーである必要があります。
sysresv
ユーティリティの構文は次のとおりです。
sysresv [-i] [-f] [-d on|off] [-l sid1[ sid2 ...]]
説明は次のとおりです。
-i
: 各sidのIPCリソースを削除する前に確認を求めます。
-f
: 確認を求めずにIPCリソースを削除します。このフラグは-i
オプションよりも優先されます
-d on|off
: onの場合は各sidのIPCリソースを一覧表示します。指定しない場合、-d
のデフォルトはonです
-l sid1 [sid2 sid3]
: 空白区切りの1つ以上のシステム識別子に対してsysresv
チェックを実行します
sysresv
をフラグなしで使用した場合、環境変数のOracleインストール所有者ユーザー・プロファイル・リストの$ORACLE_SID
環境変数によって識別されるOracleインスタンスのIPCリソースがレポートされます。
注意: この項の内容は、AIXのみに適用されます。 |
共有メモリーでは、プロセス間で共通の仮想メモリー・リソースが使用されます。プロセスは、パフォーマンスを向上させるために、表やキャッシュ済エントリなどの仮想メモリー変換リソース・セットを介して仮想メモリー・セグメントを共有します。
共有メモリーを固定して、ページングを防ぎ、入出力のオーバーヘッドを減らすことができます。そのためには、LOCK_SGA
パラメータをtrue
に設定します。AIX 5Lの場合、基礎となるハードウェアでラージ・ページ機能がサポートされていれば、同じパラメータによりこの機能がアクティブになります。
次のコマンドを実行し、固定されたメモリーをOracle Databaseで使用できるようにします。
$ /usr/sbin/vmo -r -o v_pinshm=1
設定する実メモリーの最大の割合がpercent_of_real_memory
の場合、次のようなコマンドを実行し、固定されたメモリーで使用可能な実メモリーの最大量を設定します。
$ /usr/sbin/vmo -r -o maxpin percent=percent_of_real_memory
maxpin percent
オプションを使用する場合、固定できる空きメモリーをカーネルで使用可能にするためには、固定されたメモリーの量がOracle SGAのサイズを、システム上の実メモリーの3%以上は超えている必要があります。たとえば、2GBの物理メモリーで、400MB(RAMの20%)のSGAを固定する場合、次のコマンドを実行します。
$ /usr/sbin/vmo -r -o maxpin percent=23
注意: デフォルトのmaxpin percent 値は80 percent に設定され、ほとんどのインストールで機能します。 |
svmon
コマンドを実行し、システムの操作時に固定されたメモリーの使用量を監視します。LOCK_SGA
パラメータがtrue
に設定されている場合にのみ、Oracle Databaseはメモリーの固定を実行します。SGAサイズが、固定に使用できるメモリーのサイズを超える場合、これらのサイズを超えるSGAの部分が、通常の共有メモリーに割り当てられます。
AIX POWER4-およびPOWER5-Based Systemsでのラージ・ページ機能
POWER4またはPOWER5システム上で10件の16MBのラージ・ページをオンにし、予約するには、次のコマンドを実行します。
$ /usr/sbin/vmo -r -o lgpg_regions=10 -o lgpg_size=16777216
このコマンドは、bosbootを促し、変更を有効にするには再起動が必要であることを警告します。
SGA全体を格納できる十分な大きさのラージ・ページを指定することをお薦めします。LOCK_SGA
パラメータがtrue
に設定されている場合、Oracle Databaseインスタンスはラージ・ページの割当てを実行します。
16MBのページが常に固定され、これは標準メモリーには使用できません。16MBサイズのページのプールが構成されている場合、このメモリーは、他のアプリケーションがラージ・ページを現在使用していなくても標準メモリーの割当てに使用できません。
POWER5
ベース・システムでは64Kページがサポートされます。Oracleでは、使用可能な場合は、これらのページをSGAに使用します。これらの64Kページには、追加構成が必要ありません。また、LOCK_SGA
パラメータ設定に依存しません。
ラージ・ページの使用を監視するには、次のコマンドを使用します。
$ vmstat -P all
AIXオペレーティング・システムで16MBページまたは固定されたメモリー(共有メモリーの割り当て時)を使用する場合、OracleユーザーIDには、CAP_BYPASS_RAC_VMM
およびCAP_PROPAGATE
機能が必要です。データベース・インスタンスの起動に使用するユーザーIDにも、同じ機能が必要です。特に、Oracle Real Application Cluster(Oracle RAC)データベースでラージ・ページを使用する場合は、Oracle RACデータベース・インスタンスの起動および停止にsrvctl
コマンドを使用するため、CAP_BYPASS_RAC_VMM
およびCAP_PROPAGATE
機能をroot
ユーザーにも設定する必要があります。
関連項目: 固定されたメモリーおよびラージ・ページの詳細は、AIXのドキュメントを参照してください。 |
これらの機能は、次のコマンドを使用して設定および確認できます。
次のコマンドを実行して、現在の機能を確認します。
$ lsuser –a capabilities oracle
CAP_BYPASS_RAC_VMM
およびCAP_PROPAGATE
機能をこのユーザーIDに追加します。
$ chuser capabilities=CAP_BYPASS_RAC_VMM,CAP_PROPAGATE oracle
注意: 機能の属性を表示および設定できるのは、root ユーザーのみです。 |
Oracle Databaseバッファ・キャッシュのサイズを調整します。メモリーに制限がある場合は、オペレーティング・システムのバッファ・キャッシュも調整します。
オペレーティング・システムのバッファ・キャッシュには、メモリーからディスクまたはディスクからメモリーへの転送中に、メモリー内のデータ・ブロックが保持されます。
Oracle Databaseバッファ・キャッシュは、Oracle Databaseバッファを格納するためのメモリー内の領域です。
システムで使用できるメモリーに制限がある場合は、それに応じてオペレーティング・システムのバッファ・キャッシュのサイズを小さくします。
調整するバッファ・キャッシュを判断するには、sar
コマンドを使用します。