自動systemd管理を使用するTimesTenインスタンスの作成
systemdのTimesTenインスタンスの構成
systemdを使用してTimesTenインスタンスを作成するには、次のステップを実行します。
systemdのLinuxカーネル・パラメータの構成
systemdでのshmmaxおよびshmallの構成
共有メモリー・セグメントの最大サイズ(shmmax
メモリー・カーネル・パラメータ)が、データベースの共有メモリー・セグメントの合計サイズを格納するのに十分な大きさになるように、Linux共有メモリーを構成する必要があります。TimesTen Classicでは、データベース全体が単一の共有メモリー・セグメントに保持されます。PL/SQLで使用される2番目のメモリー・セグメントもあります。
Linuxでは、共有メモリー・セグメントは複数のページで構成されており、デフォルトのページ・サイズは通常4KB (4096バイト)です。デフォルトのページ・サイズを確認するには、getconf
PAGESIZE
コマンドを実行します。
% getconf PAGESIZE 4096
次の共有メモリーのカーネル・パラメータを構成して、共有メモリー・セグメントのサイズを制御します。
-
shmmax
: 1つの共有メモリー・セグメントの最大サイズ(バイト単位)。この値は、データベースの共有メモリー・セグメントの合計サイズに対応できる十分な大きさである必要があります。 -
shmall
: ページで表された共有メモリー・セグメントの合計サイズ。この値は、ページ・サイズ(4kB)の倍数で表され、shmall * pagesize
はshmmax
の値以上にする必要があります。shmall
の値は、物理RAMの合計量以下に設定することをお薦めします。物理メモリーの合計量を表示するには、Linuxcat /proc/meminfo
コマンドを実行します。
ttShmSize
ユーティリティを使用して、共有メモリー・セグメントのサイズを決定します。ttShmSize
ユーティリティは、PermSize
、TempSize
、LogBufMB
およびConnections
接続属性(指定されたデータベース用)の値を使用してこのサイズを決定します。ttShmSize
ユーティリティの詳細はOracle TimesTen In-Memory DatabaseリファレンスのttShmSizeを参照し、各接続属性の詳細はOracle TimesTen In-Memory DatabaseリファレンスのPermSize、TempSize、LogBufMBおよびConnectionsを参照してください。
ttShmSize
ユーティリティを-connStr
オプションを指定して使用して、database1
DSNを使用して共有メモリー・セグメントのサイズを確認します。PermSize
値は32GB (32768MB)、TempSize
値は4GB (4096MB)、LogBufMB
値は1GB (1024MB)およびConnections
値は2048を指定します。 % ttShmSize -connstr "DSN=database1;PermSize=32768;TempSize=4096;LogBufMB=1024;Connections=2048"
The required shared memory size is 39991547720 bytes.
ノート:
-
ttShmSize
ユーティリティの-connStr
オプションでは、ユーザー.odbc.ini
またはシステムsys.odbc.ini
ファイルのいずれかにDSNが定義されている必要があります。任意のDSNを使用できます。-connStr
オプションで指定されていない接続属性の場合、ttShmSize
は、指定されたDSNに対してユーザー.odbc.ini
ファイルまたはシステムsys.odbc.ini
ファイルのいずれかに定義された設定を使用することに注意してください。接続属性が-connStr
オプションとユーザー.odbc.ini
ファイルまたはsys.odbc.ini
ファイルのいずれかのどちらにもない場合、ttShmSize
は接続属性のデフォルト値を使用します。 -
DSNは、ユーザー
.odbc.ini
ファイルまたはシステムsys.odbc.ini
ファイルのいずれかに追加できます。たとえば、database1
DSNを現在のオペレーティング・システム・ユーザーのユーザー.odbc.ini
ファイルに追加するには:% vi ~/.odbc.ini ... [database1]
shmmax
およびshmall
のサイズを設定するには:
ノート:
-
より大きい
shmmax
およびshmall
が他のアプリケーションで必要となる場合は、これらの例のこれらの設定を増やすことができます。 -
データベースのサイズが不明な場合は、物理メモリーのサイズの割合(80%など)に対応するように
shmmax
およびshmall
を設定できます。
HugePagesの構成
メモリー管理を効率化するためにHugePages
を構成できます。
構成後は、HugePages
に割り当てられたメモリーは、Linuxホスト上のRAM合計から取得され、他の用途には使用できません。また、HugePages
メモリー・セグメントは自動的にロックされ、ディスクにスワップできません。
HugePages
を構成するには、次のことを把握する必要があります。
-
データベースの共有メモリー・セグメントの最大サイズ
-
Linuxホストの
HugePages
ページ・サイズ -
インスタンス管理者のグループID
shmmaxおよびshmallの構成の項の例(shmmax
値は39,054,246kB)およびTimesTenユーザー・グループの作成の項の例(instanceadmin
ユーザーのグループIDは10000)を使用します:
-
合計共有メモリー・セグメントのサイズは39,054,246kBです。
-
HugePages
ページ・サイズは2048 KBです。(この値はプラットフォームごとに固定され、構成できません。)HugePagesページ・サイズを決定するには、Linux
cat /proc/meminfo|grep
Hugepagesize
コマンドを実行します。% cat /proc/meminfo | grep Hugepagesize Hugepagesize: 2048 kB
-
グループIDは10000です。
インスタンス管理者のグループIDを決定するには、
instanceadmin
ユーザーとしてログインし、Linuxid
コマンドを実行します。% id uid=55000(instanceadmin) gid=10000(g10000)groups=10000(g10000)
HugePages
を構成するには、次の手順を実行します:
ノート:
-
HugePages
は連続した使用可能メモリー領域への割当てが必要なため、ホストを再起動するまでは、要求された割当てが設定されないか、部分的にのみ設定される場合があります。/proc/meminfo
からHugePages_Total
およびHugePages_Free
の値を確認します。再起動するときには、ホストで十分なメモリーを使用できると想定し、すべて割り当てられます。 -
TimesTen PL/SQL共有メモリー・セグメントは、構成されているHugePagesの割当ての一部を使用します(
PLSQL_MEMORY_SIZE
接続属性の値によって決定されます)。詳細は、Oracle TimesTen In-Memory DatabaseリファレンスのPLSQL_MEMORY_SIZEを参照してください。 -
Linuxでは、
HugePages
セグメントは自動的にロックされ、メモリー・セグメントはディスク・スワップの対象になりません。したがって、HugePages
を構成する場合は、MemoryLock
接続属性を設定する必要はありません。
セマフォ値の設定
TimesTenでは、データベースへの最大接続数に上限があります。データベース接続は次のもので構成されます。
-
ユーザー接続: ユーザー・アプリケーションによって確立されます
-
システム接続: TimesTenによって内部的に確立されます(接続数を48に設定)
-
その他の必要な接続(接続数を107に設定)
これらの各接続には1つのセマフォが割り当てられ、データベースの合計セマフォは次のようになります。
Total semaphores = user connections (N) + system connections (48) + other required connections (107) Total semaphores = N + 155
セマフォ設定は、/etc/sysctl.conf
のkernel.sem
構成ディレクティブにあります。
kernel.sem = SEMMSL SEMMNS SEMOPM SEMMNI
ここで:
-
SEMMSL
は、配列ごとのセマフォの最大数です。この値は、最大接続数に関連します。この値は、155
と同時ユーザー接続数の合計に構成します。 -
SEMMNS
は、システム全体のセマフォの最大数です。ガイドラインとして、式SEMMNS
= (SEMMNI
* SEMMSL
)を使用します。ただし、実際にはSEMMNS
はSEMMNI
* SEMMSL
より大幅に小さい場合があります。 -
SEMOPM
は、semop
コールごとの最大処理数です。 -
SEMMNI
は、配列の最大数です。
次のステップに従って、SEMMSL
およびSEMMNI
設定を構成します。ユーザーがroot
であることを確認します。
ノート:
レプリケーションを使用している場合、マスター・データベースが存在する各ホストのLinuxプラットフォームでは、共有メモリーとセマフォに対して同様のカーネル設定が必要です。特に、SEMMSL
およびSEMMNI
の設定は、複製が実行される前に、アクティブ・スタンバイ・レプリケーション・スキームに参加するすべてのホストで十分な大きさである必要があります。フェイルオーバーの場合、スタンバイはアクティブに対応できる必要があります。
SHMMNIパラメータの設定
SHMMNI
値は、ホストが同時に作成できる共有メモリー・セグメントの数を制御します。TimesTenは、TimesTenデータベースの共有メモリー・セグメントと、PL/SQLの共有メモリー・セグメントを作成します。さらに、各クライアント/サーバー接続の間に割り当てられる小さな共有メモリー・セグメントがあります。この共有メモリー・セグメントは接続時に作成され、クライアント/サーバー接続がTimesTenデータベースから切断されるときに破棄されます。クライアント/サーバー接続ごとに1つの共有メモリー・セグメントがあります。
クライアント/サーバー接続の数を考慮するようにSHMMNI
パラメータ設定を構成する必要があります。SHMMNI
を、予想されるクライアント/サーバー接続の数より大きい値に設定します。(TimesTen共有メモリー・セグメント、PL/SQL共有メモリー・セグメント、および共有メモリーを使用するその他のプログラムも考慮してください。)たとえば、8000
のクライアント/サーバー接続があると予想される場合、適切な値は9000
以上です。TimesTenにはクライアント/サーバー接続数に含まれていないシステム接続があるため、9000
以上の値が適切です。
次のステップに従って、SHMMNI
設定を構成します。ユーザーがroot
であることを確認します。
ノート:
レプリケーションを使用している場合、マスター・データベースが存在する各ホストのLinuxプラットフォームには、同様のSHMMNI
カーネル設定が必要です。特に、複製が実行される前に、アクティブ・スタンバイ・レプリケーション・スキームに参加するすべてのホストでSHMMNI
設定が十分に大きい必要があります。フェイルオーバーの場合、スタンバイはアクティブに対応できる必要があります。