Linux/UNIXでのインスタンスの作成: 基本

次の項の情報は、TimesTen完全インスタンスに関連しています。TimesTenクライアント・インスタンスの作成の詳細は、TimesTenクライアント・インスタンスの作成およびクライアントのみのインストール環境およびインスタンスを参照してください。

この項では、次の環境での完全インスタンスの作成について説明します。
  • systemdをサポートしていないLinux/UNIXシステム

  • System V initメカニズムとsystemdの両方をサポートするLinuxシステムであるが、SystemV initメカニズムを選択したか、インスタンス管理者が常にTimesTenデーモンを制御するように選択しました。

選択がsystemdの場合に完全インスタンスを作成する方法の詳細は、systemdを使用したTimesTenサービスの管理を参照してください。

完全インスタンスを作成するには:
  • installation_dir/tt22.1.1.29.0/binディレクトリにあるttInstanceCreateユーティリティを使用して、インスタンスを作成します。ttInstanceCreateユーティリティは、コマンドライン、ファイル、対話形式で実行できます。

  • Linuxカーネル・パラメータを構成します。

  • 必要に応じて、-installオプションを指定してtimesten_home/bin/setuprootスクリプトを実行して、システムの起動時にTimeTenデーモンが自動的に起動され、システムの停止時に自動的に停止されるようにします。このスクリプトは、System V initスクリプトを適切な場所(/etc/init.d)にコピーします。システムの起動時およびシステムの停止時にインスタンス管理者がTimesTenデーモンを制御する場合は、このスクリプトを実行しないでください。

ノート:

  • ディストリビューションを解凍したユーザー(インストール環境の作成者)のみが、インストール環境からインスタンスを作成できます。

  • このユーザーは、TimesTenユーザー・グループのメンバーである必要があります。

  • このユーザーは、ttInstanceCreateユーティリティを実行してインスタンスを作成します。

  • インスタンスの作成後、このユーザーはインスタンスのインスタンス管理者になります。

  • このユーザーは、このインスタンス、およびインストール環境に関連付けられている他のすべてのインスタンスのインスタンス管理者になることができる唯一のユーザーです。

次の各項の手順を実行します。

Linux/UNIXでのTimesTen完全インスタンスの作成

この項では、TimesTen完全インスタンスを作成する必要があるオプションについて説明します。

対話形式での完全インスタンスの作成

systemdをサービスとして使用している場合は、systemdを使用したTimesTenサービスの管理を参照してください。

この例では、ttInstanceCreateユーティリティを使用して完全インスタンスを作成します。コマンドラインにはオプションが指定されていません。

インストール・ディレクトリのinstallation_dir/tt22.1.1.29.0/bin領域に移動し、そのディレクトリにあるttInstanceCreateユーティリティを実行します。ttInstanceCreateユーティリティは、インストール・ディレクトリから実行する必要があります。ユーザーの入力は太字で示されています。

ノート:

Oracle Clusterwareを使用したTimesTenのレプリケーションは、Oracle Linux for Armシステムではサポートされていません。Oracle Linux for Armを使用している場合、Oracle ClusterwareのメッセージがttInstanceCreate出力に表示されません。
% installation_dir/tt22.1.1.29.0/bin/ttInstanceCreate

NOTE: Each TimesTen instance is identified by a unique name.
      The instance name must be a non-null alphanumeric string, not longer
      than 255 characters.

Please choose an instance name for this installation? [ tt221 ] myinstance
Instance name will be 'myinstance'.
Is this correct? [ yes ]
Where would you like to install the myinstance instance of TimesTen? [ /home/ttuser ] /scratch/ttuser
Creating instance in /scratch/ttuser/myinstance ...

NOTE: If you are configuring TimesTen for use with Oracle Clusterware, the
      daemon port number must be the same across all TimesTen installations
      managed within the same Oracle Clusterware cluster.

NOTE: All installations that replicate to each other must use the same daemon
      port number that is set at installation time. The daemon port number can
      be verified by running 'ttVersion'.

The default port number is 6624.

