Distributed Tuning Interface Guide
 
このページをシェアする                  
Distributed Tuning Interface Guide
以下のトピックでは、Zen Distributed Tuning Interface について紹介します。
Distributed Tuning Interface の概要
DTI の基本的な使用法
DTI のサンプル プログラム
DTI を使用する一般的なタスク
Distributed Tuning Interface のリファレンスへ直接移動して、Zen で DTI を使用する方法の詳細を参照することもできます。
Distributed Tuning Interface の概要
Distributed Tuning Interface(DTI)の目的は、Zen コンポーネントの設定、監視、および診断のためのアプリケーション プログラミング インターフェイスを提供することにあります。
メモ:簡潔にするため、本ドキュメントのこれ以降、全体を通して Distributed Tuning Interface は DTI と記載します。
文字列引数のエンコード
ユーザー アプリケーションは、API レベルではクライアントの OS エンコードを使用します。DTI は、サーバーおよびクライアント上の OS エンコード間の相違について内部的に対処します。
古いバージョンのクライアントがサーバーと通信している場合、データベース エンジンでは、そのクライアントで使用しているエンコードとサーバーで使用可能なエンコードに互換性があるものと想定しています。
API カテゴリ
利用可能な API のカテゴリは、表 2DTI 関数グループに要約されています。
実行権限
通常、DTI アプリケーションでしたいことと言えば、DTI 関数のいずれかを呼び出すことと、すべての設定を表示したり変更したりすることでしょう。このフル アクセスを確保するには、サーバー マシン上で管理者レベルの権限を持つユーザーの名前とパスワードを提供することにより、サーバーに接続します。これは、DTI アプリケーションがターミナル サービス セッションを介してローカルで実行されている場合、あるいはリモートで実行されている場合に適用されます。ローカルで実行されているアプリケーションでは、ユーザー名とパスワードを省略できます。省略しても、任意の DTI 関数の呼び出しや、すべての設定の表示および変更は行えます。DTI を使ってサーバーへの接続を行うを参照してください。
管理者レベルの権限がない場合、ターミナル サーバー セッションを介してローカルで実行されているアプリケーションやリモートで実行されているアプリケーションは、ほとんどの DTI 関数に対してアクセス エラーを返します。関数のサブセットのみが動作します。たとえば、フル アクセスが許可されている場合に設定を変更できる関数の多くは、読み取り専用のアクセスに制限されます。
DTI の基本的な使用法
ヘッダー ファイル
DTI 関数は次のヘッダー ファイルに定義されています。
btitypes.h
catalog.h
config.h
connect.h
ddf.h
dticonst.h
dtilicense.h
dtisecurity.h
monitor.h
リンク ライブラリ
次の表は、DTI のリンク ライブラリと、そのライブラリが最初に利用できるようになったリリース バージョンの一覧です。表で定義されているように、アプリケーションを適切なライブラリにリンクします。
表 1 Windows、Linux、および macOS 用の DTI リンク ライブラリ
ライブラリ1
Windows
Linux
macOS
ライブラリを最初に利用可能なバージョン
w3dbav90.lib2
32 ビット
 
 
PSQL v9.0
w64dba.lib
64 ビット
 
 
PSQL v10.0
w3dbav80.lib2
32 ビット
 
 
Pervasive.SQL V8.0
w3dbav78.lib2
32 ビット
 
 
Pervasive.SQL 2000i (SP3)
w3dbav75.lib2
32 ビット
 
 
Pervasive.SQL 2000
libpsqldti.so
 
32 ビット
 
Pervasive.SQL V8.6
libpsqldti.so
 
64 ビット
 
