A Oracle SolarisでのOracle Databaseの管理
A.1 Oracle Solarisの共有メモリー環境
この項では、最適化共有メモリー(OSM)、緊密共有メモリー(ISM)、動的緊密共有メモリー(DISM)などの共有メモリー・モデルをOracle Databaseで使用する方法について説明します。
次の項目が含まれます。
A.1.1 最適化共有メモリーの概要
12c以降、Oracle Databaseは、Oracle Solaris 10 1/13以上およびOracle Solaris 11 SRU 7.5以上のシステムではOracle Solarisの最適化共有メモリー(OSM)モデルを使用して自動メモリー管理を実装します。
OSMを使用すると、インスタンスを再起動することなく、システム・グローバル領域(SGA)のサイズを動的に変更できます。oradism
ユーティリティを使用せず、ディスク領域をスワップします。OSMはNUMA用に最適化されています。
A.1.2 最適化共有メモリーのチェック
注意:
最適化共有メモリーを使用するには、必ずMEMORY_MAX_TARGET
をMEMORY_TARGET
より大きい値に設定します。
Oracle Solarisで最適化共有メモリー(OSM)が使用されているかどうかを確認するには、次のコマンドを入力します。
$ ipcs -dm
ALLOC
列に整数が表示された場合、OSMが使用されていることを指します。ALLOC
列にハイフンが表示された場合、OSMが使用されていないことを指します。
A.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ではセグメントを共有するプロセス間で仮想メモリー・リソースを共有でき、同時にメモリーのページングも可能になります。このため、オペレーティング・システムでは、共有メモリー・セグメント全体の物理メモリーをロックする必要がありません。
A.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
アドレス範囲が表示されます。
A.1.5 oradismユーティリティの概要
Oracle Databaseは、oradism
ユーティリティを使用して共有メモリーのロックおよびロック解除を実行します。oradism
ユーティリティは、インストール時に自動的に設定されます。このため、動的SGAを使用するための構成作業は不要です。
oradism
ユーティリティのプロセス名は、ora_dism_sid
です。sid
はシステム識別子です。DISMを使用している場合、このプロセスはインスタンスの起動時に開始され、インスタンスの停止時に自動的に終了します。
oradism
ユーティリティが正しく設定されていないことを示すメッセージがアラート・ログに表示された場合は、oradism
ユーティリティが$ORACLE_HOME/bin
ディレクトリにあり、スーパーユーザーの権限が付与されていることを確認してください。
注意:
最適化共有メモリー(OSM)では、oradism
ユーティリティを使用しません。
A.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は起動できません。
A.2 Solarisのリソース・プールの作成について
Solarisのリソース・プールは、一連の専用CPUをデータベース・インスタンスに関連付けることによってデータベースのパフォーマンスを向上させます。各データベース・インスタンスはそのリソース・プールのリソースのみを使用します。
大規模サーバーで統合を行う場合、CPUとメモリーの特定のサブセットにデータベースを制限することをお薦めします。この機能により、Oracle DatabaseインスタンスのCPUとメモリーの制約を簡単に有効にすることができます。
setup_resource_pool.sh
スクリプトを使用して、Solarisのリソース・プールを作成します。このスクリプトは、My Oracle Support WebサイトのNote 1928328.1からダウンロードします。
https://support.oracle.com/CSP/main/article?cmd=show&type=NOT&id=1928328.1
A.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)
を使用して、プロジェクト・ファイルを作成または変更します。
-
特定のI/Oまたはネットワーク・デバイスなどの近くの特定のNUMAの場所に、Oracleインスタンスをバインドできる機能。
-
システムをパーティショニングする権限を持つ管理者がいなくても、複数のOracleインスタンスをホスト上の様々なコアまたはソケットにバインドし、パフォーマンスの分離を促進できる機能。
関連項目:
「Oracle Solaris 11.3でのリソース管理」のプロジェクトを使用したマルチCPUバインディングの割当て、変更、および削除に関する項およびマルチCPUバインディングの割当て、変更、および削除のためのプロジェクトの使用方法に関する項。