Do you want to use the default port number for the TimesTen daemon? [ yes ]
The daemon will run on the default port number (6624).

In order to use the cache features in any TimesTen databases
created within this instance, you must set a value for the TNS_ADMIN
environment variable. It can be left blank, and a value can be supplied later
using <install_dir>/bin/ttInstanceModify.

Please enter a value for TNS_ADMIN (s=skip)? [  ] s
What is the TCP/IP port number that you want the TimesTen Server to listen on? [ 6625 ]

Would you like to use TimesTen Replication with Oracle Clusterware? [ no ]

Would you like to use systemd to manage TimesTen? [ no ]

NOTE: The TimesTen daemon startup/shutdown scripts have not been installed.

The startup script is located here :
        '/scratch/ttuser/myinstance/startup/tt_myinstance'

Run the 'setuproot' script :
        /scratch/ttuser/myinstance/bin/setuproot -install
This will move the TimesTen startup script into its appropriate location.

The 22.1 Release Notes are located here :
  'installation_dir/tt22.1.1.1.0/README.html'

Starting the daemon ...
TimesTen Daemon (PID: 9020, port: 6624) startup OK.
Instance created successfully.

TimesTen完全インスタンスが正常に作成されました。次のステップについては、インスタンス・ホーム・ディレクトリおよびサブディレクトリの確認に進んでください。

コマンドラインにオプションを指定することによるインスタンスの作成

この例では、ttInstanceCreateユーティリティを実行し、コマンドラインで名前、場所およびデーモンのポート番号を指定します。(-locationオプションで指定したディレクトリの名前は、ttInstanceCreateユーティリティを実行する前に存在している必要があります。)サポートされているオプションについては、Oracle TimesTen In-Memory DatabaseリファレンスttInstanceCreateを参照してください。

% installation_dir/tt22.1.1.29.0/bin/ttInstanceCreate -name fullinstance1 
-location /scratch/ttuser/fullinstance1 -daemonport 6824
Creating instance in /scratch/ttuser/fullinstance1 ...
INFO: Mapping files from the installation to 
/scratch/ttuser/fullinstance1/install
 
NOTE: The TimesTen daemon startup/shutdown scripts have not been installed.
 
The startup script is located here :
        '/scratch/ttuser/fullinstance1/startup/tt_fullinstance1
 
Run the 'setuproot' script :
        /scratch/ttuser/fullinstance1/bin/setuproot -install
This will move the TimesTen startup script into its appropriate location.
 
The 22.1 Release Notes are located here :
  '/installation_dir/tt22.1.1.29.0/README.html'

TimesTen完全インスタンスが正常に作成されました。次のステップについては、インスタンス・ホーム・ディレクトリおよびサブディレクトリの確認に進んでください。

-recordオプションを使用した対話形式でのインスタンスの作成

対話形式でインスタンスを作成する場合は、-recordオプションを使用して、バッチ・ファイルに対話形式のプロンプトと応答を記録できます。これは、バッチ・モードで追加のインスタンスを作成するためのテンプレートとして使用できます。詳細は、バッチ・ファイルで提供される情報からのインスタンスの作成を参照してください。

次の例では、-recordオプションを指定してttInstanceCreateユーティリティを使用する方法を示します。

% installation_dir/tt22.1.1.29.0/bin/ttInstanceCreate -record 
/swdir/TimesTen/ttinstances/instancecreatebatch

作成されたinstancecreatebatchバッチ・ファイルには、ttInstanceCreateに対する次のような入力が含まれています。

ノート:

Oracle Clusterwareを使用したTimesTenのレプリケーションは、Oracle Linux for Armシステムではサポートされていません。Oracle Linux for Armを使用している場合、Oracle Clusterwareのメッセージは表示されません。
Please choose an instance name for this installation:ttuser1instanceint
Is this correct:y
Where would you like to install the ttuser1instanceint instance of 
TimesTen:/swdir/TimesTen/ttinstances
Please enter a unique port number for the TimesTen daemon (<CR>=list):27100
Please enter a value for TNS_ADMIN (s=skip):s
What is the TCP/IP port number that you want the TimesTen Server to listen 
on:27101
Would you like to use TimesTen Replication with Oracle Clusterware:n

