D HP-UXでのOracle Databaseの管理
この付録では、HP-UXシステムでOracle Databaseを管理する方法について説明します。
次の項目が含まれます。
D.1 Oracleインスタンス用のHP-UX共有メモリー・セグメント
Oracle Databaseは、インスタンスの起動時に、Oracleシステム・グローバル領域(SGA)の作成用に割り当てられた共有メモリーをHP-UX shmmax
カーネル・パラメータの値で除算して、メモリー・セグメントを作成します。たとえば、1つのOracleインスタンスに割り当てられた共有メモリーが64GBで、shmmax
パラメータの値が1GBの場合、Oracle Databaseはそのインスタンスに対して64個の共有メモリー・セグメントを作成します。
1つのOracleインスタンスに対して複数の共有メモリー・セグメントが作成されると、パフォーマンスが低下する可能性があります。これは、Oracle Databaseでインスタンスが作成されるときに、各共有メモリー・セグメントが一意の保護キーを受け取るためです。HP-UX Itaniumのシステム・アーキテクチャで使用できる保護キーの数は14です。
Oracleインスタンスが作成する共有メモリー・セグメントが保護キーの数より多い場合、HP-UXオペレーティング・システムは、保護キー・フォルトを表示します。
shmmax
パラメータ値は、システムで使用できる物理メモリーの量に設定することをお薦めします。この設定により、1つのOracleインスタンスの共有メモリー全体が1つの共有メモリー・セグメントに割り当てられ、インスタンスに必要な保護キーが1つのみになります。
システムのアクティブな共有メモリー・セグメントのリストを表示するには、次のコマンドを実行します。
$ ipcs -m
Oracle Databaseがインスタンスに対して保護キーの数よりも多いセグメントを作成する場合は、shmmax
カーネル・パラメータの値を大きくします。
関連項目:
カーネル・パラメータの推奨最小値の詳細は、『Oracle Databaseインストレーション・ガイド』を参照してください。
D.2 HP-UX SCHED_NOAGEスケジュール・ポリシー
HP-UXでは、ほとんどのプロセスがタイムシェアリング・スケジュール・ポリシーを使用します。タイムシェアリングが適用されると、重要な操作(ラッチの保持など)が実行されるときにOracleプロセスがスケジュールから除外されるため、パフォーマンスが低下する場合があります。HP-UXには、特にこの問題に対処した修正済のスケジュール・ポリシーであるSCHED_NOAGE
が用意されています。通常のタイムシェアリング・ポリシーとは異なり、SCHED_NOAGE
を使用してスケジュールが設定されたプロセスは、優先順位が上下したり、優先使用されることがありません。
この機能は、オンライン・トランザクション処理環境に適しています。これは、オンライン・トランザクション処理環境では重要なリソースをめぐって競合が発生することがあるためです。Oracle DatabaseでSCHED_NOAGE
ポリシーを使用すると、オンライン・トランザクション処理環境では、パフォーマンスが10%以上も向上する可能性があります。
SCHED_NOAGE
ポリシーを意思決定支援環境で使用しても、同程度のパフォーマンス効果は得られません。これは、リソースの競合がほとんど発生しないためです。アプリケーションおよびサーバーの環境はそれぞれ異なるため、使用している環境に対してSCHED_NOAGE
ポリシーが有効であることをテストして検証する必要があります。SCHED_NOAGE
を使用する場合、Oracleプロセスに最も高い優先順位を割り当てる際には注意が必要です。SCHED_NOAGE
の最も高い優先順位をOracleプロセスに割り当てると、システムのCPUリソースを使い果し、他のユーザー・プロセスのレスポンスが停止する可能性があります。
D.2.1 Oracle Database用のSCHED_NOAGEの有効化
Oracle DatabaseでSCHED_NOAGE
スケジュール・ポリシーを使用できるようにするには、OSDBAグループ(通常はdba
グループ)に、スケジュール・ポリシーの変更およびOracleプロセスの優先順位レベルの設定を行うためのRTSCHED
およびRTPRIO
権限が必要です。dba
グループにこれらの権限を付与するには:
HPUX_SCHED_NOAGE
初期化パラメータを各インスタンスのパラメータ・ファイルに追加し、このパラメータにプロセスの優先順位レベルを整数値で設定します。サポートされる値の範囲は178から255です。値が小さくなるほど優先順位が高くなります。すべてのOracleプロセスについて、HPUX_SCHED_NOAGE
初期化パラメータのデフォルト値は178です。LMSプロセスでは、_os_sched_high_priority
初期化パラメータを設定すると、この値を変更できます。_os_sched_high_priority
パラメータが31から2の間の場合、LMSプロセスはSCHED_RR
で設定された優先順位で実行されます。パラメータの値が178から255の間の場合、プロセスはSCHED_NOAGE
で設定された値で実行されます。ただし、LMSは、HPUX_SCHED_NOAGE
の値より低い優先順位レベルでは実行されません。
HPUX_SCHED_NOAGE
パラメータの設定が範囲外である場合、Oracle Databaseは自動的にそのパラメータを許容値に設定し、新しい値が設定されたSCHED_NOAGE
ポリシーを使用して処理を続行します。また、新しい設定に関するメッセージをalert_
sid
.log
ファイルに生成します。ユーザーまたは自動再調整によってOracleプロセスに最も高い優先順位が割り当てられた場合は常に、Oracle Databaseは、システムのCPUリソースが使い果される可能性があることを警告するメッセージをalert_
sid
.log
ファイルに生成します。このパラメータには、Oracleプロセスに必要な優先順位レベルを割り当てておくことをお薦めします。
関連項目:
優先順位ポリシーと優先順位の範囲の詳細は、HP-UXのドキュメントと、rtsched
(1)およびrtsched
(2)のmanページを参照してください。
D.3 軽量タイマーの実装
Oracle Database 11gでは、動的初期化パラメータSTATISTICS_LEVEL
がTYPICAL
(デフォルト)またはALL
に設定されている場合、いつでもランタイム統計を収集できます。このパラメータの設定は、TIMED_STATISTICS
初期化パラメータを暗黙的にtrue
に設定します。HP-UXシステムのOracle Databaseでは、gethrtime()
システム・ライブラリ・コールを使用して、統計の収集中に経過時間を計算します。この軽量システム・ライブラリ・コールを使用すると、Oracleインスタンスを実行しながら、パフォーマンスに影響を与えることなく、いつでもランタイム統計を収集できます。
TIMED_STATISTICS
初期化パラメータが明示的にtrue
に設定されているときに、gethrtime()
システム・ライブラリ・コールを使用すると、使用していない場合に比べてOracleのパフォーマンスを最大10%向上させることができます。また、ランタイム統計の収集にgethrtime()
システム・ライブラリ・コールを使用しても、Oracle Databaseのオンライン・トランザクション処理のパフォーマンスが低下することはありません。
D.4 非同期入出力
非同期入出力擬似ドライバをHP-UX上で使用すると、Oracle DatabaseがRAWディスク・パーティションに対する入出力を非同期方式で実行できるようになり、入出力のオーバーヘッドが軽減してスループットが向上します。非同期入出力擬似ドライバは、HP-UXのサーバーとワークステーションの両方で使用できます。
この項では、次の項目について説明します。
D.4.1 MLOCK権限の付与
Oracle Databaseで非同期入出力操作を処理できるようにするには、OSDBAグループ(dba
)にMLOCK
権限が必要です。dba
グループにMLOCK
権限を付与するには:
D.4.2 非同期入出力の実装
HP-UXで非同期入出力を使用するには、データベース・ファイルの記憶域オプションとしてRAWパーティションを使用する自動ストレージ管理ディスク・グループを使用する必要があります。
関連項目:
HP-UXシステムでの自動ストレージ管理とRAW論理ボリュームの構成の詳細は、『Oracle Databaseインストレーション・ガイド』を参照してください
いずれかの記憶域オプションで非同期入出力を実装する前に、System Administrator Managementユーティリティを使用して、HP-UXカーネルに非同期ディスク・ドライバを構成する必要があります。
ノート:
Oracle Database 11gリリース1では、ファイル・システムに対してDISK_ASYNCH_IO
パラメータをFALSE
に設定する必要がありませんでした。しかし、Oracle Database 11gリリース2からは、データベース・ファイルの格納にファイル・システムを使用する場合、初期化パラメータDISK_ASYNCH_IO
をFALSE
に設定する必要があります。デフォルトでは、DISK_ASYNCH_IO
の値はTRUE
です。
DISK_ASYNCH_IO
パラメータをTRUE
に設定する必要があるのは、データベース・ファイルの格納にRAWパーティションを使用する場合のみです。
System Administrator Managementユーティリティを使用して非同期ディスク・ドライバを追加し、カーネルを構成するには:
-
root
ユーザーで次のコマンドを実行します。# sam
-
「Kernel Configuration」領域を選択します。
-
「Drivers」領域を選択します。
-
非同期ディスク・ドライバ(
asyncdsk
)を選択します。 -
「Actions」→「Add Driver to Kernel」の順に選択します。
-
「List」→「Configurable Parameters」の順に選択します。
-
MAX_ASYNC_PORTS
パラメータを選択します。 -
「Action」→「Modify Configurable Parameter」の順に選択します。
-
次のガイドラインに従ってパラメータに新しい値を指定し、「OK」をクリックします。
MAX_ASYNC_PORTS
パラメータは、構成可能なHP-UXカーネル・パラメータで、/dev/async
ファイルを同時に開くことができる最大プロセス数を制御します。最大数のプロセスが
/dev/async
ファイルを開いた後で別のプロセスがそのファイルを開こうとすると、エラー・メッセージが表示されます。多数のシャドウ・プロセスやパラレル問合せスレーブが非同期入出力を実行しているシステムでは、このエラーが発生するとパフォーマンスが低下することがあります。このエラーは記録されません。このエラーを回避するには、/dev/async
ファイルにアクセスする可能性がある最大プロセス数を予測し、MAX_ASYNC_PORTS
パラメータにその値を設定します。 -
「Actions」→「Process a New Kernel」の順に選択します。
-
次のいずれかのオプションを選択し、「OK」をクリックします。
-
Move Kernel Into Place and Shutdown System/Reboot Now
-
Do Not Move Kernel Into Place: Do Not Shutdown/Reboot Now
2番目のオプションを選択すると、新しいカーネル
vmunix_test
とその作成に使用されるsystem.SAM
構成ファイルの両方が、/stand/build
ディレクトリに作成されます。 -
HP-UX非同期デバイス・ドライバを使用して非同期入出力操作をできるようにするには:
D.4.3 非同期入出力の検証
非同期入出力を検証するには、最初に、HP-UX非同期ドライバがOracle Database用に構成されているかを検証します。次に、Oracle DatabaseがHP-UXデバイス・ドライバを介して非同期入出力を実行しているかを検証します。
D.4.4 SGAの非同期フラグ
HP-UX上のOracle Databaseでは、HP-UX非同期ドライバが提供する非ブロック・ポーリング機能を使用して、入出力操作のステータスがチェックされます。このポーリングは、送信された入出力操作のステータスに基づいて非同期ドライバが更新するフラグのチェックにより実行されます。HP-UXでは、このフラグが共有メモリーに読み込まれている必要があります。
Oracle Databaseでは、非同期フラグを各OracleプロセスのSGA内に構成します。HP-UX上のOracle Databaseは、真の非同期入出力メカニズムを備え、以前に発行された入出力操作の一部が完了していなくても、入出力リクエストを発行できます。これにより、パフォーマンスが向上し、パラレル入出力プロセスの優れたスケーラビリティが保証されます。
リリース8.1.7より前のOracle Databaseのリリースでは、入出力操作は、HP-UX非同期ドライバを使用して共有メモリーからのみ実行できました。Oracle Database 11gでは、新しいHP-UX非同期ドライバを使用して共有メモリーとプロセス専用領域の両方から入出力操作を実行できます。ただし、非同期ドライバを介した入出力操作は、実際は非同期ではありません。これは、Oracle Databaseでは、非同期ドライバに送信された入出力操作のステータスのチェックに、ブロック待機を実行する必要があるためです。その結果、データベース・ライター・プロセスなどの一部のOracleプロセスでは、実質的には同期入出力が処理されています。
D.5 大規模メモリーの割当てとOracle Databaseのチューニング
D.5.1 デフォルトの大規模仮想メモリー・ページ・サイズ
デフォルトでは、Oracle Databaseは、プロセス専用メモリーの割当てに、HP-UXで使用できる最大の仮想メモリー・ページ・サイズ設定を使用します。これは、値L
(最大)で定義されます。この値は、Oracle実行可能ファイルのリンク時に、LARGE_PAGE_FLAGS
オプションの1つとして設定されます。
仮想メモリー・ページ・サイズがLに設定されていると、HP-UXは、使用可能なプロセス専用メモリーを、1GB制限または割り当てられたメモリー量の合計に達するまで、1MB、4MB、16MBなどのサイズのページに割り当てます。Oracle PGAに十分なメモリーが割り当てられていて、大きなデータ・ページ・サイズ単位でのメモリー割当てが可能な場合、オペレーティング・システムは一度に最大ページ・サイズを割り当てます。たとえば、Oracle PGAに48MBを割り当てている場合、システムでは、16MBを3ページ設定するか、より小さい倍数の単位サイズのページを組み合せることができます。たとえば、1MBを4ページ、4MBを3ページ、16MBを2ページにするなどです。PGAに64MBを割り当てた場合、データ・ページ単位サイズと使用可能なメモリーが一致するため、1ページ(64MB)がオペレーティング・システムによって割り当てられます。
一般に、大規模メモリー・ページによってアプリケーションのパフォーマンスは向上します。これは、オペレーティング・システムが処理する必要のある仮想メモリー変換時のエラー数が減り、より多くのCPUリソースをアプリケーションに解放できるためです。また、プロセス専用メモリーの割当てに必要なデータ・ページ数の合計も減ります。これにより、プロセッサ・レベルでのTranslation Lookaside Bufferミスの可能性が減ります。
ただし、アプリケーションにメモリーの制約があり、非常に多くのプロセスを実行する傾向がある場合は、この大幅なページ・サイズの増加によってプロセスは大規模なメモリーの割当てを指示するため、メモリー不足
エラー・メッセージが発生する可能性があります。このエラーが発生する場合は、ページ・サイズの値を小さくして、D(デフォルト)サイズの4KBからL
(最大)サイズの4GBまでの間に設定する必要があります。
最小ページ・サイズ設定(4KB)を使用すると、最大ページ・サイズ設定を使用した場合よりもCPU使用率が20%以上高くなります。最大設定のL
を使用すると、4MBの設定を使用した場合よりもメモリー使用率が50%以上高くなります。システムにメモリー制約がある場合は、使用できるメモリー・リソースの制約内で、ページ・サイズを特定のアプリケーションの要件と一致するように設定することをお薦めします。
たとえば、設定値L
では問題が発生するアプリケーションで、4MBの仮想メモリー・ページ設定を使用すると、適切なパフォーマンスが得られる場合があります。
D.5.2 チューニングに関する推奨事項
永続的な専用SQL領域および大規模仮想メモリー・ページ・サイズへのメモリー割当ての増加に対応してチューニングを行うには、必要に応じて、Oracle Databaseの仮想メモリー・データ・ページ・サイズを減らすことをお薦めします。次のコマンドを使用して、ページ・サイズ設定を変更します。
# /usr/bin/chatr +pd newsize $ORACLE_HOME/bin/oracle
この例のnewsize
は、仮想メモリー・ページ・サイズの新しい値を表します。
chatr
コマンドを次のように使用して、新しい設定を表示します。
# /usr/bin/chatr $ORACLE_HOME/bin/oracle
D.6 CPU_COUNT初期化パラメータおよびHP-UX動的プロセッサ再構成
HP-UX 11iでは、プロセッサ・セットの動的ランタイム再構成と、有効なユーザーによるプロセッサ・セット間のワークロードの動的再割当てをサポートしています。
HP-UX Virtual Partitionsを使用すると、ユーザーは、各自のシステムを複数の論理パーティションで構成し、各パーティションに独自のプロセッサ、メモリーおよび入出力リソースのセットを割り当てて、HP-UXオペレーティング・システムの個別のインスタンスを実行できます。vParsに組み込まれているHP-UXプロセッサ・セットを使用すると、仮想パーティションを再起動せずに、仮想パーティション間でプロセッサを動的に移行できます。これにより、アプリケーション間でリソースのパーティション化を効率的に行うことができるため、HP-UXサーバー上で稼働する各アプリケーションに必要なリソース割当てに対する干渉および保証を最小限に抑えることができます。
関連項目:
動的リソース・プロビジョニングの詳細は、『Oracle Database概要』を参照してください。
D.7 ネットワーク情報サービスの外部ネーミングのサポート
HP-UXでは、ネットワーク情報サービスの外部ネーミング・アダプタがサポートされています。
関連項目:
ネットワーク情報サービスの外部ネーミングの詳細は、『Oracle Database Net Services管理者ガイド』を参照してくださいD.8 拡張ホスト名および拡張ノード名のアクティブ化と設定
デフォルトでは、システムのノード名とホスト名の長さの制限は8バイトと64バイトです。システム管理者は、システムを構成してどちらの制限も255バイトに拡張できます。
長い名前を設定できるようにするには、動的カーネル調整可能パラメータexpanded_node_host_names
を有効にする必要があります。
カーネル・パラメータを有効にするには、次のコマンドを実行します。
kctune expanded_node_host_names=1
カーネル・パラメータを無効にするには、次のコマンドを実行します。
kctune expanded_node_host_names=0