日本語PDF

B Oracle SolarisでのOracle Databaseの管理

この付録では、Oracle SolarisでOracle Databaseの管理について説明します。

次の項目が含まれます。

Oracle Solarisの共有メモリー環境

Oracle Solarisシステムでのリソース・プール作成について

マルチCPUバインディング機能について

B.1 Oracle Solarisの共有メモリー環境

この項では、最適化共有メモリー(OSM)、緊密共有メモリー(ISM)、動的緊密共有メモリー(DISM)などの共有メモリー・モデルをOracle Databaseで使用する方法について説明します。

次の項目が含まれます。

B.1.1 最適化共有メモリーについて

12c以降、Oracle Databaseは、Oracle Solaris 10 1/13およびOracle Solaris 11.1 SRU 7.5以上のシステムではOracle Solarisの最適化共有メモリー(OSM)モデルを使用して自動メモリー管理を実装します。

OSMを使用すると、インスタンスを再起動することなく、システム・グローバル領域(SGA)のサイズを動的に変更できます。oradismユーティリティを使用せず、ディスク領域をスワップします。OSMはNUMA用に最適化されています。

B.1.2 最適化共有メモリーのチェック

ノート:

最適化共有メモリーを使用するには、必ずMEMORY_MAX_TARGETMEMORY_TARGETより大きい値に設定します。

Oracle Solarisで最適化共有メモリー(OSM)が使用されているかどうかを確認するには、次のコマンドを入力します。

$ ipcs -dm

ALLOC列に整数が表示された場合、OSMが使用されていることを指します。ALLOC列にハイフンが表示された場合、OSMが使用されていないことを指します。

B.1.3 ISMおよびDISMについて

Oracle Solarisシステム上のOracle Databaseでは、Oracleプロセス間で仮想メモリー・リソースを共有するため、共有メモリー・セグメントとして緊密共有メモリー(ISM)が使用されます。ISMを使用すると、共有メモリー・セグメント全体の物理メモリーが自動的にロックされます。

Oracle Solaris 10 1/13およびOracle Solaris 11 SRU 7.5より前のOracle Solaris 10システムでは、動的緊密共有メモリー(DISM)を使用できます。動的緊密共有メモリーを使用すると、Oracle Databaseではセグメントを共有するプロセス間で仮想メモリー・リソースを共有でき、同時にメモリーのページングも可能になります。このため、オペレーティング・システムでは、共有メモリー・セグメント全体の物理メモリーをロックする必要がありません。

B.1.4 ISMまたはDISMのチェック

Oracle Solarisでは、共有メモリーが使用されているかどうかを確認するのにipcs -imコマンドを使用します。たとえば:

% ipcs -im
IPC status from <system> as of Thu Aug 19 01:09:30 PDT 2013
T  ID    KEY        MODE      OWNER   GROUP  ISMATTCH
Shared Memory:
m  11  0xacea4150 --rw-rw---- oracle   dba     160

ISMATTCHフィールドには、この共有メモリー・セグメントにアタッチされた160個のプロセスが表示されます。ただし、ISMATTCHでは、緊密共有メモリー(ISM)と動的緊密共有メモリー(DISM)が区別されません。

Oracle Solaris 10 1/13およびOracle Solaris 11 SRU 7.5より前のOracle Solaris 10システムでは、ISMまたはDISMが使用されているかどうかを確認したり、どのメモリーのロック・サービスがアクティブかを確認するのにpmap –xsコマンドを使用します。たとえば:

% ps -ef | grep ora | grep smon

oracle 12524 1 0 05:40:13 ? 0:25 ora_smon_prod

% pmap –xs 12524 | grep ism

0000000380000000 38010880 38010880 - 38010880 256M rwxsR [ ism shmid=0xb ]
0000000C90000000 131072 131072 - 131072 4M rwxsR [ ism shmid=0xb ]
0000000C98000000 16 16 - 16 8K rwxsR [ ism shmid=0xb ]

ノート:

ps —efコマンドでは、実行中のバックグラウンド・プロセスがリストされます。この情報は、Oracleデータベース・インスタンスが実行中かどうかを判断する場合に必要です。

pmap –xsコマンドの出力には、ISMが使用されていることを意味するismアドレス範囲が3つ表示されます。DISMによってメモリー範囲がロックされる場合、出力にはdismアドレス範囲が表示されます。

B.1.5 oradismユーティリティについて

Oracle Databaseは、oradismユーティリティを使用して共有メモリーのロックおよびロック解除を実行します。oradismユーティリティは、インストール時に自動的に設定されます。このため、動的SGAを使用するための構成作業は不要です。

oradismユーティリティのプロセス名は、ora_dism_sidです。sidはシステム識別子です。DISMを使用している場合、このプロセスはインスタンスの起動時に開始され、インスタンスの停止時に自動的に終了します。