バッチ・ファイルで提供される情報からのインスタンスの作成

ttInstanceCreate-batchオプションを使用すると、指示を含むバッチ・ファイルを使用してインスタンスを作成できます。-recordオプションを指定してttInstanceCreateを実行することで、このようなファイルを作成しました。詳細は、-recordオプションを使用した対話形式でのインスタンスの作成を参照してください。

この例では、最初に-recordオプションを使用して作成されたサンプル・バッチ・ファイルを使用します。次に、このサンプル・バッチ・ファイル(instancecreatebatch)を使用してインスタンスを作成します。

ノート:

Oracle Clusterwareを使用したTimesTenのレプリケーションは、Oracle Linux for Armシステムではサポートされていません。Oracle Linux for Armを使用している場合、Oracle Clusterwareのメッセージは表示されません。
Please choose an instance name for this installation:ttuser1instancebat
Is this correct:y
Where would you like to install the ttuser1instancebat instance of 
TimesTen:/swdir/TimesTen/ttinstances
Please enter a unique port number for the TimesTen daemon (<CR>=list):29100
Please enter a value for TNS_ADMIN (s=skip):s
What is the TCP/IP port number that you want the TimesTen Server to listen 
on:29101
Would you like to use TimesTen Replication with Oracle Clusterware:n

次に、インスタンスを作成します。

% installation_dir/tt22.1.1.29.0/bin/ttInstanceCreate -batch /swdir/TimesTen/ttinstances/instancecreatebatch

ttInstanceCreateから次のような出力が表示されます。

NOTE: Each TimesTen instance is identified by a unique name.
      The instance name must be a non-null alphanumeric string, not longer
      than 255 characters.
 
Instance name will be 'ttuser1instancebat'.
Creating instance in /swdir/TimesTen/ttinstances/ttuser1instancebat ...
TCP port 6624 is in use!
 
NOTE: If you are configuring TimesTen for use with Oracle Clusterware, the
      daemon port number must be the same across all TimesTen installations
      managed within the same Oracle Clusterware cluster.
 
** The default daemon port (6624) is already in use or within a range of 8
ports of an existing TimesTen instance. You must assign a unique daemon port
number for this instance. This installer will not allow you to assign another
instance a port number within a range of 8 ports of the port you assign below.
 
NOTE: All installations that replicate to each other must use the same daemon
      port number that is set at installation time. The daemon port number can
      be verified by running 'ttVersion'.
 
INFO: installation group ownership (ttVersion) is 'timesten'
 
In order to use the cache features in any TimesTen databases 
created within this instance, you must set a value for the TNS_ADMIN 
environment variable. It can be left blank, and a value can be supplied later
using <install_dir>/bin/ttInstanceModify.
 
NOTE: The TimesTen daemon startup/shutdown scripts have not been installed.
 
The startup script is located here :
    '/swdir/TimesTen/ttinstances/ttuser1instancebat/startup/tt_ttuser1instancebat'
 
Run the 'setuproot' script :
        /swdir/TimesTen/ttinstances/ttuser1instancebat/bin/setuproot -install
This will move the TimesTen startup script into its appropriate location.
 
The 22.1 Release Notes are located here :
  '/swdir/TimesTen/ttinstallations/fullinstall/tt22.1.1.29.0/README.html'
 
Starting the daemon ...
TimesTen Daemon (PID: 7725, port: 29100) startup OK.

TimesTen完全インスタンスが正常に作成されました。次のステップについては、インスタンス・ホーム・ディレクトリおよびサブディレクトリの確認に進んでください。

Oracle Clusterwareのための対話形式でのインスタンスの作成

この例では、インスタンスを対話形式で作成して、Oracle ClusterwareでTimesTenレプリケーションを有効にする方法を示します。Oracle Clusterwareを使用したTimesTenレプリケーションは、Oracle Linux for Armシステムではサポートされないため、Oracle Linux for Armを使用している場合はこの例を実行しないでください。

