データベースの作成
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)を参照してください。