データベースの作成

TimesTen Scaleoutでデータベースを正常に作成するには、特定のタスクを実行する必要があります。

データベース定義の作成

データベース定義には、データベースの説明が含まれています。これにより、データベース名およびデータベースの属性が定義されます。データベース定義は、現在のバージョンのモデルに追加した後、データベースを作成するために使用できます。各データベースには、関連付けられた1つ以上の接続可能オブジェクトが含まれています。接続可能オブジェクトにより、アプリケーションからデータベースへの接続方法が指定されます。「データベースへの接続」を参照してください。

データベース定義ファイルの作成

データベース定義を作成するには、データベース定義ファイルが必要です。データベース定義ファイルは、ファイル名の接尾辞として.dbdefを使用する必要があります。データベース定義の名前は、データベース定義ファイルの名前から導出されます。たとえば、database1.dbdefという名前のデータベース定義ファイルでは、database1という名前のデータベース定義が作成されます。

ノート:

データベース定義名には、データ・ソース名と同じ制限があります。詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』TimesTenデータベースを識別するためのデータ・ソース名の識別方法に関する説明を参照してください。

データベース定義ファイルには、そのデータベースの接続属性を指定します。データベース定義でサポートされている接続属性のタイプは、次のとおりです。

  • データ・ストア属性は、データベースが作成されるときにデータベースに関連付けられます。これらは、データベースを再作成することでのみ変更できます。

    最も一般的に使用されるデータ・ストア属性は、次のとおりです。

    • DataStore: データベースの各要素のチェックポイント・ファイルのフルパスおよびファイル名の接頭辞を定義します。必須です

    • LogDir: データベースの各要素について、トランザクション・ログ・ファイルのファイル・システム・ディレクトリを定義します。

    • DatabaseCharacterSet: データベースで使用される文字セットを定義します。必須です

    • Durability: トランザクションの永続性の程度を定義します。

      ノート:

      ビジネス・ニーズとデータ損失トレランスに基づいて、永続性設定を適切に設定していることを確認してください。「永続性の設定」を参照してください。

  • 初期接続属性は、データベースがメモリーにロードされるときにデータベースに関連付けられます。これらは、データベースをメモリーからアンロードして、初期接続属性に異なる値を指定して再ロードしたときにのみ変更できます。

    最も一般的に使用される初期接続属性は、次のとおりです。

    • PermSize: データベースの各要素の永続メモリー領域の割当て済サイズを定義します。永続メモリー領域には、永続的なデータベース・オブジェクト(表など)が含まれています。TimesTen Scaleoutでは、永続メモリー領域の内容のみをファイル・システムに書き込みます。

    • TempSize: データベースの各要素の一時メモリー領域の割当て済サイズを定義します。一時メモリー領域には、文の実行時に生成された一時データが含まれます。

      ノート:

      各ホストには、ホストに関連付けられているデータ・インスタンスと同じ数のデータベース要素を格納するために十分なメイン・メモリーが必要です。「PermSize属性の値の決定」『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』データベースのメモリー・リージョン・サイズの指定およびTimesTenのストレージ・プロビジョニングを参照してください。

    • CacheAdminWallet=1は、ttGridAdmin -cacheUidPwdSetコマンドに登録されているOracleキャッシュ管理ユーザーの資格証明がメモリーではなくOracle Walletに格納されるように指定します。

  • PL/SQL初期接続属性は、PL/SQL操作に関するデータベースの動作を定義し、データベースがメモリーにロードされるときにデータベースに関連付けられます。これらは、データベースをメモリーからアンロードして、PL/SQL初期接続属性に異なる値を指定して再ロードしたときにのみ変更できます。

  • サーバー接続属性は、接続に関するデータベースの動作を定義し、データベースがメモリーにロードされるときにデータベースに関連付けられます。これらは、データベースをメモリーからアンロードして、サーバー接続属性に異なる値を指定して再ロードしたときにのみ変更できます。

ノート:

データベース定義ファイル内のデータ・ストアではないすべての接続属性、初期接続属性、PL/SQL初期接続属性またはサーバー接続属性が、TimesTen Scaleoutによってデフォルトで作成される接続可能オブジェクトに追加されます。「接続可能オブジェクトの作成」を参照してください。