Oracle Clusterwareインストール環境へのパスの入力を求められたら、そのパスを指定するか、スキップできます。スキップする場合は、後でttInstanceModify -crsオプションを使用してパスを指定できます。詳細は、インスタンスのOracle Clusterware構成の変更を参照してください。

この例では、Oracle Clusterインストール環境へのパスを/u01/app/crs_releasedir/gridとして示しています。ここで、crs_releasedirはCRSリリースの変数です(たとえば、CRSリリースが19.1.0の場合、19.1.0に置き換えて、パスを/u01/app/19.1.0/gridのようにできます)。

指定したディレクトリに有効なOracle Clusterwareインストール環境が存在する必要があります。

この例では、入力された値または選択されたデフォルトが太字で表示されています。

% installation_dir/tt22.1.1.29.0/bin/ttInstanceCreate
 
NOTE: Each TimesTen instance is identified by a unique name.
      The instance name must be a non-null alphanumeric string, not longer
      than 255 characters.
 
Please choose an instance name for this installation? [ tt221 ] crsinstance
Instance name will be 'crsinstance'.
Is this correct? [ yes ] yes
Where would you like to install the crsinstance instance of TimesTen? 
[ /home/oracle ] /u02/ttinstances
Creating instance in /u02/ttinstances/crsinstance ...
 
NOTE: If you are configuring TimesTen for use with Oracle Clusterware, the
      daemon port number must be the same across all TimesTen installations
      managed within the same Oracle Clusterware cluster.
 
NOTE: All installations that replicate to each other must use the same daemon
      port number that is set at installation time. The daemon port number can
      be verified by running 'ttVersion'.
 
The default port number is 6624.
 
Do you want to use the default port number for the TimesTen daemon? [ yes ]
The daemon will run on the default port number (6624).
INFO: installation group ownership (ttVersion) is 'oinstall'
 
In order to use the cache features in any TimesTen databases 
created within this instance, you must set a value for the TNS_ADMIN 
environment variable. It can be left blank, and a value can be supplied later
using <install_dir>/bin/ttInstanceModify.
 
Please enter a value for TNS_ADMIN (s=skip)? [  ] s
What is the TCP/IP port number that you want the TimesTen Server to listen on? 
[ 6625 ]
 
Would you like to use TimesTen Replication with Oracle Clusterware? [ no ] yes
 
A Clusterware installation was detected in /u01/app/crs_releasedir/grid
 
Please provide the path to the Oracle Clusterware installation on this machine 
(s=skip)? [ /u01/app/crs_releasedir/grid ]
 
NOTE: The TimesTen Clusterware agent port must be the same on all nodes
      of the cluster. Please refer to the TimesTen documentation for
      additional information.
 
Please enter a port number for the TimesTen Clusterware agent? [ 3574 ]
 
Executing '/u01/app/crs_releasedir/grid/bin/olsnodes' ...
Oracle Clusterware is currently configured on the following nodes :
 
1. tthost1
2. tthost2
 
NOTE: By default, all of the nodes listed above will be added to the TimesTen
      Replication with Oracle Clusterware configuration. You can also
      specify your own list of nodes based on the list above.
 
Would you like to specify a node list for TimesTen Replication with Oracle 
Clusterware? [ no ]
 
NOTE: The TimesTen daemon startup/shutdown scripts have not been installed.
 
The startup script is located here :
        '/u02/ttinstances/crsinstance/startup/tt_crsinstance'
 
Run the 'setuproot' script :
        /u02/ttinstances/crsinstance/bin/setuproot -install
This will move the TimesTen startup script into its appropriate location.
 
The 22.1 Release Notes are located here :
  '/u02/tt22.1.1.29.0/README.html'
 
Starting the daemon ...
TimesTen Daemon (PID: 11839, port: 6624) startup OK.

ノート:

Oracle Clusterwareのインストール環境がTimesTenによって検出されました。場所が確認されました。

インスタンス・ホーム・ディレクトリおよびサブディレクトリの確認

