TimesTenデータベースは、SQLを使用してアクセスおよび操作できる表、ビュー、順序などの要素の集合です。各TimesTenデータベースは、初期接続の開始時に作成されます。デ−タベース・インスタンスは、既存のすべての接続が切断されないと解放されません。TimesTenデータベースの構成は、1つ目の接続属性に含まれています。
TimesTenデータベースの構成および管理は接続定義の属性に含まれているため、この章では、まずTimesTenデータベース接続の構成方法について説明します。
一度データベースを作成すると、次の処理を実行できます。
ttIsql
ユーティリティを使用したデータべースへの接続およびSQLファイルの実行または対話型SQLセッションの開始(「バッチ・モードと対話モード」を参照)。
データベースを使用するアプリケーションの実行(『Oracle TimesTen In-Memory Database C開発者ガイド』、『Oracle TimesTen In-Memory Database Java開発者ガイド』および『Oracle TimesTen In-Memory Database TTClassesガイド』を参照)。
主な内容は次のとおりです。
『Oracle In-Memory Database Cache概要』のTimesTenの接続オプションに関する項で説明されているとおり、アプリケーションではTimesTen ODBCドライバを使用して、TimesTenデータベースにアクセスします。アプリケーションでは、提供されているインタフェースを介してODBCダイレクト・ドライバ、Windows ODBCドライバ・マネージャ、ODBCクライアント・ドライバまたはODBCドライバを間接的に使用し、TimesTenデータベースにアクセスできます。
図1-1に、アプリケーションで様々なドライバおよびインタフェースを使用して、TimesTenデータベースにアクセスする方法を示します。
Cアプリケーションでは、TimesTen ODBCドライバと直接リンクしたり、Windows ODBCドライバ・マネージャとリンクしたり、ODBCドライバにアクセスするOCIまたはPro*C/C++インタフェースを使用して、TimesTenと対話します。
Javaアプリケーションでは、JDBCライブラリをロードして、TimesTenと対話します。
C++アプリケーションでは、TimesTenで提供されるクラス・セット(TTClasses)、またはODBCドライバにアクセスするOCIまたはPro*C/C++インタフェースを使用して、TimesTenと対話します。
次の点について考慮します。
ODBCドライバに直接リンクするアプリケーションでは、ダイレクト・ドライバにリンクしているか、クライアント・ドライバにリンクしているかにかかわらず、リンクしているドライバのみ使用できます。いずれかのTimesTenドライバに直接リンクするアプリケーションでは、複数のデータベースに同時に接続できます。
TimesTenダイレクト・ドライバでは、複数のTimesTenデータベース(すべて同じバージョンのTimesTen)への複数の接続がサポートされています。
TimesTenクライアント・ドライバ(クライアント/サーバー接続を支援するために使用)では、複数のTimesTenデータベース(それぞれが異なるバージョンのTimesTenでも可能)への複数の接続がサポートされています。
このオプションの場合、ドライバ・マネージャにリンクする場合と比較すると、柔軟性は低くなりますがパフォーマンスは向上します。
アプリケーションでは、同じアプリケーション内に存在する複数のODBCドライバにリンクできます。これはドライバが、異なるデータベースのドライバであっても同じです。アプリケーションでは、複数のODBCドライバをロードする場合、Windows ODBCドライバ・マネージャなどのドライバ・マネージャを使用する必要があります。
また、TimesTenダイレクト・ドライバおよびTimesTenクライアント・ドライバの両方を使用する必要がある場合は、複数のドライバが必要になることがあります。
Windows ODBCドライバ・マネージャは、実行時にODBCドライバを動的にロードします。ただし、ODBCドライバ・マネージャを使用する場合は、ランタイム・オーバーヘッドが増大し、アプリケーションのパフォーマンスに影響が出る場合があるため、ODBCドライバ・マネージャを使用する利点を十分検討してください。
注意: ODBCドライバ・マネージャを使用しているアプリケーションで、XLAは使用できません。 |
TimesTenドライバ・マネージャを使用するアプリケーションのコンパイル方法の詳細は、『Oracle TimesTen In-Memory Database C開発者ガイド』、『Oracle TimesTen In-Memory Database Java開発者ガイド』および『Oracle TimesTen In-Memory Database TTClassesガイド』を参照してください。
次の項では、TimesTenデータベースの定義方法について説明します。
TimesTenには次のODBCドライバが含まれています。
TimesTen Data Managerドライバ: 直接接続のアプリケーションで使用するTimesTen ODBCドライバ
TimesTenクライアント・ドライバ: クライアント/サーバー・アプリケーションで使用するTimesTen Client ODBCドライバ
TimesTenには、次の2つのバージョンのData Manager ODBCドライバが含まれています。
本番: ほぼすべてのアプリケーション開発およびすべてのデプロイメントには、本番バージョンのTimesTen Data Managerドライバを使用します。
デバッグ: デバッグ・バージョンのTimesTen Data Managerドライバは、TimesTenで問題が発生した場合にのみに使用します。このバージョンは、内部エラーのチェックも行うため、本番バージョンより処理が遅くなります。UNIXの場合は、追加のデバッグ情報を表示するために、TimesTenデバッグ・ライブラリを-g
オプションでコンパイルします。
Windowsの場合、本番バージョンのTimesTen Data Managerがデフォルトでインストールされます。デバッグ・バージョンをインストールするには、「Custom」セットアップを選択します。TimesTen Clientドライバをインストールするには、「Typical」または「Custom」のいずれかを選択します。
表1-1に、Windows用のODBCドライバを示します。
表1-1 Windowsプラットフォーム用に提供されているODBCドライバ
環境 | バージョン | 名前 |
---|---|---|
Windows |
本番 |
TimesTen Data Manager 11.2.1 Driver |
Windows |
デバッグ |
TimesTen Data Manager 11.2.1 Debug Driver |
Windows |
クライアント |
TimesTen Client 11.2.1 Driver |
UNIXの場合、インストール時に選択したオプションに応じて、TimesTenは、クライアント・ドライバまたは本番バージョンおよびデバッグ・バージョンのTimesTen Data Manager ODBCドライバがインストールされることがあります。
表1-2に、UNIXプラットフォーム用のTimesTen ODBCドライバを示します。
表1-2 UNIXプラットフォーム用に提供されているODBCドライバ
環境 | バージョン | 場所および名前 |
---|---|---|
HP-UX |
本番 |
TimesTen Data Manager 11.2.1 Driver |
HP-UX |
デバッグ |
TimesTen Data Manager 11.2.1 Debug Driver |
HP-UX |
クライアント |
TimesTen Client 11.2.1 Driver |
Solaris Linux |
本番 |
TimesTen Data Manager 11.2.1 Driver |
Solaris Linux |
デバッグ |
TimesTen Data Manager 11.2.1 Debug Driver |
Solaris Linux |
クライアント |
TimesTen Client 11.2.1 Driver |
AIX |
本番 |
TimesTen Data Manager 11.2.1 Driver |
AIX |
デバッグ |
TimesTen Data Manager 11.2.1 Debug Driver |
AIX |
クライアント |
TimesTen Client 11.2.1 Driver |
JDBCによって、JavaアプリケーションでTimesTenに対してSQL文を実行し、結果を処理できるようになります。Javaプログラム言語でデータにアクセスする場合の主要なインタフェースです。JDBCは、TimesTenのインストール時にTimesTen Data Managerとともにインストールされます。
図1-1に示すとおり、TimesTen JDBCドライバは、ODBCドライバを使用してTimesTenデータベースにアクセスします。このドライバは、JDBCメソッドごとに一連のODBC関数を実行して適切な処理を行います。JDBCはすべてのデータベース処理でODBCに依存するため、JDBCを使用する場合の最初の手順は、TimesTenデータベースおよびJDBCのかわりにTimesTenデータベースにアクセスするODBCドライバの定義になります。
TimesTen JDBC APIは、TimesTenネイティブAPIにブリッジするためのネイティブ・メソッドを使用して実装され、複数のドライバが異なるデータベースに接続できるドライバ・マネージャを備えています。DriverManager
クラスのJDBCドライバ・マネージャは、ロード済で、Javaアプリケーションで使用可能なすべてのJDBCドライバの情報を追跡します。Javaアプリケーションを使用すると、複数のドライバのロードおよび各ドライバへの個別接続を実行できます。たとえば、TimesTen Client JDBCドライバおよびTimesTenダイレクト・ドライバの両方を1つのアプリケーションでロードできます。その後、Javaアプリケーションによって、ローカル・マシンまたはリモート・マシンのいずれかのデータベースに接続できます。
TimesTenでサポートされているJava関数のリストは、『Oracle TimesTen In-Memory Database Java開発者ガイド』を参照してください。
アプリケーションから接続する場合は、データソース名(DSN)を使用して、接続先となる特定のTimesTenデータベースを一意に識別します。具体的に、DSNは、TimesTenデータベースを識別する名前(文字列)で、データベースへの接続時に使用する接続属性の集まりです。Windowsの場合、データベースへのアクセスに使用するODBCドライバもDSNで指定します。
注意: ユーザーが、権限のない接続属性(初期接続属性など)を持つDSNを使用しようとすると、エラーが表示されます。初期接続属性の権限の詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』の接続属性に関する説明を参照してください。 |
DSNではTimesTenデータベースを一意に識別しますが、データベースは複数のDSNが参照できます。このような一意のDSN間で異なる点は、データベースへの接続属性の指定です。これによって、1つのデータベースの様々な接続構成に対してわかりやすい名前が付きます。
注意: ODBC標準に従うと、ある属性が接続文字列内に複数回出現する場合、指定されている最初の値が使用され、後続値は使用されません。 |
最大長は32文字です。
[]{},;?*=!@\を除くASCII文字で構成されます。
空白を含むことはできません。
次の項では、DSNの構成および管理方法について説明します。
DSNは、次のユーザーDSNおよびシステムDSNで構成される2層のネーミング規則を使用して解決されます。
ユーザーDSNは、このDSNを作成したユーザーのみが使用できます。
Windowsの場合、ユーザーDSNは「ODBC データソース アドミニストレータ」の「ユーザー DSN」タブで定義します。
UNIXの場合、ユーザーDSNは、$HOME/.odbc.ini
ファイルまたはODBCINI
環境変数に指定したファイルで定義します。このファイルは、ユーザーODBC.INI
ファイルと呼ばれます。
ユーザーDSNは、作成したユーザーのみが使用できますが、使用を制限されるのはDSN(文字列名およびその属性)のみです。基礎となるデータベースは、他のユーザーのユーザーDSNまたはシステムDSNで参照できます。
TimesTenでは、TimesTen Data ManagerとTimesTen Clientの両方のデータソースを.odbc.ini
ファイルでサポートしています。
システムDSNは、TimesTenデータベースへの接続用にシステムDSNが定義されているマシン上ですべてのユーザーが使用できます。
Windowsの場合、システムDSNは、「ODBC データソース アドミニストレータ」の「システム DSN」タブで定義します。
UNIXの場合、システムDSNは、システムODBC.INI
ファイルと呼ばれるsys.odbc.ini
ファイルに定義されます。
root以外のインストールでは、ファイルはinstall_dir
/info/sys.odbc.ini
にあります。
rootインストールでは、/var/TimesTen/InstanceName/sys.odbc.ini
または/var/TimesTen/sys.odbc.ini
にあります。
DSNは、ローカル・データベースやリモート・データベースを一意に識別するために作成します。直接接続またはクライアント/サーバー接続用に使用するDSNのタイプを次に説明します。
Data Manager DSN: ローカル・データベースを指定するDSNは、ダイレクト・ドライバであるTimesTen Data Manager ODBCドライバを使用します。本番バージョンまたはデバッグ・バージョンのTimesTen Data Managerドライバを使用できます。
Data Manager DSNは、パス名およびファイル名の接頭辞を使用してデータベースを参照します。データベースのパス名は、C:\data\chns\AdminDS
や/home/chns/AdminDS
など、データベースが格納されているディレクトリの場所およびデータベースの接頭辞を示します。
注意: このパス名および接頭辞は、ファイル名を定義するものではなく、データベースが格納されているディレクトリの場所およびすべてのデータベース・ファイルの接頭辞を示しています。データベースが使用する実際のファイルには接尾辞が付きます。たとえば、C:\data\chns\AdminDS.ds0 や/home/chns/AdminDS.log2 などです。 |
指定したTimesTenデータベースを参照するData Manager DSNは、データベースが存在するシステムと同じシステムで定義する必要があります。TimesTenによって、各データベースにdsName
.res
n
ファイルが作成されます。これらのファイルは、ログを維持するためにTimesTenによって内部的に使用されます。
同じデータベースを複数のData Manager DSNで参照している場合、他のパス名で同じ場所を識別できても、必ず同一のデータベース・パス名を使用する必要があります。たとえば、1つのDSNでデータベースを参照するシンボリック・リンクを使用し、別のDSNで実際のパス名を使用することはできません。Windowsの場合、マップしたドライブ文字はデータベースのパス名に指定できません。
クライアントDSN: クライアントDSNはリモート・データベースを指定し、TimesTenクライアントを使用します。クライアントDSNは、hostname、DSN
ペアを指定して間接的にTimesTenデータベースを参照します。ここで、hostnameはTimesTenサーバーが実行しているサーバー・マシンを表し、DSNはサーバー・ホスト上のTimesTenデータベースを指定するサーバーDSNを表します。
サーバーDSN: サーバーDSNは常にシステムDSNとして定義され、クライアント・アプリケーションがアクセスする、そのサーバー上の各データベースのサーバー・システム上で定義されます。サーバーDSNの形式および属性は、Data Manager DSNのものと似ています。
UNIXの場合、特定のユーザーが作成したすべてのユーザーDSN(クライアントDSNおよびData Manager DSNの両方)は、同じユーザーODBC.INI
ファイルで定義されます。同様に、すべてのシステムDSNは同じシステムODBC.INIファイル
で定義されます。
次の表に、TimesTenでサポートされているDSNタイプ、ユーザーDSNとシステムDSNのいずれを作成するか、およびDSNの場所を示します。
DSNタイプ | ユーザーDSNかシステムDSNか | DSNの場所 |
---|---|---|
Data Manager DSN | ユーザーDSNまたはシステムDSN | データベースのあるマシン上 |
クライアントDSN | ユーザーDSNまたはシステムDSN | 任意のローカル・マシンまたはリモート・マシン上 |
サーバーDSN | システムDSN | データベースのあるマシン上 |
クライアントDSNおよびサーバーDSNの詳細は、「TimesTen ClientおよびTimesTen Serverの使用方法」を参照してください。
TimesTen Data Manager DSNまたはサーバーDSN属性には次の4つのタイプがあります。
注意: すべての属性の詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』の接続属性に関する説明を参照してください。 |
データ・ストア属性は、データベースの作成時にデータベースに関連付けられます。その後の接続では変更できません。変更するには、データベースを破棄して作成しなおす必要があります。
もっともよく使用されるデータ・ストア属性には次のものがあります。
DataStore
: データベースのディレクトリ名およびファイル名の接頭辞。
LogDir
: データベースのトランザクション・ログ・ファイルのディレクトリ名。デフォルトでは、トランザクション・ログ・ファイルはチェックポイント・ファイル・ディレクトリに入っています。トランザクション・ログ・ファイルおよびチェックポイント・ファイルを別々のディスクに保存すると、システムのスループットが向上する場合があります。
DatabaseCharacterSet
: ストレージ・エンコーディングを定義する必須のキャラクタ・セット指定。
初期接続属性は、TimesTenデータベースがメモリーにロードされる際に使用されます。初期接続属性の設定でデータベースをロードできるのは、インスタンス管理者のみです。デフォルトでは、最初の接続が確立されたときにはアイドル・データベース(接続のないデータベース)がメモリーにロードされます。これらの属性は、データベースへの最後の接続がクローズされるまで、後続のすべての接続で保持されます。初期接続属性は、TimesTenデータベースをアンロードしてから、インスタンス管理者が初期接続属性に異なる値を使用して再接続しないかぎり、変更できません。
もっともよく使用される初期接続属性には次のものがあります。
PermSize
: データベースの永続パーティションの割当て済サイズを構成します。永続パーティションには、永続データベース要素が含まれています。チェックポイント処理の際には、永続データ・パーティションのみがディスクに書き込まれます。
TempSize
: データベースの一時パーティションの割当て済サイズを構成します。一時パーティションには、文の実行時に生成された一時データが含まれます。
一般接続属性は、接続のたびに設定され、その接続期間中のみ保持されます。各同時接続には別の値を設定できます。
ユーザー名およびパスワードは、DSNの一般接続属性で指定できます。DSNの接続属性でユーザー名を指定すると、直接接続またはクライアント/サーバー接続のどちらを使用していても、接続で使用するユーザー名が定義されます。一般接続属性または接続文字列で行ったユーザー構成は、接続開始時に指定したユーザー名と異なる場合、前者が優先されます。
一般接続属性でユーザー名/パスワードを設定しない場合、接続を開始したオペレーティング・システム・ユーザーにはデフォルトのユーザー名/パスワードが使用されます。
TimesTenデータベースに初めて接続する場合は、インスタンス管理者のみが接続を開始できます。この場合、接続文字列のユーザー名/パスワード・フィールドは必ず空白にし、インスタンス管理者が最初の接続を開始するようにしてください。
クライアント/サーバー接続を開始すると、接続用に送信されるパスワードはすべて、クライアント/サーバー・プロトコルで暗号化されます。外部ユーザーの場合は、パスワードはオペレーティング・システムで検証されるため、ユーザー名のみを指定します。
IMDBキャッシュ接続属性では、TimesTenにロードされるデータのロード元であるOracleインスタンスのOracleサービス識別子を入力できます。
Windowsの場合、「ODBC データソース アドミニストレータ」で属性を指定します。
UNIXの場合、ODBC.INI
ファイルで属性を指定します。ODBC.INI
ファイルに指定されていない属性に対しては、デフォルト値が使用されます。
次の項では、次のいずれかのプラットフォームでData Manager DSNを作成する方法について説明します。
次の項では、WindowsでDSNを作成する方法について説明します。
「ODBC データソース アドミニストレータ」でODBCドライバを指定します。
Windowsのデスクトップで、「スタート」→「コントロール パネル」→「管理ツール」→「データ ソース(ODBC)」を選択します。「ODBC データソース アドミニストレータ」が開きます。
ユーザーDSNまたはシステムDSNのどちらを作成するか選択します。ユーザーDSNおよびシステムDSNについては、「ユーザーDSNおよびシステムDSNの概要」を参照してください。
次のいずれかを実行します。
既存のTimesTenデータソースを選択して、「構成」をクリックします。
「追加」をクリックします。次に、適切なTimesTenドライバをリストから選択します。「完了」をクリックします。これによって、「TimesTen ODBC Setup」ダイアログ・ボックスが表示されます。
「TimesTen ODBC Setup」ダイアログ・ボックスの「Data Store」タブで、データソース名(DSN)、データベース・ディレクトリのパスと接頭辞、およびデータベース・キャラクタ・セットを指定します。データベース・ディレクトリのパスは、マップしたドライブを参照できません。図1-2を参照してください。
DSN、データベース・パス、接頭辞の詳細は、「TimesTenデータベースを識別するためのデータソース名の指定」を参照してください。データベース・キャラクタ・セットについては、「データベース・キャラクタ・セットの選択」を参照してください。説明フィールドはオプションです。
図1-3、図1-4および図1-5で示すとおり、「TimesTen ODBC Setup」ダイアログ・ボックスの「First Connection」タブ、「General Connection」タブ、「NLS Connection」で適切な接続属性を指定します。また、OracleにIMDBキャッシュを使用している場合は、図1-6に示されている接続属性を指定します。マルチスレッドのクライアント/サーバー構成を使用している場合は、図1-7に示す接続属性を指定します。
注意: 接続属性の詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』の接続属性に関する説明を参照してください。 |
終了後、「OK」をクリックします。
この項の内容は次のとおりです。
UNIXの場合、ユーザーDSNは、$HOME/.odbc.ini
ファイルまたはODBCINI
環境変数に指定したファイルで定義します。このファイルは、ユーザーODBC.INI
ファイルと呼ばれます。システムDSNは、install_dir
/info/sys.odbc.ini
内のシステムODBC.INI
ファイルで定義します。
ユーザーおよびシステムのODBC.INI
ファイルの構文は同じです。構文は、「ODBC.INIファイル・エントリの説明」で説明されています。システムODBC.INI
ファイルは、TimesTenをマシンにインストールすると作成されます。ユーザーODBC.INI
ファイルはユーザーが独自に作成する必要があります。
DSNを作成するには、次の手順を実行します。
ODBC.INI
ファイルでDSNを指定します。DSNは、DSN定義の最初に大カッコで囲み1行で指定します。次に例を示します。
[AdminDS]
TimesTenドライバを設定するには、ODBC.INI
ファイルでDRIVER
属性を指定します。次の例では、このDSNが使用されるように設定されているTimesTen ODBCドライバを示します。
[AdminDS]
DRIVER=install_dir/lib/libtten.so
ODBC.INI
ファイルで、データベース・ディレクトリのパスおよび接頭辞を指定します。次の例では、/users/robin
をデータベース・ディレクトリのパス、FixedDs
をデータベース・ファイルの接頭辞に指定しています。
DataStore=/users/robin/FixedDs
「データベースのパス名での環境変数の使用方法」で説明するとおり、データベース・ディレクトリのパスには環境変数を使用できます。
データベース・キャラクタ・セットを選択します。次の例では、ODBC.INI
ファイルのデータベース・キャラクタ・セットをUS7ASCII
と定義しています。
DatabaseCharacterSet=US7ASCII
ODBC.INI
ファイルに接続属性を設定します。ODBC.INI
ファイルに指定されていない属性に対しては、デフォルト値が使用されます。
データベースのパス名およびトランザクション・ログ・ファイルのパス名の指定に環境変数を使用できます。たとえば、データベースの場所に$HOME/AdminDS
を指定できます。
環境変数は、$varname
または$(varname)
で表現できます。カッコはオプションです。データベースのパス名のバックスラッシュ(\)は、後続の文字をエスケープします。
注意: 環境変数の展開では、データベースに接続しているプロセスの環境を使用します。異なるプロセスでは、同じ環境変数に対して異なる値を指定できるため、データベースのパス名を様々に展開することができます。環境変数は、ユーザーODBC.INI ファイルでのみ使用できます。システムODBC.INI ファイルでは指定できません。 |
各プラットフォーム用のクライアントDSNまたはサーバーDSNを定義する方法については、「サーバーDSNの定義」および「クライアントDSNの作成」を参照してください。
TimesTenでは、特定のDSNを解決する際、次の処理が実行されます。
注意:
|
次のファイル内で指定された名前のユーザーDSNを検索します。
ODBCINI
環境変数で参照されるファイル(環境変数が設定されている場合)
ユーザーのホーム・ディレクトリ内の.odbc.ini
ファイル(ODBCINI
環境変数が設定されていない場合)
一致するユーザーDSNが検出されない場合は、指定した名前を持つシステムDSNを検索します。
SYSODBCINI
環境変数で参照されるファイル(ODBCINI環境変数が設定されている場合)
デーモンのホーム・ディレクトリ内のsys.odbc.ini
ファイル(SYSODBCINI
環境変数が設定されていない場合)
UNIXの場合、非rootインストールでは、ファイルはinstall_dir
/info/sys.odbc.ini
に入っています。また、rootインストールでは、/var/TimesTen/InstanceName/sys.odbc.ini
または/var/TimesTen/sys.odbc.ini
に入っています。
この項では、データベースの設定方法に関する追加の例を示します。
例ごとに、Windowsの「ODBC データソース アドミニストレータ」の設定およびその設定に対応するUNIXのODBC.INI
エントリについて説明します。
この例では、一時データベースを設定する方法について説明します。
Windowsの場合、「TimesTen ODBC Setup」ダイアログ・ボックスで一時データベースを設定できます。図1-9および図1-10を参照してください。
UNIXで一時データベースを設定するには、ODBC.INI
ファイルで次のエントリを作成します。すべてのUNIXプラットフォームのドライバのリストは、「TimesTen ODBCドライバを使用した接続」の表を参照してください。
大カッコで囲まれたテキストは、データソース名です。
[TempDs]
Driver=install_dir/lib/libtten.so
DataStore=/users/robin/TempDs
#this is a temporary database
Temporary=1
#create database if it is not found
AutoCreate=1
#log database updates to disk
Logging=1
LogPurge=1
DatabaseCharacterSet=US7ASCII
注意: 一時データベースはバックアップできません。 |
PL/SQL一般接続属性の値を指定できます。
注意: すべてのPL/SQL接続属性の完全なリストは、『Oracle TimesTen In-Memory Databaseリファレンス』の接続属性に関する説明を参照してください。 |
次に、いくつかのPL/SQL接続属性を示します。
PLSQL_OPTIMIZE_LEVEL
: PL/SQLライブラリ・ユニットのコンパイルに使用する最適化レベルを設定します。
PLSQL_MEMORY_ADDRESS
: TimesTenダイレクト・ドライバを使用する各プロセスにPL/SQL共有メモリー・セグメントがロードされる場所を示す仮想アドレス(16進値)を指定します。このメモリー・アドレスは、データベースへのすべての接続、およびデータベースに接続するすべてのプロセスで同じである必要があります。
次の例では、PLdsn
DSNを作成し、PLSQLを1に設定してPL/SQLを有効にし、PL/SQL共有メモリー・セグメントのサイズを32MBに設定します。
[PLdsn] Datastore=/users/user1/PLdsn PermSize=32 DatabaseCharacterSet=AL32UTF8 ConnectionCharacterSet=AL32UTF8 PLSQL=1 PLSQL_MEMORY_SIZE=32
この他の例は、『Oracle TimesTen In-Memory Database PL/SQL開発者ガイド』のPL/SQL接続属性に関する説明を参照してください。
異なる接続属性を持ち、同じデータベースを参照する複数のDSNを作成できます。
この例では、AdminDSN
およびGlobalDSN
の2つのDSNを作成します。これらのDSNは、接続キャラクタ・セット以外は同じです。US7ASCII
キャラクタ・セットを使用するアプリケーションは、AdminDSN
を使用することによってTTDS
データベースに接続できます。マルチバイト文字を使用するアプリケーションは、GlobalDSN
を使用してTTDS
データベースに接続できます。
Windowsの場合、ODBCデータソース・アドミニストレータを使用して、図1-11に示すようにAdminDSNを定義します。AdminDSN
は、AL32UTF8
データベース・キャラクタ・セットを使用して作成されます。図1-12は、US7ASCII
がAdminDSN
の接続キャラクタ・セットであることを示しています。
図1-13に示すように、GlobalDSN
もAL32UTF8
データベース・キャラクタ・セットを使用して作成されます。図1-14は、GlobalDSN
の接続キャラクタ・セットがAL32UTF8
であることを示しています。
次の例は、UNIXでDSNを指定する方法を示しています。この例では、Solaris用のTimesTen Data Manager ODBCドライバを使用します。
大カッコで囲まれたテキストは、データソース名です。
[AdminDSN] Driver=install_dir/lib/libtten.so Datastore=/data/TTDS DatabaseCharacterSet=AL32UTF8 ConnectionCharacterSet=US7ASCII [GlobalDSN] Driver=install_dir/lib/libtten.so DataStore=/data/TTDS DatabaseCharacterSet=AL32UTF8 ConnectionCharacterSet=AL32UTF8
次の項では、ODBC.INI
ファイルのエントリについて説明します。
オプションのODBC Data Sourcesセクションの各エントリは、データソースおよび使用するドライバの記述が示されます。このデータソース・セクションの形式は、次のとおりです。
[ODBC Data Sources] DSN=driver-description
DSN
は必須で、ドライバが接続するデータソースを識別します。この名前を選択します。
driver-description
は必須です。これは、データソースに接続するドライバについての説明です。
オプションのData SourcesセクションがTimesTen ServerのシステムDSNファイルに含まれる場合、クライアントDSNの設定時に使用されます。すべてのシステムDSNは、TimesTen Serverで使用できるすべてのDSNを表示する、クライアントのODBC データソース アドミニストレータ用のクライアントDSN設定に使用できます。ユーザーは、いつでもODBC データソース アドミニストレータで新しいシステムDSNを追加できます。DSNをシステムDSNファイルに追加する場合は、クライアントに公開できるDSNのみを含めるようにしてください。すべてのシステムDSNは、公開されていないものも、クライアント/サーバー構成からアクセスできる場合があります。
ODBC Data Sourcesセクションに示される各DSNには、専用のDSN指定があります。Data Manager DSNのDSN指定の形式は、表1-3で示すとおりです。
表1-3 データ・ソース指定の形式
コンポーネント | 説明 |
---|---|
|
|
|
データソースとリンクされているTimesTen Data Managerドライバ。これが関連するのは、ドライバ・マネージャを使用している場合、またはクライアント/サーバーの使用例におけるサーバーの場合です。 |
|
アクセスできるデータベースのディレクトリ・パスと接頭辞です。これは必須です。 |
オプションの属性 |
属性の詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』の接続属性に関する説明を参照してください。 |
たとえば、sampledb_1121
というDSNの指定は、次のようになります。
[sampledb_1121] Driver=install_dir/lib/libtten.so DataStore=install_dir/info/DemoDataStore/sampledb_1121 ...
TimesTenクライアントDSNのデータベース指定は、表1-4で示す形式になっています。
注意: ここではTimesTenクライアントDSNの構文を示していますが、クライアントDSNおよびサーバーDSNの詳細な設定方法については、「サーバーDSNの定義」および「クライアントDSNの作成」を参照してください。 |
表1-4 TimesTen Clientを構成するデータベース指定
コンポーネント | 説明 |
---|---|
|
|
|
|
|
|
|
クライアント接続のタイムアウト値(秒)。 |
注意: ほとんどのTimesTen Data Manager属性は、TimesTen Clientデータベースでは無視されます。 |
たとえば、TimesTen Server ttserver
上のsampledb_1121
に接続するクライアント/サーバーのデータソースsampledbCS_1121
の場合、データソース指定は次のようになります。
[sampledbCS_1121] TTC_Server=ttserver TTC_SERVER_DSN=sampledb_1121 TTC_Timeout=30
次の例は、UNIXの.odbc.ini
ファイル(一部)を示します。
... [ODBC Data Sources] sampledb_1121=TimesTen 11.2.1 Driver ... [sampledb_1121] Driver=install_dir/lib/libtten.so DataStore=install_dir/info/DemoDataStore/sampledb_1121 PermSize=40 TempSize=32 PLSQL=1 DatabaseCharacterSet=US7ASCII ... ######################################################################## # This following sample definitions should be in the .odbc.ini file # that is used for the TimesTen 11.2.1 Client. # The Server Name is set in the TTC_SERVER attribute. # The Server DSN is set in the TTC_SERVER_DSN attribute. ######################################################################### [ODBC Data Sources] sampledbCS_1121=TimesTen 11.2.1 Client Driver ... [sampledbCS_1121] TTC_SERVER=localhost TTC_SERVER_DSN=sampledb_1121 ...
TimesTenアプリケーションでは、データベースに接続するためにDSNまたは接続文字列を指定する必要があります。モジュール性および保守を考えると、特定の接続で特定の属性設定によってDSN設定またはデフォルト設定を上書きする必要がある場合を除いて、属性はアプリケーション内の接続文字列ではなくDSNで設定することをお薦めします。
接続文字列の構文には、接続属性の定義が含まれます。ここでは各属性はセミコロンで区切られています。
DSN属性の設定を決定するには、次の優先ルールを使用します。
接続文字列で指定された属性設定は、優先度が最も高くなります。属性が接続文字列に複数回指定されている場合は、最初の指定が使用されます。
属性が接続文字列で指定されていない場合は、DSNで指定された属性設定が使用されます。
デフォルトの属性設定は、優先度が最も低くなります。
接続文字列に次のDriver
、DataStore
およびDatabaseCharacterSet
属性が含まれている場合は、ODBCアプリケーションまたはttIsql
ユーティリティを使用してDSNを事前に定義しなくても、TimesTenデータベースに接続できます。
Driver
属性を使用したODBCドライバの名前またはパス名
Windowsの場合、Driver
属性の値はTimesTen ODBCドライバの名前にする必要があります。たとえば、TimesTen Data Manager 11.2.1などです。
UNIXの場合、Driver
属性の値はTimesTen ODBCドライバの共有ライブラリ・ファイルのパス名にする必要があります。このファイルは、install_dir
/lib
ディレクトリにあります。
DataStore
属性を使用したデータベースのパス名およびファイル名の接頭辞
DatabaseCharacterSet
属性を使用したデータベースのキャラクタ・セット
次の例では、ttIsql
ユーティリティで接続文字列を使用して、Driver
、DataStore
およびDatabaseCharacterSet
属性を指定して接続する方法を示します。
C:\ ttIsql ttIsql <c> 1996-2009, Oracle. All rights reserved. Type ? or "help" for help, type "exit" to quit ttIsql. Command> connect "Driver=TimesTen Data Manager 11.2.1;DataStore=C:\sales\admin;DatabaseCharacterSet=US7ASCII";
TimesTenでは、データベースをメイン・メモリーにロードまたはアンロードするタイミングを決定するRAMポリシーを指定できます。RAMポリシーを設定するには、ttAdmin
ユーティリティを使用します。
データベースごとに個別のRAMポリシーを設定できます。ポリシー・オプションは次のとおりです。
In Use: データベースは、データベースへの最初の接続をオープンするとメモリーにロードされ、1つ以上の接続がオープンしているかぎり、メモリーに常駐したままになります。データベースへの最後の接続をクローズすると、データベースはメモリーからアンロードされます。これがデフォルトのポリシーです。
InUse with RamGrace: データベースは、データベースへの最初の接続をオープンするとメモリーにロードされ、1つ以上の接続がオープンしているかぎり、メモリーに常駐したままになります。データベースへの最後の接続をクローズすると、猶予期間中データベースはメモリーに常駐したままになります。データベースは、猶予期間中データベースに接続されているプロセスがない場合にのみメモリーからアンロードされます。猶予期間は、随時設定および再設定できます。猶予期間は、次に猶予期間が変更されるまで有効です。
Always: データベースはメモリーに常駐したままになります。データベースが常駐しているマシンをリブートすると、TimesTenデーモンの起動時(通常はマシンの起動時)にデータ・ベースがメモリーにリロードされます。
Manual: システム管理者が、ttAdmin
ユーティリティを使用して手動でデータベースのロードおよびアンロードを行います。
次の例では、ttdata
DSNで識別されたデータベースに対してRAMポリシーが「Always」に設定されています。
注意: 1列目を見ると、RAMレジデント・ポリシーが「Always」に設定されています。その他の出力には、ttAdmin ユーティリティで設定できる他のポリシーも示されています。詳細は、『Oracle TimesTen In-Memory Databaseリファレンス・ガイド』のttAdminに関する説明を参照してください。 |
% ttadmin –rampolicy always ttdata RAM Residence Policy : always Replication Agent Policy : manual Replication Manually Started : False Cache Agent Policy : manual Cache Agent Manually Started : False
TimesTenは、連続した単一のメモリー領域内に2つの個別のメモリー・パーティションを作成してデータベース領域を管理します。1つのパーティションには永続データが格納され、もう1つには一時データが格納されます。
永続データには、TimesTenデータベースを構成する表および索引が含まれます。データベースをメモリーにロードする際に、永続データ・パーティションの内容がディスク上のファイルから読み込まれます。永続データ・パーティションは、チェックポイント処理の際にディスクに書き込まれます。
一時データには、ロック、カーソル、コンパイルしたコマンド、およびコマンドの実行と問合せ評価に必要なその他の構造が含まれます。一時データ・パーティションは、データベースをメモリーにロードする際に作成され、データベースをアンロードする際に削除されます。
データベースがメモリーに格納されている場合にデータベースのサイズを制御する接続属性には、PermSize
およびTempSize
があります。PermSize
属性は永続データ・パーティションのサイズを指定し、TempSize
属性は一時データ・パーティションのサイズを指定します。
注意: これらの属性の詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』の接続設定に関する説明を参照してください。 |
永続データ・パーティションおよび一時データ・パーティションのサイズは、データベースをメモリーにロードする際に設定され、データベースがメモリーに格納されている間は変更できません。いずれかのパーティションのサイズを変更するには、メモリーからデータベースをアンロードし、PermSize
属性またはTempSize
属性の値を変更して再度接続する必要があります。
次の項では、データベースのサイズ管理およびアンロードについて説明します。
永続または一時のデータ・パーティションに空きがない場合は、データベースにプロシージャ、表または行を作成できません。データベースを正しいサイズにするには、PermSize
およびTempSize
接続属性に適切なサイズを設定します。
サイズを見積るには、ttSize
ユーティリティを使用するか、または適切な見積りが得られるまでアプリケーションを実行します。
データベースを保持できる十分な大きさの共有メモリー・セグメントがあることを確認する必要があります。通常、この共有メモリー・セグメントの最小サイズは、次の式で計算します。
PermSize + TempSize + LogBufMB + 20MB overhead
注意: 追加の共有セグメントを、PL/SQLの場合はPLSQL_MEMORY_SIZE を使用して作成し、クライアント/サーバーの場合は-serverShmSize デーモン・オプションを使用して作成できます。 |
PermSizeに割り当てる量を計算する場合は、PL/SQLのプロシージャ、関数およびパッケージによって永続データ・パーティション内の領域が使用される点を考慮に入れてください。ストアドPL/SQLユニットが必要とする永続データ・パーティションの量は、ユニットのサイズと複雑さによって決定されます。小さいプロシージャに必要な量は3KBより少ない可能性がありますが、大きいプロシージャではより多い量が必要となる可能性があります。平均すると、適度に複雑なユニットでは約20KBの永続データ・パーティション領域が使用されます。
詳細は、『Oracle TimesTen In-Memory Databaseインストレーション・ガイド』のインストールの前提条件に関する説明および『Oracle TimesTen In-Memory Databaseリファレンス』のTempSizeおよびPermSize属性に関する説明を参照してください。
いずれのパーティションのサイズを変更する場合も、先にメモリーからデータベースをアンロードし、データベースへのアクティブな接続をすべてクローズし、データベースのRAMポリシーを「manual」
または「inUse」
に設定する必要があります。
メモリーからデータベースをアンロードするには、ttStatus
ユーティリティを使用してデータベースに接続されているプロセスを検出し、検出されたプロセスを停止します。データベースのサイズ変更の完了後、データ・ストアをメモリーにリロードします。
ただし、レプリケーション用に構成されているデータベースについては、キャッシュ・エージェントおよびレプリケーション・エージェントが動作中の場合はそれらを停止します。データベースのすべてのレプリカに対してデータベースのサイズを再構成します。データベースのサイズを変更した後、データベースをメモリーに読み取り、キャッシュ・エージェントおよびレプリケーション・エージェントを再起動します。
RAMポリシーを「manual」
または「inUse」
に設定する方法は、「RAMポリシーの指定」を参照してください。
TimesTenのSYS.MONITOR
表には、PermSize
とTempSize
の使用状況の監視に使用できるいくつかの列があります。具体的には、PERM_ALLOCATED_SIZE
、TEMP_ALLOCATED_SIZE
、PERM_IN_USE_SIZE
、PERM_IN_USE_HIGH_WATER
、TEMP_IN_USE_SIZE
およびTEMP_IN_USE_HIGH_WATER
の各列です。これらの各列には、データベースに現在割り当てられているサイズや、データベースの使用中のサイズがKB単位で表示されます。この情報は、接続が確立または解放されるたび、およびトランザクションがコミットまたはロールバックされるたびにシステムによって更新されます。
データベースの断片化は、ttBlockInfo
組込みプロシージャを使用してブロック・レベルで監視できます。詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』のttBlockInfoに関する説明を参照してください。
TimesTenには、メモリー不足の警告を発行するタイミングを指定するPermWarnThreshold
およびTempWarnThreshold
の2つの一般接続属性が用意されています。いずれの属性も、パーセントで値を指定します。
メモリー不足の警告を受信するには、アプリケーションで組込みプロシージャttWarnOnLowMemory
をコールする必要があります。
また、これらの属性によって、SNMP警告のしきい値も設定されます。『Oracle TimesTen In-Memory Databaseエラー・メッセージおよびSNMPトラップ』のSNMPトラップを使用した診断に関する説明を参照してください。
次のユーティリティを使用すると、データベースの既存の表の特定部分を管理できます。
既存の表への行データの追加。ttBulkCp
ユーティリティを使用します。データをASCIIファイルに保存して、ttBulkCp
ユーティリティを使用すると、TimesTenデータベースの表に行データをロードできます。
追加する行には、表と同じ列数を含める必要があります。 また、各列のデータは、その列に定義されているデータ型である必要があります。
ttBulkCp
ユーティリティはASCIIファイルに保存されたデータに対して処理を行うため、列数とデータ型がTimesTenデータベースの表の列数とデータ型と一致し、検出されたファイルがttBulkCp
と互換性を持っている場合、このユーティリティを使用して他のアプリケーションからデータをインポートすることもできます。
データベース内の表の所有者の名前変更。ttMigrate
ユーティリティを使用します。表のリストア時に、-rename
オプションを使用して表の所有者の名前を変更します。
次の項では、データベースの管理方法について説明します。
データベースのコピー、リストアおよび移行用のTimesTenユーティリティでは、次の処理を実行できます。
TimesTenのリリース間でのデータベースの移行。ttMigrate
ユーティリティを使用します。このユーティリティは、TimesTenデータベースの表および索引をバイナリ・ファイルに保存します。その後、それらの表および索引は、別のTimesTenデータベースにリストアできます。これによって、TimesTenのリリース間でのデータの移行が可能になります。
異なるハードウェア・プラットフォーム間でのデータベースの移行。ttBulkCp
ユーティリティを使用して、データを保存およびリストアします。ttBulkCp
ユーティリティは、TimesTenの表とASCIIファイルの間でデータをコピーします。ただし、これはユーティリティを実行するユーザーが所有するオブジェクト、および所有者がSELECT
権限を持っているオブジェクトの場合のみです。
ttBulkCp
ユーティリティを使用すると、データベース間で1つの表をコピーできます。これは、リリース番号が違うTimesTenのデータベース間や異なるハードウェア・プラットフォーム上のデータベース間でも可能です。
ttSchema
ユーティリティは表の定義を保存します。ttIsql
を使用すると、保存した表の定義から表を再作成できます。
データベースのスナップショット作成、および同じ状態でのデータベースのリストア。ttBackup
およびttRestore
ユーティリティを使用するか、またはttBackup
およびttRestore
C関数を使用します。
TimesTenのバックアップおよびリストア機能を使用すると、TimesTenデータベースのバックアップを作成し、データベースのリストアが可能になります。バックアップおよびリストア機能は、主に、失われた最新の状態のデータベースをリストアするために使用します。
注意: TimesTenのバックアップおよびリストア機能の使用方法の詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』のttBackupおよびttRestoreに関する説明を参照してください。 |
すべてのデータベースのバックアップには、バックアップ・ポイント(バックアップを開始した時点)で存在していたとおりにデータベースをリストアするために必要な情報が含まれています。指定したバックアップからデータベースをリストアすると、バックアップ・ポイント前にコミットしたすべてのトランザクションの変更がリストアされます。
バックアップ処理は原子的な処理です。成功すると、データベースをそのバックアップ・ポイントの状態にリストアするために使用可能なバックアップが生成されます。なんらかの理由で失敗すると、既存のバックアップが存在する場合はそれがそのままの状態で残り、バックアップ・ポイントは変更されません。
TimesTenは、バックアップ・パスで指定した場所にデータベースのバックアップを書き込みます。このパスは、ディレクトリ名およびオプションのベース名で構成されます。バックアップの作成時には、バックアップ・ディレクトリおよびベース名を指定する必要があります。ベース名を指定しない場合は、デフォルトでデータベースのベース名がベース名に設定されます。
注意: バックアップ・ディレクトリの内容は手動で変更しないでください。バックアップ・ディレクトリ内のいずれかのファイルを追加、削除または変更(ttBackup およびttRestore による変更は除く)すると、バックアップの整合性が損なわれ、このバックアップからデータベースをリストアできなくなる場合があります。 |
TimesTenでは、全体バックアップと増分バックアップの両方がサポートされます。また、TimesTenでは、ストリーム・バックアップも可能です。
ストリーム: ストリーム・バックアップでは、データベースのバックアップ・ファイルがstdout
に書き込まれます。
全体: 全体バックアップでは、データベース全体が保存されます。全体バックアップの場合、新しいバックアップが作成されるまで、既存のバックアップおよび新しいバックアップの両方を保持できる十分なディスク領域が必要です。
増分: 増分バックアップでは、同一のデータベースに既存する増分可能バックアップが増補されます。増分バックアップは、バックアップを最後のバックアップ・ポイント以降に作成されたすべてのトランザクション・ログ・レコードで増補することによって、バックアップ・ポイントを後の時点まで進めます。
通常、増分バックアップは、全体バックアップよりコピーするデータ量が少ないため、処理が早く完了します。増分バックアップでは、ディスク使用率を増加し、リストアにかかる時間を長くすることによって全体バックアップより高いパフォーマンスが実現されています。増分バックアップは、バックアップにかかる時間、ディスク使用率、リストアにかかる時間のバランスを考慮し、全体バックアップと組み合せて使用してください。
増分バックアップを実行するには、事前に、バックアップで増分バックアップを有効にする必要があります。これには、-fileFullEnable
または-fileIncrOrFull
オプションを指定してttBackup
ユーティリティ・コマンドを実行します。どちらの場合も、これまで増分バックアップを有効にしたことがない場合は、ファイルの全体バックアップを実行してから、その後の増分バックアップ用に増分バックアップを有効にします。TimesTenでは、データベースごとに最大8つの増分可能バックアップ・インスタンスがサポートされています。9番目の増分バックアップを開始しようとすると、エラーが発生します。
増分バックアップが有効か無効かにかかわらず、バックアップからデータベースをリストアすると、リストアされたデータベースの増分バックアップは無効になります。このため、増分バックアップを実行する場合、-fileFullEnable
または-fileIncrOrFull
オプションを指定してttBackup
ユーティリティ・コマンドを再度実行し、増分バックアップを有効にする必要があります。
特定のバックアップ・パスに格納されている、特定のデータベースのバックアップ情報が含まれている一連のファイルは、バックアップ・インスタンスと呼ばれます。バックアップ・インスタンスは、増分バックアップに対して明示的に使用可能にする必要があります。
既存のバックアップ・ファイルは、全体バックアップまたは増分バックアップの失敗によって変更される場合があります。 ただし、これによって、これらのファイルからデータ・ストアをリストアできなくなることはありません。
TimesTenでサポートされるバックアップのタイプには次のものがあります。
バックアップ・タイプ | ファイルまたはストリーム | 全体または増分 | 増分可能 | コメント |
---|---|---|---|---|
fileFull | ファイル | 全体 | いいえ | デフォルト |
fileFullEnable | ファイル | 全体 | はい | |
fileIncremental | ファイル | 増分 | はい | 増分バックアップが不可の場合は失敗します。 |
fileIncrOrFull | ファイル | どちらか | はい | fileIncrementalが可能な場合はfileIncrementalを、不可の場合はfileFullEnableを実行します。 |
streamFull | ストリーム | 全体 | いいえ | |
incrementalStop | なし | なし | いいえ | バックアップは作成せず、単に既存の増分可能バックアップを無効にします。 |
TimesTenでは、データベースへのマルチスレッド・アプリケーション・アクセスがサポートされています。データベースに接続すると、すべてのスレッドで、この接続に対する処理を発行できます。
通常、スレッドは、スレッド固有の接続に対して処理を発行します。 したがって、他のすべてのスレッドでは別のトランザクションが存在します。スレッドの作成および削除が頻繁に行われる環境では、接続をプールにまとめて保持することでパフォーマンスを向上できます。スレッドは、必要に応じてこのプールから接続を割り当てて、接続および切断によるオーバーヘッドを回避できます。
TimesTenでは、複数のスレッドで同じ接続に対してリクエストを発行できるため、トランザクションにリクエストが混在します。これらのリクエストは、TimesTenによってシリアライズされます。 ただし、アプリケーションによっては、独自のシリアライズが必要な場合があります。
また、TimesTenは、1つのスレッドで複数の接続にリクエストを出したり、同一のデータベースまたは異なるデータベースに対して、複数の個別トランザクションおよび同時トランザクションを制御することができます。