PSQL 10.10
libpsqldti.dylib
 
 
64 ビット
PSQL v12.01
1 ライブラリはすべて Microsoft Visual Studio 2015 でコンパイルされています。
2 各 32 ビット ライブラリは、それ以前のライブラリの上位集合です。たとえば、w3dbav90.lib は w3dbav75.lib、w3dbav78.lib、および w3dbav80.lib の上位集合です。
DTI の関数については、Distributed Tuning Interface のリファレンスで説明します。
関数を呼び出す前に
DTI を呼び出す場合は、まず PvStart() 関数を呼び出す必要があります。その後、セッションを終了するまでに複数の DTI 関数を呼び出すことができます。
セッションを終了するときは、PvStop() 関数を呼び出してセッションを閉じる必要があります。
DTI のサンプル プログラム
DTI アクセス方法のためのランタイム ファイルは、デフォルトで Zen データベース エンジンおよび Zen クライアントと一緒にインストールされます。DTI アプリケーションを作成するためには、少なくとも Zen クライアントが必要です。
ヘッダー ファイルとサンプル ファイルは AG-TECH PSQL Library からダウンロードできます。特定の開発環境に関するサンプル ファイルは、次の表に示すように別々のディレクトリにインストールされます。
開発環境
場所
MS Visual C++ 8
<インストール ディレクトリ>\SAMPLES\MSVC2005
MS Visual C++ 7
<インストール ディレクトリ>\SAMPLES\MSVC2003
MS Visual C++ 6
<インストール ディレクトリ>\SAMPLES\MSVC
Delphi 5
<インストール ディレクトリ>\SAMPLES\DELPHI5
詳細については、Zen データベース エンジンと一緒にインストールされる DTI 用のリリース ノート(readme_dti.htm)を参照してください。
DTI を使用する一般的なタスク
ここでは、DTI でよく使用される主要なタスクを説明します。
DTI を使ってサーバーへの接続を行う
サーバーへの接続ハンドルを取得する手順を説明します。多くの DTI 関数にとって、これは最初の手順です。
サーバーへの接続ハンドルを取得するには
1 DTI セッションを開始します。
// 返されるステータス コードを初期化する
BTI_LONG status = 0;
// 予約済みのパラメーターを使って PvStart 関数を
// 呼び出す
status = PvStart(0);
2 サーバーに接続します。
// 変数を初期化する
BTI_LONG status = 0;
BTI_CHAR_PTR uName = "jsmith";
BTI_CHAR_PTR pword = "123";
BTI_CHAR_PTR svrName = "myserver";
BTI_LONG hConn = 0xFFFFFFFF;
// 実行後、hConn にはほかの関数へ渡すための
// 接続ハンドルが格納される
status = PvConnectServer(svrName, uName, pword, &hConn);
// status が 0 でない場合は、ここでエラー処理を行う
接続ハンドルは多くの DTI 関数で必要となります。同時に複数の接続を開くことができます。ただし、それぞれの接続または関数について、PvDisconnect() 関数を呼び出してハンドルを解放する必要があります。
status = PvDisconnect(phConn);
DTI を使って設定 ID を取得する
設定関数の多くは、パラメーターとして設定 ID を使用します。次の手順は、設定 ID を取得するために必要不可欠な関数について説明します。
特定の設定の ID を取得するには
1 接続ハンドルを取得するために、DTI を使ってサーバーへの接続を行うの手順を実行します。
2 PvConnectServer() で返された接続ハンドルを使って PvGetCategoryList() を呼び出し、カテゴリの一覧を取得します。
3 各カテゴリについて、設定の一覧および設定数をそれぞれ PvGetSettingList()PvGetSettingListCount() を使って取得します。
4 必要な設定を精査します。
5 PvGetSettingInfo() を使って、設定についての情報を取得します。
6 完了したら、PvDisconnect() を呼び出してサーバーから切断します。
7 PvStop() を呼び出して DTI セッションを終了します。
DTI 構造体をパラメーターとして渡す
多くの関数で、関数呼び出しを行うときに DTI 構造体を渡すことが要求されます。以下のサンプル コードでは、構造体を含む関数呼び出しの例を示します。DTI 構造体の詳細については、DTI 構造体を参照してください。
WORD rValue = P_OK;
TABLEMAP* tableList;
WORD tableCount;
rValue = PvGetTableNames(m_DictHandle, &tableList, &tableCount);