インスタンス・ホーム・ディレクトリおよびサブディレクトリは、情報を得るために確認できます。インスタンスを作成すると、各インスタンスの$TIMESTEN_HOMEの下に次のサブディレクトリが含まれています(このリストには含まれていないサブディレクトリもあります)。

  • bin: そのインスタンスに適応するように調整された、インスタンス固有のTimesTenユーティリティおよび実行可能ファイル

    これに含まれるttenv.sh (またはttenv.csh)によって、TimesTen環境の環境変数がセッションに適するように設定され、setuproot.shをrootとして実行することで、オペレーティング・システムが再起動されるたびにデータ・インスタンスを自動的に起動させることができます。

    ttenvを実行すると、binディレクトリもパスに追加されます。

  • conf: TimesTenインスタンスの構成ファイルであるtimesten.confファイルが含まれます

  • diag: デーモン・ログとエラー・ログを含む診断出力

  • info: TimesTenインスタンスの永続状態が格納されているTimesTenデーモンの作業ディレクトリ

  • install: このインスタンスに関連付けられているインストール内容を参照するシンボリック・リンク。

  • plsql: 次のサブディレクトリが含まれます。

    • utl_file_dir: UTL_FILEパッケージを使用してPL/SQLブロックによる読取りや書込みが可能な唯一のディレクトリ

  • startup: このサブディレクトリに格納されているスクリプトを/etc/init.dに追加することで、そのインスタンスが、システムの起動時に自動的に起動され、システムのシャットダウン時に自動的に停止するようにできます。

Linuxカーネル・パラメータの構成

この項では、TimesTenインスタンスの作成後に構成する必要があるLinuxカーネル・パラメータについて説明します。

ノート:

TimesTenデーモンを自動的に管理するためにsystemdを選択した場合、systemdのカーネル・パラメータの構成の詳細について、systemdを使用したTimesTenサービスの管理を参照してください。

shmmaxおよびshmallの構成

共有メモリー・セグメントの最大サイズ(shmmaxメモリー・カーネル・パラメータ)が、データベースの共有メモリー・セグメントの合計サイズを格納するのに十分な大きさになるように、Linux共有メモリーを構成する必要があります。TimesTen Classicでは、データベース全体が単一の共有メモリー・セグメントに保持されます。PL/SQLで使用される2番目のメモリー・セグメントもあります。

Linuxでは、共有メモリー・セグメントは複数のページで構成されており、デフォルトのページ・サイズは通常4KB (4096バイト)です。デフォルトのページ・サイズを確認するには、getconf PAGESIZEコマンドを実行します。

% getconf PAGESIZE
4096

次の共有メモリーのカーネル・パラメータを構成して、共有メモリー・セグメントのサイズを制御します。

  • shmmax: 1つの共有メモリー・セグメントの最大サイズ(バイト単位)。この値は、データベースの共有メモリー・セグメントの合計サイズに対応できる十分な大きさである必要があります。

  • shmall: ページで表された共有メモリー・セグメントの合計サイズ。この値は、ページ・サイズ(4kB)の倍数で表され、shmall * pagesizeshmmaxの値以上にする必要があります。shmallの値は、物理RAMの合計量以下に設定することをお薦めします。物理メモリーの合計量を表示するには、Linux cat /proc/meminfoコマンドを実行します。

ttShmSizeユーティリティを使用して、共有メモリー・セグメントのサイズを決定します。ttShmSizeユーティリティは、PermSizeTempSizeLogBufMBおよびConnections接続属性(指定されたデータベース用)の値を使用してこのサイズを決定します。ttShmSizeユーティリティの詳細はOracle TimesTen In-Memory DatabaseリファレンスのttShmSizeを参照し、各接続属性の詳細はOracle TimesTen In-Memory DatabaseリファレンスPermSizeTempSizeLogBufMBおよび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のサイズを設定するには:

  1. rootユーザーとして、/etc/sysctl.confファイルを編集し、kernel.shmmaxおよびkernel.shmallを変更します。shmmaxを39,991,547,720バイト、shmallを9,763,561ページ(shmmax/pagesize)に設定します。
    % sudo vi /etc/sysctl.conf
    ...
    kernel.shmmax=39991547720
    kernel.shmall=9763561
    
  2. 変更された/etc/sysctl.confファイルから設定を再ロードします。
    % sudo /sbin/sysctl -p
    
  3. Linux ipcs lmコマンドを実行して、現在のshmmaxおよびshmallの設定を表示します。max seg size (kbytes)shmmax値で、max total shared memory (kbytes)shmallmax number of segmentsを掛けた値です。
    % ipcs -lm
     
    ------ Shared Memory Limits --------
    max number of segments = 4096
    max seg size (kbytes) = 39054246
    max total shared memory (kbytes) = 39054246
    min seg size (bytes) = 1

