8 Oracle Databaseのチューニング
この章では、Oracle Databaseのチューニング方法について説明します。内容は次のとおりです。
8.1 チューニングの重要性
この項では、Oracle Databaseを効率的にチューニングし、パフォーマンスを最適化することを目的としています。チューニングを頻繁に行うことで、システム・パフォーマンスが強化され、データのボトルネックの発生を防ぐことができます。
データベースのチューニングを始める前に、「オペレーティング・システムのツール」で説明するツールを使用して、通常の動作を監視する必要があります。
8.2 オペレーティング・システムのツール
データベースのパフォーマンスを評価し、データベース要件を決定できるオペレーティング・システム・ツールがいくつかあります。これらのツールは、Oracleプロセスの統計に加えて、システム全体のCPU使用率、割込み、スワッピング、ページング、コンテキストのスイッチング、I/Oについての統計情報も提供します。
この項では、次に示す共通のツールについて説明します。
関連項目:
これらのツールの詳細は、オペレーティング・システムのドキュメントおよびmanページを参照してください。
8.2.1 vmstat
vmstatはプロセス、メモリー、ページング、ブロックI/O、トラップ、およびCPUアクティビティに関する情報を報告します。
プロセス、仮想メモリー、ディスク、トラップおよびCPUアクティビティを表示するときは、vmstat
コマンドを使用します。表示内容はコマンドで切り替えます。CPUアクティビティのサマリーを5秒間隔で6回表示する場合は、次のいずれかのコマンドを実行します。
-
Oracle SolarisおよびHP-UXの場合:
$ vmstat -S 5 6
注意:
-S
オプションでは、スワッピング統計が表示されます。 -
LinuxおよびIBM AIX on POWER Systems (64-bit)の場合:
$ vmstat 5 6
次に、このコマンドをLinuxで実行した場合の出力例を示します。
procs memory swap io system cpu r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 130668 103604 198144 5029000 0 0 1 68 8 6 0 0 100 0 0 0 0 130668 103604 198144 5029000 0 0 0 86 226 352 0 0 100 0 0 0 0 130668 103604 198148 5029000 0 0 0 58 223 357 0 0 100 0 0 0 0 130668 103604 198152 5029004 0 0 0 68 223 358 0 0 100 0 0 0 0 130668 103604 198152 5029004 0 0 0 56 223 357 0 0 100 0 0 0 0 130668 103604 198152 5029004 0 0 0 57 228 362 0 0 100 0 0
次に、$ vmstat -S 1 2
コマンドをHP-UXで実行した場合の出力例を示します。
procs memory page faults cpu r b w avm free si so pi po fr de sr in sy cs us sy id 1 0 0 112085 2189167 0 0 3 0 0 0 1 1033 32186 108 1 0 98 1 0 0 112085 2189074 0 0 4 0 0 0 0 1022 508 60 0 0 100
procs
列の下にあるw
サブ列は、スワップ・アウトされてディスクに書き込まれたプロセスの数を示します。値が0(ゼロ)以外の場合は、スワッピングが発生してシステムがメモリー不足になっています。
HP-UXおよびOracle Solarisの場合、page
列の下にあるsi
列とso
列は、それぞれ1秒当たりのスワップインおよびスワップアウトのプロセスの数を示します。これらの値はゼロであることが理想的です。
Linuxの場合は、si
列とso
列がスワップインまたはスワップアウトされたメモリーの量を表します。
page
列の下にあるsr
列は、スキャン率を示します。利用できるメモリーが不足すると、スキャン率が高くなります。
page
列の下にあるpi
列およびpo
列は、それぞれ1秒当たりのページインとページアウトの回数を示します。ページインおよびページアウトの回数は通常、増加します。使用できるメモリーが十分にあるシステムでも、常に多少のページングは行われます。
関連項目:
出力の解釈については、プラットフォームのvmstat manページを参照してください
8.2.2 sar
オペレーティング・システムのアクティビティ・カウンタの累計を表示するときは、sar
(system activity reporter)コマンドを使用します。表示内容はコマンドで切り替えます。
UNIXシステムの場合、次のコマンドは、入出力アクティビティのサマリーを10秒ごとに表示します。
$ sar -b 10 10
次に、このコマンドのLinuxシステムでの出力例を示します。
10:28:01 tps rtps wtps bread/s bwrtn/s 10:28:11 17.20 0.00 17.20 0.00 300.80 10:28:21 46.40 0.00 46.40 0.00 467.20 10:28:31 16.40 0.00 16.40 0.00 283.20 10:28:41 15.60 0.00 15.60 0.00 275.20 10:28:51 17.02 0.00 17.02 0.00 254.65 10:29:01 35.80 0.00 35.80 0.00 414.40 10:29:11 15.80 0.00 15.80 0.00 273.60 10:29:21 17.40 0.00 17.40 0.00 262.40 10:29:31 32.20 0.00 32.20 0.00 406.40 10:29:41 20.98 0.00 20.98 0.00 354.85 Average: 23.48 0.00 23.48 0.00 329.28
sar
出力は、ある時点におけるシステムの入出力アクティビティのスナップショットを提供します。複数のオプションを使用して時間隔を指定すると、出力の読取りができなくなることがあります。時間隔を4以下に指定すると、sar
アクティビティ自体が出力に影響を与えることがあります。
関連項目:
sar
の詳細は、manページを参照してください。
8.2.3 iostat
端末およびディスクのアクティビティを表示するときは、iostat
コマンドを使用します。表示内容は、コマンドで切り替えます。iostat
コマンドの出力には、ディスク要求キューは表示されず、ビジー状態のディスクが表示されます。この情報は、入出力負荷のバランスを調整する場合に役立ちます。
次のコマンドは、端末およびディスク・アクティビティを5秒間隔で5回表示します。
$ iostat 5 5
次に、このコマンドをOracle Solarisで実行した場合の出力例を示します。
tty blkdev0 sd1 sd2 sd3 cpu tin tout kps tps serv kps tps serv kps tps serv kps tps serv us sy st 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(ゼロ)またはそれに近い値であることが理想的です。
8.2.4 swap、swapinfo、swaponまたはlsps
スワップ領域の使用量に関する情報を表示するときは、swap
、swapinfo
、swapon
またはlsps
の各コマンドを使用します。スワップ領域が不足するとプロセスの応答が停止し、Out of Memory
エラーでプロセスが生成できなくなることがあります。次の表は、プラットフォームごとの適切なコマンドの一覧です。
プラットフォーム | コマンド |
---|---|
Oracle Solaris |
|
Linux |
|
POWER Systems (64ビット)上のIBM AIX |
|
HP-UX |
|
次に、swap -l
commandコマンドをOracle Solarisで実行した場合の出力例を示します。
swapfile dev swaplo blocks free /dev/zvol/dsk/rpool/swap 274,1 8 20971447 20971447
8.2.5 Oracle Solarisのツール
Oracle Solarisシステムでは、mpstat
コマンドを使用して、マルチプロセッサ・システムの各プロセッサの統計を表示します。表の各行は、1プロセッサのアクティビティを示します。1行目は、システムが再起動してからのすべてのアクティビティをまとめて表示します。後続の各行は、前の時間隔のアクティビティをまとめて表示します。すべての値は、特に明記されていない場合は、1秒当たりのイベント数です。引数は、統計および反復回数の間の時間隔です。
次に、mpstat
コマンドを実行した場合の出力例を示します。
CPU minf mjf xcal intr ithr csw icsw migr smtx srw syscl usr sys st idl 0 3 0 2 319 103 109 0 19 11 0 73 0 1 0 99 1 4 0 1 71 1 95 0 14 12 0 96 0 0 0 99
8.2.7 IBM AIX on POWER Systems (64-Bit)のツール
次の項では、IBM AIX on POWER Systems (64-bit)上で使用可能なツールについて説明します。
関連項目:
これらのツールの詳細は、IBM AIX on POWER Systems (64-bit)オペレーティング・システムのドキュメントおよびmanページを参照してください。
8.2.7.1 Base Operation Systemツール
IBM AIX on POWER Systems (64-bit)のBase Operation Systemには、UNIXシステムに以前から含まれていたパフォーマンス・ツールや、IBM AIX on POWER Systems (64-bit)の実装固有の機能を管理するために必要なパフォーマンス・ツールが含まれます。次の表に、最も重要なBase Operation Systemツールを示します。
ツール | 機能 |
---|---|
|
デバイスの属性を表示します。 |
|
論理ボリューム、つまり物理ボリュームに対する論理ボリュームの割当てに関する情報を表示します。 |
|
ネットワーク関連のデータ構造の内容を表示します。 |
|
ネットワーク・ファイル・システムおよびリモート・プロシージャ・コールのアクティビティに関する統計を表示します。 |
|
プロセスの初期優先順位を変更します。 |
|
ネットワーク・オプションを表示または設定します。 |
|
1つ以上のプロセスのステータスを表示します。 |
|
ボリューム・グループ内の物理パーティション割当てを再編成します。 |
|
経過した実行時間、ユーザーのCPU処理時間およびシステムのCPU処理時間を表示します。 |
|
選択したシステム・イベントを記録および報告します。 |
|
仮想メモリー・マネージャのチューニング可能なパラメータを管理します。 |
8.2.7.2 Performance Toolbox
IBM AIX on POWER Systems (64-bit)の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 IBM AIX on POWER Systems (64-bit)と呼ばれる個別の製品としても使用できます。
Performance Tool BoxおよびPerformance Aideの両方に、次の表に示す監視およびチューニング・ツールが含まれます。
ツール | 説明 |
---|---|
|
特定のワークロードに対する実行可能プログラムを最適化します。 |
|
トレース機能を使用して、ファイル・システムのアクティビティを監視および報告します。 |
|
論理または物理ボリューム内のファイルのブロックの配置を表示します。 |
|
カーネル・ロックの競合に関する統計を表示します。 |
|
ボリューム・グループ内の論理ボリュームを対話方式で配置します。 |
|
トレース機能を使用して、ネットワークの入出力およびネットワーク関連のCPU使用率を報告します。 |
|
システムを様々なメモリー・サイズでシミュレートし、パフォーマンスをテストします。 |
|
仮想メモリーの使用量に関する情報を取得および分析します。 |
|
システム・コールを記録し、件数をカウントします。 |
|
|
|
プロセスのメモリー・アクセスのパターンを報告します。 |
|
サブルーチン・レベルのエントリを許可し、既存の実行可能ファイルのインスツルメント処理を終了します。 |
関連項目:
-
これらのツールの詳細は、『Performance Toolbox Version 2 and 3 Guide and Reference』を参照してください。
-
これらのツールの構文については、『AIX 5L Performance Management Guide』を参照してください。
8.2.8 HP-UXのツール
次のパフォーマンス分析ツールが、HP-UXシステムで使用できます。
-
GlancePlus/UX
このHP-UXユーティリティは、システムのアクティビティを測定するオンライン診断ツールです。GlancePlusでは、システム・リソースの使用状況に関する情報が表示されます。システムの入出力、CPUおよびメモリー使用量に関する動的な情報が、一連の画面に表示されます。このユーティリティを使用して、プロセスごとのリソースの使用状況を監視できます。
-
HP Programmer's Analysis Kit
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
システム上の上位プロセスを表示し、情報を定期的に更新します。
-
8.3 メモリー管理のチューニング
メモリー・チューニング・プロセスでは、最初にページングおよびスワッピング領域を測定して、使用可能なメモリー量を確認します。 システムのメモリー使用量の確認後、Oracleバッファ・キャッシュをチューニングします。
Oracleバッファ・マネージャによって、アクセス頻度の最も高いデータをキャッシュに長く保存できます。バッファ・マネージャを監視し、バッファ・キャッシュをチューニングすると、Oracle Databaseのパフォーマンスが大幅に向上することがあります。各システムのOracle Databaseバッファ・サイズの最適値は、システム全体の負荷や他のアプリケーションと比較した場合のOracle Databaseの優先順位によって異なります。
この項には次のトピックが含まれます:
8.3.1 十分なスワップ領域の割当て
スワッピングは、オペレーティング・システムのオーバーヘッドに大きく影響するため、最小限に抑える必要があります。スワッピングが行われているかどうかを調べるには、sar
コマンドまたはvmstat
コマンドを使用します。これらのコマンドで使用するオプションについては、manページを参照してください。
システムでスワッピングが行われている場合は、メモリーを節約するために、次の処理を行います。
-
必要以上にシステム・デーモン・プロセスまたはアプリケーション・プロセスを実行しないようにします。
-
データベース・バッファの数を減らし、一部のメモリーを解放します。
-
オペレーティング・システム・ファイル・バッファの数を減らします。
スワップ領域の使用量を確認するには、プラットフォームに応じて、次のいずれかのコマンドを実行します。
プラットフォーム | コマンド |
---|---|
Oracle Solaris |
|
Linux |
|
POWER Systems (64ビット)上のIBM AIX |
|
HP-UX |
|
スワップ領域の使用量を監視し、必要に応じて値を大きくしてください。次の表では、インストールされているRAMと構成済スワップ領域要件の、初期に推奨される関係について説明します。
RAM | スワップ領域 |
---|---|
1から2GB |
RAMのサイズの1.5倍 |
2GBから16GB |
RAMのサイズと同じ |
16GB超 |
16GB |
スワップ領域をシステムに追加するには、プラットフォームに応じて、次のいずれかのコマンドを実行します。
プラットフォーム | コマンド |
---|---|
Oracle Solaris |
次のオプションのいずれかを使用します。
|
Linux |
|
POWER Systems (64ビット)上のIBM AIX |
|
HP-UX |
|
関連項目:
-
これらのコマンドの詳細は、オペレーティング・システムのドキュメントを参照してください。
注意:
12c以降のOracle Databaseでは、Oracle SolarisのOptimized Shared Memory (OSM)モデルを使用して、自動メモリー管理を実装します。DISMとは異なり、OSMではディスクのスワップ領域を二重に割り当てる必要はありません。スワップ領域の要件については、次の説明を参照してください。
8.3.2 監視ページング
プログラムを実行するためにプログラム全体をメモリーに格納しておく必要はないため、ページングはスワッピングほど深刻な問題ではありません。少量のページアウトでは、システムのパフォーマンスにほとんど影響はありません。
大量のページングを検出するには、高速応答時またはアイドル時の測定値と、低速応答時の測定値を比較します。
ページングを監視するには、vmstat
コマンドおよびsar
コマンドを使用します。
関連項目:
プラットフォームの監視結果の解釈については、manページまたはオペレーティング・システムのドキュメントを参照してください。
Oracle Solarisでは、vmstat —p
はアドレス変換ページ・フォルトの数を示します。アドレス変換フォルトは、メモリー内にない有効なページをプロセスが参照した場合に発生します。
メモリーに関連する問題を分析するには、vmstat
出力の空きメモリーの量を調べることから始める必要があります。空きメモリーが少ない場合は、sr
(scan rate)列がゼロ以外の値になっていないか確認する必要があります。これは、ページ・スキャナがメモリー・ページをスキャンして、空きリストに戻して再利用することを示しています。
匿名(不良)ページングは、api
(anonymous page-in)列とapo
(anonymous page-out)列の下のvmstat -p
列の出力で監視できます。この種類のページングは、メモリー不足の間にシステムが匿名ページをスワップ・デバイスに移動すると発生します。
システムで大量のページアウト・アクティビティが常に発生している場合は、次の方法で解決してください。
-
メモリーを増設します。
-
一部の作業を別のシステムに移します。
-
システム・グローバル領域(SGA)で使用するメモリーを少なく設定します。
関連項目
8.3.3 Oracleブロック・サイズの調整
読取り操作時には、オペレーティング・システムのブロック全体がディスクから読み取られます。データベースのブロック・サイズが、オペレーティング・システムのファイル・システムのブロック・サイズより小さい場合は、入出力バンド幅の効率が悪くなります。Oracle Databaseのブロック・サイズをファイル・システムのブロック・サイズの倍数になるように設定すると、パフォーマンスを最大5%向上させることができます。
データベースのブロック・サイズは、DB_BLOCK_SIZE
初期化パラメータで設定します。ただし、このパラメータの値を変更するには、データベースを再作成する必要があります。
DB_BLOCK_SIZE
パラメータの現在の設定値を調べるには、SQL*PlusのSHOW PARAMETER
DB_BLOCK_SIZE
コマンドを実行します。
8.3.4 メモリー・リソースの割当て
パラメータを設定して、ワークロードの要件、および同じシステムで稼働している様々なデータベース・インスタンスの要件に基づいて、自動的にメモリーを割り当てることができます。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
パラメータは自動的にこの値を取得します。
MEMORY_TARGET
パラメータおよびMEMORY_MAX_TARGET
パラメータは、Linux、Oracle Solaris、HP-UXおよびIBM AIX on POWER Systems (64-bit)のプラットフォームでのみサポートされています。
Oracle Solarisでは、MEMORY_TARGET
またはMEMORY_MAX_TARGET
で動的緊密共有メモリーを使用できます。詳細は、「Oracle SolarisでのOracle Databaseの管理」を参照してください。
Linuxでは、MEMORY_TARGET
またはMEMORY_MAX_TARGET
が有効になっている場合、一部の共有リソース要件が増加します。詳細は、「共有リソースの割当て」の項を参照してください。
ヒント:
MEMORY_TARGET
およびMEMORY_MAX_TARGET
パラメータは、元の設定、コンピュータ上のOracleに使用可能なメモリー、およびワークロードのメモリー要件に基づいて設定できます。
8.4 ディスク入出力のチューニング
使用可能なディスク全体で入出力を均等に分散して、ディスクへのアクセス時間が短くなるようにしてください。小規模なデータベースやRAIDを使用しないデータベースでは、それぞれのデータファイルと表領域を使用可能なディスク間に分散してください。
この項では、次の項目について説明します。
8.4.1 自動ストレージ管理の使用
データベース記憶域に自動ストレージ管理を使用すると、すべてのデータベース入出力が、自動ストレージ管理ディスク・グループ内の使用可能なすべてのディスク・デバイス間に分散されます。
自動ストレージ管理を使用することで、ディスク入出力を手動でチューニングする必要がなくなります。
8.4.2 適切なファイル・システム・タイプの選択
オペレーティング・システムに応じて、いくつかのファイル・システム・タイプから選択できます。ファイル・システム・タイプごとにそれぞれ特性が異なります。このことが、データベースのパフォーマンスに大きな影響を与えます。次の表に、一般的なファイル・システム・タイプを示します。
ファイル・システム | プラットフォーム | 説明 |
---|---|---|
ZFS |
Oracle Solaris |
Oracle Solaris ZFSファイル・システム |
S5 |
HP-UX |
UNIX System Vファイル・システム |
Oracle Solaris、IBM AIX on POWER Systems (64-Bit)およびHP-UX |
||
Oracle Solaris、IBM AIX on POWER Systems (64-Bit)およびHP-UX |
||
Linux |
||
Linux |
Oracle Clusterファイル・システム |
|
POWER Systems (64ビット)上のIBM AIX |
||
POWER Systems (64ビット)上のIBM AIX |
一般的なパラレル・ファイル・システム |
ファイル・システムとアプリケーションには、必ずしも互換性があるとはかぎりません。たとえば、UFSの異なる実装間でも、互換性の比較は難しくなります。選択したファイル・システムによって、パフォーマンスに最大20%の開きが出る場合があります。ファイル・システムを使用する場合は、次のことを行ってください。
-
ハードディスクがクリーンで断片化されないように、ファイル・システムのパーティションを新しく作成します。
-
データベース・ファイルに対してファイル・システムを使用する前に、パーティションでファイル・システム・チェックを行います。
-
ディスク入出力をできるだけ均等に分散します。
-
論理ボリューム・マネージャまたはRAIDデバイスを使用していない場合、データファイルとは異なるファイル・システムにログ・ファイルを格納することを検討してください。
関連項目:
ZFSのOracle Database向けチューニングの詳細は、Oracle Solaris 11.3チューニング可能パラメータのリファレンス・マニュアルの「データベース製品に向けたZFSのチューニング」を参照してください。8.5 ディスク・パフォーマンスの監視
次の項では、ディスク・パフォーマンスの監視方法について説明します。
8.5.1 オペレーティング・システムでのディスク・パフォーマンスの監視
ディスク・パフォーマンスを監視するには、sar -b
およびsar -u
コマンドを使用します。
次の表に、sar -b
コマンド出力の列をいくつか示します。これらの列は、ディスク・パフォーマンスの分析に重要です。
列 | 説明 |
---|---|
|
1秒ごとに読み取られるブロック数と書き込まれるブロック数(ファイル・システム・データベースに重要) |
|
RAWデバイス上の1秒ごとのI/O操作の数(RAWパーティション・データベース・システムに重要) |
キー・インジケータは次のとおりです。
-
bread
、bwrit
、pread
およびpwrit
列の値の合計は、ディスク入出力サブシステムのアクティビティのレベルを示します。合計値が大きいほど、入出力サブシステムはビジーになります。物理ドライブの数が多いほど、合計のしきい値が高くなる可能性があります。 -
%rcache
列の値は91以上、%wcache
列の値は61以上である必要がありますそれ以外の場合は、システムがディスク入出力バウンドになる可能性があります。
8.5.2 ディスク再同期化の使用による自動ストレージ管理ディスク・グループの監視
alter diskgroup disk online
およびalter diskgroup disk offline
コマンドを使用して、ディスク・セットへの入出力を一時的に停止します。これらのコマンドを使用すると、定期的なメンテナンス・タスクを実行したり、ディスク・ファームウェアのアップグレードなどのアップグレードを実行することができます。ディスク・グループ内の一部のディスクで一時的な障害が発生した場合は、alter diskgroup disk online
を使用して、ディスク・グループを迅速にリカバリします。
8.6 システム・グローバル領域
SGAとは、共有メモリーに格納されているOracle構造体のことです。これには、静的データ構造体、ロックおよびデータ・バッファが含まれています。
単一の共有メモリー・セグメントの最大サイズはshmmax
カーネル・パラメータで指定されます。
次の表に、このパラメータの推奨値をプラットフォームごとに示します。
プラットフォーム | 推奨値 |
---|---|
Oracle Solaris |
4294967295または4GB - 16MB。 |
Linux |
次の値のうち小さいほう。
|
POWER Systems (64ビット)上のIBM AIX |
NA |
HP-UX |
システムに搭載された物理メモリーのサイズ。 |
SGAのサイズが共有メモリー・セグメントの最大サイズ(shm
max
またはshm
_max
)を超える場合、Oracle Databaseでは、要求されたSGAサイズになるように、連続したセグメントが連結されます。shm
seg
カーネル・パラメータには、任意のプロセスで連結できるセグメントの最大数を指定します。SGAのサイズを制御するには、次の初期化パラメータを設定します。
-
DB_CACHE_SIZE
-
DB_BLOCK_SIZE
-
JAVA_POOL_SIZE
-
LARGE_POOL_SIZE
-
LOG_BUFFERS
-
SHARED_POOL_SIZE
または、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全体をアドレス指定するためには、十分な共有メモリーが必要です。
8.6.1 SGAサイズの確認
次のいずれかの方法で、SGAサイズを確認できます。
-
次のSQL*Plusコマンドを実行して、実行中のデータベースのSGAサイズを表示します。
SQL> SHOW SGA
結果はバイト単位で表示されます。
-
データベース・インスタンスを起動して、システム・グローバル領域の合計ヘッダーの横にSGAのサイズを表示します。
-
oracle
ユーザーでipcs
コマンドを実行します。
8.6.2 システム・リソース検証ユーティリティ
システム・リソース検証ユーティリティ(sysresv
)は、Oracle8i
以上のリリースで使用できます。これを使用すると、指定したOracleシステム識別子(ORACLE_SID
)に対してOracleインスタンスおよびオペレーティング・システム・リソースの情報が提供されます。このユーティリティは$ORACLE_HOME/bin
にありますが、他の場所から使用できます。
8.6.2.1 sysresvユーティリティの目的
sysresv
ユーティリティを使用して、Oracleインスタンスのステータスを表示したり、そのインスタンスが使用するオペレーティング・システム・リソース(メモリーやセマフォ・パラメータなど)を特定します。このユーティリティは、複数のインスタンスが実行されている場合に特に役立ちます。たとえば、インスタンスが応答しない場合は、このユーティリティを使用してオペレーティング・システム・リソースを削除できます。
Oracleインスタンスがクラッシュしたか、強制終了された場合にこのインスタンスに関連するメモリーおよびセマフォが自動的にクリーンアップされなかったときに、このユーティリティを使用できます。このユーティリティは、実行されているOracleインスタンスを判断する際にも役立ちます。
8.6.2.2 sysresvを使用するための条件
sysresv
ユーティリティを使用するには、システム・グローバル領域(SGA)へのアクセス権が必要です。SGAにアクセスするには、Oracle所有者またはOracleバイナリを所有するグループのメンバーである必要があります。
8.6.2.3 sysresvの構文
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リソースがレポートされます。
8.6.3 セマフォ・パラメータの設定に関するガイドライン
デフォルトのセマフォ・パラメータ値が小さすぎてすべてのOracleプロセスに対応できない場合にのみ、次のガイドラインを使用してください。
注意:
セマフォ・パラメータの設定方法の詳細は、オペレーティング・システムのドキュメントを参照することをお薦めします。
8.6.4 IBM AIX on POWER Systems (64-Bit)での共有メモリー
注意:
この項の内容は、IBM AIX on POWER Systems (64-bit)にのみ適用されます。
共有メモリーでは、プロセス間で共通の仮想メモリー・リソースが使用されます。プロセスは、パフォーマンスを向上させるために、表やキャッシュ済エントリなどの仮想メモリー変換リソース・セットを介して仮想メモリー・セグメントを共有します。
共有メモリーを固定して、ページングを防ぎ、入出力のオーバーヘッドを減らすことができます。そのためには、LOCK_SGA
パラメータをtrue
に設定します。IBM AIX on POWER Systems (64-bit) 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の部分が、通常の共有メモリーに割り当てられます。
IBM AIX on POWER Systems (64-Bit) POWER4およびPOWER5ベース・システムでのラージ・ページ機能
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
IBM AIX on POWER Systems (64-bit)オペレーティング・システムで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
ユーザーにも設定する必要があります。
関連項目:
固定されたメモリーおよびラージ・ページの有効化とチューニングの詳細は、IBM AIX on POWER Systems (64-bit)のドキュメントを参照してください。
これらの機能は、次のコマンドを使用して設定および確認できます。
-
次のコマンドを実行して、現在の機能を確認します。
$ lsuser –a capabilities oracle
-
CAP_BYPASS_RAC_VMM
およびCAP_PROPAGATE
機能をこのユーザーIDに追加します。$ chuser capabilities=CAP_BYPASS_RAC_VMM,CAP_PROPAGATE oracle
注意:
機能の属性を表示および設定できるのは、root
ユーザーのみです。
8.7 オペレーティング・システムのバッファ・キャッシュのチューニング
Oracle Databaseバッファ・キャッシュのサイズを調整します。メモリーに制限がある場合は、オペレーティング・システムのバッファ・キャッシュも調整します。
オペレーティング・システムのバッファ・キャッシュには、メモリーからディスクまたはディスクからメモリーへの転送中に、メモリー内のデータ・ブロックが保持されます。
Oracle Databaseバッファ・キャッシュは、Oracle Databaseバッファを格納するためのメモリー内の領域です。
システムで使用できるメモリーに制限がある場合は、それに応じてオペレーティング・システムのバッファ・キャッシュのサイズを小さくします。
調整するバッファ・キャッシュを判断するには、sar
コマンドを使用します。