次の例では、データベース定義ファイルdatabase1.dbdefを次のように定義して作成します。

  • チェックポイント・ファイルのフルパスは/disk1/databases/database1

  • ログ・ファイルのディレクトリは/disk2/logs

  • データベース文字セットはAL32UTF8

  • 永続性設定は0

  • 各要素の永続メモリー領域は32 GB

  • 各要素の一時メモリー領域は4 GB

  • 各要素の内部トランザクション・ログ・バッファは1 GB

  • データベースへのユーザー指定同時接続の上限は2048

  • キャッシュ管理ユーザー資格証明がttGridAdmin -cacheUidPwdSetオプションに登録されている場合は、Oracle Walletに格納されます。

vi /mydir/database1.dbdef

DataStore=/disk1/databases/database1
LogDir=/disk2/logs
DatabaseCharacterSet=AL32UTF8
Durability=0
PermSize=32768
TempSize=4096
LogBufMB=1024
Connections=2048
CacheAdminWallet=1

Oracle TimesTen In-Memory Databaseリファレンス接続属性を参照してください。

モデルへのデータベース定義の追加

ttGridAdmin dbdefCreateコマンドにより、データベース定義ファイルに基づいてデータベース定義が作成されます。TimesTen Scaleoutでは、データベース定義ファイルの名前を使用して、データベース定義の名前を指定します。

database1.dbdefファイルに基づいてdatabase1データベース定義が作成されます。

% ttGridAdmin dbdefCreate /mydir/database1.dbdef
Database Definition database1 created.

また、ttGridAdmin dbdefCreateコマンドによって、同じ名前の接続可能オブジェクトも作成され、ここには、データベース定義ファイル内に存在するすべての一般接続属性が含められます。前のトピックでのdatabase1.dbdefファイルには一般接続属性が含まれていないため、database1接続可能オブジェクトに属性は含まれません。この接続可能オブジェクトは、常に、直接接続に対してのみ設定されます。

現在のバージョンのモデルに、database1データベース定義を追加します。

% ttGridAdmin modelApply
...
Updating grid state...................................................OK
Pushing new configuration files to each instance......................OK
...
ttGridAdmin modelApply complete

TimesTen Scaleoutにより、database1データベース定義に定義されている属性に基づき、すべてのデータ・インスタンスの構成ファイルに、database1接続可能オブジェクトが追加されます。

ノート:

TimesTen Scaleoutでは、最新バージョンのモデルに加えた変更を操作グリッドに適用するたびに、構成ファイルが上書きされます。このため、ttGridAdminユーティリティを活用せずにこれらのファイルを変更しないようにする必要があります。

ttGridAdmin dbdefCreateまたはttGridAdmin modelApplyコマンドの詳細は、それぞれ『Oracle TimesTen In-Memory Databaseリファレンス』データベース定義の作成(dbdefCreate)、または「モデルに加えた変更の適用」を参照してください。

データベース定義に基づいたデータベースの作成

TimesTen Scaleoutでは、ユーザー・データはデータベースを形成する一連の要素に分散されます。現在のバージョンのモデルの各データ・インスタンスには、グリッド内の各ユーザー・データベースについて1つの要素が含まれています。

データベース定義に格納されている属性に基づいて、データベースを作成できます。データベースを作成すると、各データ・インスタンスによってデータベースの1つの要素が作成され、メモリーにロードされます。

各データ・インスタンスに対してデータベースの要素を作成するプロセスは、非同期です。各データ・インスタンスのデーモンでは、作成のフラグが設定された新しいデータベースが存在することを認識すると、すぐに、個別に要素を作成してメモリーにロードするために必要な操作を実行します。

ttGridAdmin dbCreateコマンドにより、データベース定義に基づいてデータベースが作成されます。

database1データベース定義に基づいてdatabase1データベースが作成されます。

% ttGridAdmin dbCreate database1
Database database1 creation started

分散マップの定義を続行する前に、すべてのデータ・インスタンスで、データベース要素がメモリーにロードされたことが報告されるまで待機します。ttGridAdmin dbStatusコマンドを使用して、データベース作成プロセスのステータスを確認できます。

次の例は、database1データベースのステータス・サマリーを示しています。レポートに、データベースのすべての要素がロード済として表示されていることに注意してください。

% ttGridAdmin dbStatus database1 -element
Database database1 element level status as of Wed Jan 10 14:34:08 PST 2018
 