ノート:

  • より大きい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ユーザーとしてログインし、Linux idコマンドを実行します。

    % id
    uid=55000(instanceadmin) gid=10000(g10000)groups=10000(g10000)
    

HugePagesを構成するには、次の手順を実行します:

  1. 共有メモリー・セグメントの合計サイズ(MBで表される)をHugepagesizeの値(MBで表される)で除算して、HugePages数を決定します。この例では、共有メモリー・セグメントの合計は39,054,246kB (~38,138MB)で、Hugepagesize値は2,048kB (2MB)です。
    38138 MB/ 2 MB = 19069 
  2. rootユーザーとして、/etc/sysctl.confファイルを編集し、vm.nr_hugepagesHugePages数に設定し、vm.hugetlb_shm_groupをインスタンス管理者のグループIDに設定します。後者の設定により、HugePagesへのアクセスがグループのメンバーに制限されます。
    % sudo vi /etc/sysctl.conf
    ...
    vm.nr_hugepages=19069
    vm.hugetlb_shm_group=10000
  3. 変更された/etc/sysctl.confファイルから設定を再ロードします。
    % sudo /sbin/sysctl -p
  4. HugePagesが正しく構成されていることを確認するには、次を実行します:
    % cat /proc/meminfo | grep HugePages
    HugePages_Total:   19069
    HugePages_Free:    19069
    ...

ノート:

  • 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接続属性を設定する必要はありません。

memlock設定の変更

/etc/security/limits.confファイルのmemlockエントリは、ユーザーがロックできるメモリー量を制御します。これらのエントリはシステム・レベルで設定され、MemoryLock接続属性の設定とは異なります。

ノート:

systemdを使用してTimesTenサービスを管理している場合は、systemdサービス・ユニット構成ファイルでLimitMEMLOCK設定を設定する必要があります。systemdは、/etc/security/limits.confファイルの値を無視します。詳細は、systemdを使用したTimesTenサービスの管理を参照してください。

HugePagesが構成されている場合、memlock値は、共有メモリー・セグメントのサイズに対応できるように大きくする必要があります。そうしないと、データベースがメモリーにロードされません。

たとえば、instanceadminユーザーの場合、共有メモリー・セグメントの合計サイズが39,054,246kBと想定して、memlockエントリを39054246に設定します。

  1. rootユーザーとして、/etc/security/limits.conf ファイルを編集し、instanceadminユーザーのmemlockエントリを39,054,246KBに設定します。この値は、instanceadminユーザーがロックできるメモリーの合計量を示します。
    % sudo vi /etc/security/limits.conf
    ...
    instanceadmin soft   memlock 39054246
    instanceadmin hard   memlock 39054246
  2. 変更を反映するには、instanceadminユーザーとして、ログアウトして再度ログインします。

セマフォ値の設定

TimesTenでは、データベースへの最大接続数に上限があります。データベース接続は次のもので構成されます。

  • ユーザー接続: ユーザー・アプリケーションによって確立されます

  • システム接続: TimesTenによって内部的に確立されます(接続数を48に設定)

  • その他の必要な接続(接続数を107に設定)

これらの各接続には1つのセマフォが割り当てられ、データベースの合計セマフォは次のようになります。

Total semaphores = user connections (N) + system connections (48) + 
                   other required connections (107)

Total semaphores = N + 155

セマフォ設定は、/etc/sysctl.confkernel.sem構成ディレクティブにあります。