oradismユーティリティが正しく設定されていないことを示すメッセージがアラート・ログに表示された場合は、oradismユーティリティが$ORACLE_HOME/binディレクトリにあり、スーパーユーザーの権限が付与されていることを確認してください。

ノート:

最適化共有メモリー(OSM)では、oradismユーティリティを使用しません。

B.1.6 Oracle DatabaseによるOSM, ISMおよびDISMの選択方法

最適化共有メモリー(OSM)が使用できるOracle Solarisシステムの場合、Oracle DatabaseではOSMが自動的に使用されます。OSMの詳細は、「最適化共有メモリーについて」を参照してください。

OSMが使用できないシステムの場合、Oracle Databaseでは、次の基準に基づいて緊密共有メモリー(ISM)または動的緊密共有メモリー(DISM)が自動的に選択されます。

  • システムでDISMを使用でき、SGA_MAX_SIZE初期化パラメータの値が、結合されたすべてのSGAコンポーネントに必要なサイズよりも大きい場合に、DISMが使用されます。これにより、Oracle Databaseでは、使用される物理メモリー量のみがロックされます。

  • 起動時に共有メモリー・セグメント全体が使用中の場合、またはSGA_MAX_SIZEパラメータの値が、結合されたすべてのSGAコンポーネントに必要なサイズ以下の場合に、ISMが使用されます。

Oracle Databaseでは、ISMまたはDISMのいずれを使用するかに関係なく、インスタンスの起動後は常に、動的にサイズ変更できるコンポーネント(バッファ・キャッシュなど)、共有プールおよびラージ・プール間でメモリーを交換できます。Oracle Databaseでは、動的SGAコンポーネントからメモリーを解放し、それを別のコンポーネントに割り当てることができます。

DISMの使用時は、共有メモリー・セグメントがメモリー内で暗黙的にロックされないため、Oracle Databaseは起動時に使用している共有メモリーを明示的にロックします。動的なSGA操作によって使用される共有メモリーが増えると、Oracle Databaseは使用中のメモリーを明示的にロックします。動的なSGA操作によって共有メモリーが解放されると、Oracle Databaseは解放されたメモリーを明示的にロック解除するので、解放されたメモリーは他のアプリケーションで使用できるようになります。

ノート:

サーバー・パラメータ・ファイルのLOCK_SGAパラメータは、TRUEに設定しないでください。設定した場合、Oracle Database 12cは起動できません。

B.2 Oracle Solarisのリソース・プールの作成について

Oracle Solarisのリソース・プールは、一連の専用CPUをデータベース・インスタンスに関連付けることによってデータベースのパフォーマンスを向上させます。各データベース・インスタンスはそのリソース・プールのリソースのみを使用します。

大規模サーバーで統合を行う場合、CPUとメモリーの特定のサブセットにデータベースを制限することをお薦めします。この機能により、Oracle DatabaseインスタンスのCPUとメモリーの制約を簡単に有効にすることができます。

setup_resource_pool.shスクリプトを使用して、Oracle Solarisのリソース・プールを作成します。このスクリプトは、My Oracle Support Webサイトのノート1928328.1からダウンロードします。

https://support.oracle.com/CSP/main/article?cmd=show&amp;type=NOT&amp;id=1928328.1

B.3 マルチCPUバインディング機能について

マルチCPUバインディング(MCB)機能は、パフォーマンス改善のためにリソース管理ポリシーの一部として使用できます。

マルチCPUバインディング(MCB)は1つのプロジェクトを特定のCPUセットにバインドするOracle Solarisプロジェクト・リソース管理の機能ですが、排他的にCPUをバインドすることはありません。MCBでは、他のプロセスでもこれらのCPUを使用でき、パーティションの重複が許可されています。MCBはOracle Solaris 11.3以降でサポートされています。

リソース・プール機能でも、CPUのバインドが可能です。ただし、このメソッドでは、システムのプロセッサをハード・パーティショニングする必要があります。リソース・プールではパーティションは重複できません。

MCBはOracle Solarisプロジェクトを介して割当て、変更、削除が可能です。標準のコマンドライン・ツールprojadd(1M)およびprojmod(1M)を使用して、プロジェクト・ファイルを作成または変更します。

データベース・ユーザーの場合、リソース・プールでMCBを使用する利点は次のとおりです。
  • 特定のI/Oまたはネットワーク・デバイスなどの近くの特定のNUMAの場所に、Oracleインスタンスをバインドできる機能。

  • システムをパーティショニングする権限を持つ管理者がいなくても、複数のOracleインスタンスをホスト上の様々なコアまたはソケットにバインドし、パフォーマンスの分離を促進できる機能。