Host  Instance  Elem Status CA Status Date/Time of Event  Message 
----- --------- ---- ------ –-------- ------------------- ------- 
host3 instance1    1 loaded stopped   2018-01-10 14:33:23         
host4 instance1    2 loaded stopped   2018-01-10 14:33:21         
host5 instance1    3 loaded stopped   2018-01-10 14:33:23         
host6 instance1    4 loaded stopped   2018-01-10 14:33:23         
host7 instance1    5 loaded stopped   2018-01-10 14:33:23         
host8 instance1    6 loaded stopped   2018-01-10 14:33:23         

ttGridAdmin dbCreateまたはttGridAdmin dbStatusコマンドの詳細は、それぞれ『Oracle TimesTen In-Memory Databaseリファレンス』データベースの作成(dbCreate)またはデータベースのステータスのモニター(dbStatus)を参照してください。

データベースの分散マップの定義

TimesTen Scaleoutは柔軟なスケーラビリティを備えています。ビジネス・ニーズに応じて、データベース内の要素の数を増加または削減できます。新しいデータ・インスタンスをグリッドに追加したとき、データベースに格納されているデータが、新規または残りのインスタンスの要素間で自動的に再分散されることはありません。TimesTen Scaleoutでのデータの分散方法は、グリッド内の各ホストに関連付けられているデータ領域グループおよびデータベースの分散マップで定義されているデータ・インスタンスの要素によって定義されます。

ノート:

データベースの分散マップを変更する操作中、DDL文およびDML文はTimesTen Scaleoutによってブロックされます。メンテナンス期間中やスケジューリングした停止中など、オープン・トランザクションが存在しないときに分散マップを変更するようにしてください。

-addオプションを使用してttGridAdmin dbDistributeコマンドを実行すると、データ・インスタンスの要素がデータベースの分散マップに追加されます。-addオプションのパラメータとしてallを使用すると、グリッド内の使用可能なすべてのデータ・インスタンスの要素が追加されます。allパラメータは、通常、新しいデータベースの分散マップの初期定義に使用されます。

grid1グリッドで使用可能なデータ・インスタンスのすべての要素を、database1データベースの分散マップに追加します。

% ttGridAdmin dbDistribute database1 -add all -apply
Distribution map updated

ttGridAdmin dbDistributeコマンドの詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』データベースの分散スキームの設定または変更(dbDistribute)を参照してください。

ユーザー接続に対するデータベースのオープン

アプリケーションをデータベースに接続できるようにするには、データベースをユーザー接続に対してオープンする必要があります。データベース作成プロセスと同様に、要素をオープンするプロセスは非同期です。各データ・インスタンスのデーモンは、データベースにオープンのフラグが設定されていることを認識すると、すぐに、その要素をオープンするために必要な操作を実行します。

ノート:

  • インスタンス管理者は、ユーザー接続に対してデータベースがオープンしていなくても、データベースに接続できます。

  • ユーザー接続に対してデータベースをオープンする前に、データベース・ユーザーの作成が必要になる場合があります。『Oracle TimesTen In-Memory Databaseセキュリティ・ガイド』データベース・ユーザーの作成または識別を参照してください。

    また、「表の分散スキームの定義」で示すように、各表の分散スキームが含まれたSQLスキーマを定義しておくこともできます。

ttGridAdmin dbOpenコマンドにより、ユーザー接続に対してデータベースをオープンします。

ユーザー接続に対してdatabase1データベースをオープンします。

% ttGridAdmin dbOpen database1
Database database1 open started

ttGridAdmin dbStatusコマンドを使用して、データベース・オープン・プロセスのステータスを確認できます。次の例は、database1データベースのステータス・サマリーを示しています。レポートに、データベースのすべての要素がオープンとして表示されていることに注意してください。

% ttGridAdmin dbStatus database1 -element
Database database1 element level status as of Wed Jan 10 14:34:43 PST 2018
 
Host  Instance  Elem Status CA Status Date/Time of Event  Message 
----- --------- ---- ------ –-------- ------------------- ------- 
host3 instance1    1 opened stopped   2018-01-10 14:34:43         
host4 instance1    2 opened stopped   2018-01-10 14:34:43         
host5 instance1    3 opened stopped   2018-01-10 14:34:42         
host6 instance1    4 opened stopped   2018-01-10 14:34:42         
host7 instance1    5 opened stopped   2018-01-10 14:34:42         
host8 instance1    6 opened stopped   2018-01-10 14:34:42         

ttGridAdmin dbOpenまたはttGridAdmin dbStatusコマンドの詳細は、それぞれ『Oracle TimesTen In-Memory Databaseリファレンス』データベースのオープン(dbOpen)またはデータベースのステータスのモニター(dbStatus)を参照してください。