kernel.sem = SEMMSL SEMMNS SEMOPM SEMMNI

ここで:

  • SEMMSLは、配列ごとのセマフォの最大数です。この値は、最大接続数に関連します。この値は、155と同時ユーザー接続数の合計に構成します。

  • SEMMNSは、システム全体のセマフォの最大数です。ガイドラインとして、式SEMMNS = (SEMMNI * SEMMSL)を使用します。ただし、実際にはSEMMNSSEMMNI * SEMMSLより大幅に小さい場合があります。

  • SEMOPMは、semopコールごとの最大処理数です。

  • SEMMNIは、配列の最大数です。

次のステップに従って、SEMMSLおよびSEMMNI設定を構成します。ユーザーがrootであることを確認します。

  1. 既存のカーネル・パラメータ設定を表示します。
    # /sbin/sysctl -a | grep kernel.sem
    kernel.sem = 2500 320000 1000 1280
    
  2. /etc/sysctl.confファイルを編集し、SEMMSL (kernel.semの4つの値の1番目)を155と同時ユーザー接続の数の合計に変更します。

    この例では、同時ユーザー接続の数が4000であるとします。SEMMSL値を4155 (=4000+155)以上に設定します。

    さらに、SEMMNI (kernel.semの4つの値の最後)をSEMMSLの値とTimesTen固有の共有メモリー・セグメントの数の合計に変更します。(これらの共有メモリー・セグメントには、TimesTenデータベースおよびPL/SQLが含まれます。)この例では、SEMMNI4157 (=4155+2)以上に設定します。

    ノート:

    TimesTenは、Connectionsの最初の接続属性の値を使用して、TimesTenデータベースに接続できる同時ユーザー接続の最大数を決定します。TimesTenは、同時ユーザー接続の数がこの値を超えた場合にエラーを返します。デフォルト値は、2000または(SEMMSL - 155)の小さい方です。Connections属性の設定の詳細は、Oracle TimesTen In-Memory Databaseオペレーション・ガイドLinuxまたはUNIXシステムでのTimesTenサーバーのサーバーDSNの定義を参照してください。Connectionsの最初の接続属性の詳細は、Oracle TimesTen In-Memory DatabaseリファレンスConnectionsも参照してください。
    # vi /etc/sysctl.conf
    ...
    ...
    kernel.sem = 4155 400000 2000 4157
    
  3. 変更された/etc/sysctl.confファイルから設定を再ロードします。
    # /sbin/sysctl -p

ノート:

レプリケーションを使用している場合、マスター・データベースが存在する各ホストのLinuxプラットフォームでは、共有メモリーとセマフォに対して同様のカーネル設定が必要です。特に、SEMMSLおよびSEMMNIの設定は、複製が実行される前に、アクティブ・スタンバイ・レプリケーション・スキームに参加するすべてのホストで十分な大きさである必要があります。フェイルオーバーの場合、スタンバイはアクティブに対応できる必要があります。

SHMMNIパラメータの設定

SHMMNI値は、ホストが同時に作成できる共有メモリー・セグメントの数を制御します。TimesTenは、TimesTenデータベースの共有メモリー・セグメントと、PL/SQLの共有メモリー・セグメントを作成します。さらに、各クライアント/サーバー接続の間に割り当てられる小さな共有メモリー・セグメントがあります。この共有メモリー・セグメントは接続時に作成され、クライアント/サーバー接続がTimesTenデータベースから切断されるときに破棄されます。クライアント/サーバー接続ごとに1つの共有メモリー・セグメントがあります。

クライアント/サーバー接続の数を考慮するようにSHMMNIパラメータ設定を構成する必要があります。SHMMNIを、予想されるクライアント/サーバー接続の数より大きい値に設定します。(TimesTen共有メモリー・セグメント、PL/SQL共有メモリー・セグメント、および共有メモリーを使用するその他のプログラムも考慮してください。)たとえば、8000のクライアント/サーバー接続があると予想される場合、適切な値は9000以上です。TimesTenにはクライアント/サーバー接続数に含まれていないシステム接続があるため、9000以上の値が適切です。

次のステップに従って、SHMMNI設定を構成します。ユーザーがrootであることを確認します。

  1. 既存のSHMMNIパラメータ設定を表示します。
    # /sbin/sysctl -a | grep shmmni
    kernel.shmmni = 4096
  2. /etc/sysctl.confファイルを編集し、kernel.shmmniをクライアント/サーバー接続の数より大きい値に変更します。この例では、kernel.shmmni9000に設定します。
     vi /etc/sysctl.conf
    ...
    ...
    kernel.shmmni = 9000
    
  3. 変更された/etc/sysctl.confファイルから設定を再ロードします。
    # /sbin/sysctl -p

ノート:

レプリケーションを使用している場合、マスター・データベースが存在する各ホストのLinuxプラットフォームには、同様のSHMMNIカーネル設定が必要です。特に、複製が実行される前に、アクティブ・スタンバイ・レプリケーション・スキームに参加するすべてのホストでSHMMNI設定が十分に大きい必要があります。フェイルオーバーの場合、スタンバイはアクティブに対応できる必要があります。

System V initスクリプトを使用したシステム起動時のインスタンスの自動起動

TimesTenデーモンをシステムの起動時に自動的に起動し、システムの停止時に自動的に停止するオプションがあります。

ノート:

このオプションを選択しない場合、インスタンス管理者は常にTimesTenデーモンを制御します。

このオプションを有効にするには、rootユーザーは-installオプションを指定してTimesTenのsetuprootスクリプトを実行します。スクリプトは、timesten_home/binディレクトリにあります。このスクリプトは、一連のスクリプトを/etc/init.dディレクトリにコピーします。

インスタンスの作成時のttInstanceCreateの出力には、これに関する情報があります。たとえば、myinstanceという名前のインスタンスの場合は、次のようになります。

NOTE: The TimesTen daemon startup/shutdown scripts have not been installed.
 
The startup script is located here :
        '/swdir/TimesTen/ttinstances/myinstance/startup/tt_myinstance'
 
Run the 'setuproot' script :
        /swdir/TimesTen/ttinstances/myinstance/bin/setuproot -install
This will move the TimesTen startup script into its appropriate location.

setuprootスクリプトは、インスタンス・ホーム・ディレクトリを示すTIMESTEN_HOME環境変数の現在の設定に従って動作します。

この例では、timesten_home/binrootユーザーの現在のディレクトリです。

# echo $TIMESTEN_HOME
/swdir/TimesTen/ttinstances/myinstance
# $TIMESTEN_HOME/bin/setuproot -install
Would you like to install the TimesTen daemon startup scripts into /etc/init.d? 
[ yes ]
Copying /swdir/TimesTen/ttinstances/myinstance/startup/tt_myinstance to
 /etc/init.d
 
Successfully installed the following scripts :
/etc/init.d/tt_myinstance
/etc/rc.d/rc0.d/K45tt_myinstance
/etc/rc.d/rc1.d/K45tt_myinstance
/etc/rc.d/rc2.d/S90tt_myinstance
/etc/rc.d/rc3.d/S90tt_myinstance
/etc/rc.d/rc5.d/S90tt_myinstance
/etc/rc.d/rc6.d/K45tt_myinstance

インスタンスを破棄する前に、rootsetuproot -uninstallを実行する必要があります。

# $TIMESTEN_HOME/bin/setuproot -uninstall
Would you like to uninstall the TimesTen daemon startup scripts in /etc/init.d? 
[ yes ]
 
Successfully deleted the following scripts :
/etc/rc.d/rc0.d/K45tt_myinstance
/etc/rc.d/rc1.d/K45tt_myinstance
/etc/rc.d/rc2.d/S90tt_myinstance
/etc/rc.d/rc3.d/S90tt_myinstance
/etc/rc.d/rc5.d/S90tt_myinstance
/etc/rc.d/rc6.d/K45tt_myinstance
/etc/init.d/tt_myinstance

ノート:

インスタンスを破棄する前にsetuproot -uninstallを実行しない場合は、setuproot -installによって配置されたファイルを手動で削除する必要があります。