オラクルとの接続を最適化するミドルウェアです。
FastConnectorのページにアクセスして試用プログラムをダウンロードする。
サーバプログラムとして、Windows-NT/Linuxを使用することができる。今回はサーバはLinux版を使用。
C:\>start http://www.fastconnector.com
FastConnectorサーバをインストール。添付のドキュメントを読んでインストールを行う。インストールディレクトリを変更しないのであれば、下記の用になる。
[fcs@fastconnector]$ su - Password: [root@fastconnector /root]# cd /tmp/ [root@fastconnector /tmp]# tar zxvf fcs21_linux.tgz fcsinstall fcsvo21 install.doc license.txt [root@fastconnector /tmp]# ./fcsinstall FastConnectorServer Installer FastConnectorServer Home Directory /usr/fcs :[y/n] y [root@fastconnector /tmp]#
マシン起動時に起動したい場合はインストールマニュアルを参照。NLS_LANGはクライアント側のNLS_LANG設定を行う。FastConnectorクライアントはWindows版しか現状ないので、ORACLE_HOME以外がほとんどそのままでOK。
#!/bin/sh
FCS_HOME=/usr/fcs/
export FCS_HOME
FCS_DATE_FORMAT=YYYY/MM/DD
export FCS_DATE_FORMAT
ORACLE_HOME=/oraora/oracle/product/8.0.5
export ORACLE_HOME
ORACLE_SID=ORCL
export ORACLE_SID
NLS_LANG=japanese_japan.JA16SJIS
export NLS_LANG
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
export LD_LIBRARY_PATH
PATH=$PATH:/bin
export PATH
case $1 in
start_msg)
echo "Start FastConnectorServer for Oracle8.0.5 daemon"
exit 0
;;
stop_msg)
echo "Stopping FastConnectorServer for Oracle8.0.5 daemon"
exit 0
;;
start)
$FCS_HOME/fcsvo21 -startup
exit 0
;;
stop)
$FCS_HOME/fcsvo21 -shutdown
exit 0
;;
*)
echo "USAGE: $0 {start_msg | stop_msg | start | stop}" >&2
exit 1
;;
esac
マシン起動時に起動したい場合はインストールマニュアルを参照。コンソールで起動すると、現状はShift_JISのメッセージがでるが気にしない。
[root@fastconnector fcs]# /usr/fcs/fcsstart start FastConnectorServer 2.1 for Oracle8の起動に成功しました。
コンソールで停止すると、現状はShift_JISのメッセージがでるが気にしない。
[root@fastconnector fcs]# /usr/fcs/fcsstart stop FastConnectorServer 2.1 for Oracle8の停止に成功しました。
クライアントのセットアップを行う。ダウンロードしたファイルを解凍して、setup.exeを起動して指示に従う。下記ディレクトリが作成されます。dll_backupには、置き換えたDLLを格納しています。
クライアントからFastConnectorサーバへの接続を確認する。VCのサンプルプログラムVC Connectで接続を確認してみる。
接続がうまくいった場合、
接続が失敗した場合、
接続に失敗した場合は、
現段階(Fri Nov 17 00:51:48 JST 2000)で確認しているサンプルは以下のDelphi/VB/VC共に、11種類です。何れも実行形式とソースが付属しています。実行形式は実行すると文字化けとかあったりしますが、ソースからコンパイルしなおせば大丈夫のようです。これは、ランタイムによるみたいです。
| アプリケーション名 | アプリケーションファイル名 | アプリケーション説明 |
|---|---|---|
| connect | \Digital Design\FCOwin\sample\prj\Vb\connect | FastConnectorを使用しての接続と切断 |
データベースオブジェクトを二箇所で宣言しているサンプルがありますので、bascom.basの方を正としておいた方がよいです。
Attribute VB_Name = "basCom" Public gDB As FCO 'データベースオブジェクト
サンプルは、リファレンスの補助の形でみるとよいでしょう。
FastConnectorのメソッド、特にハンドル操作について操作を押さえる必要がある。
| FCSメソッド分類 | FCSメソッド機能 | FCSメソッド名 | FCSメソッドサンプル名 | FCSハンドル確保 | FCSハンドル開放 | FCSハンドル特記事項 |
|---|---|---|---|---|---|---|
| データベースへの接続/切断 | データベースをオープンする | Connect | Connect | none | none | none |
| データベースへの接続/切断 | データベースをクローズする | Disconnect | Disconnect | none | none | none |
| 選 択(参照系) | データを1件選択する | SelectFirst | SelectFirst | 実行前必ず必要 | Get系メソッド実行後必ず必要 | none |
| 選 択(参照系) | 次のデータを1件選択する | SelectNext | SelectNext | 実行前必ず必要 | Get系メソッド実行後必ず必要 | none |
| 選 択(参照系) | SQL文を直接実行してデータを1件選択する | SelectFirstDirect | SelectFirstDirect | 実行前必ず必要 | Get系メソッド実行後必ず必要 | OO4O移行時に使用する |
| 選 択(参照系) | データをN件選択する | SelectFix | SelectFix | 実行前必ず必要 | Get系メソッド実行後必ず必要 | none |
| 選 択(参照系) | 指定行以降のデータをN件選択する | SelectFixRandom | SelectFixRandom | 実行前必ず必要 | Get系メソッド実行後必ず必要 | none |
| 選 択(参照系) | SQL文を直接実行してデータをN件選択する | SelectFixDirect | SelectFixDirect | 実行前必ず必要 | Get系メソッド実行後必ず必要 | OO4Oの移行時に使用する |
| 選 択(参照系) | データを全件選択する | SelectAll | SelectAll | 実行前必ず必要 | Get系メソッド実行後必ず必要 | none |
| 選 択(参照系) | SQL文を直接実行してデータを全件選択する | SelectAllDirect | SelectAllDirect | 実行前必ず必要 | Get系メソッド実行後必ず必要 | none |
| 選 択(参照系) | ユーザーが利用可能なテーブルを選択する | SelectTables | SelectTables | 実行前必ず必要 | GetTableName実行後必ず必要 | none |
| 取 得(取得系) | 行とカラムを指定してバッファからデータを取得する | GetRowCol | SelectAll | select系メソッドの前に必要 | Get系を後で実行しなければ必ず開放 | select系で確保したハンドルを指定する |
| 取 得(取得系) | バッファからカラムの名称を取得する | GetColName | SelectAll | select系メソッドの前に必要 | Get系を後で実行しなければ必ず開放 | select系で確保したハンドルを指定する |
| 取 得(取得系) | バッファからカラムのサイズを取得する | GetColSize | SelectAll | select系メソッドの前に必要 | Get系を後で実行しなければ必ず開放 | select系で確保したハンドルを指定する |
| 取 得(取得系) | バッファからカラムのタイプを取得する | GetColType | SelectAll | select系メソッドの前に必要 | Get系を後で実行しなければ必ず開放 | select系で確保したハンドルを指定する |
| 取 得(取得系) | カラムNull許可属性の取得 | GetColNullOK | SelectAll | select系メソッドの前に必要 | Get系を後で実行しなければ必ず開放 | select系で確保したハンドルを指定する |
| 取 得(取得系) | カラム精度の取得 | GetColPrecision | SelectAll | select系メソッドの前に必要 | Get系を後で実行しなければ必ず開放 | select系で確保したハンドルを指定する |
| 取 得(取得系) | カラムスケールの取得 | GetColScale | SelectAll | select系メソッドの前に必要 | Get系を後で実行しなければ必ず開放 | select系で確保したハンドルを指定する |
| 取 得(取得系) | バッファからカラム数の取得する | Cols | SelectAll | select系メソッドの前に必要 | Get系を後で実行しなければ必ず開放 | select系で確保したハンドルを指定する |
| 取 得(取得系) | バッファからデータ件数の取得する | Rows | SelectAll | select系メソッドの前に必要 | Get系を後で実行しなければ必ず開放 | select系で確保したハンドルを指定する |
| 取 得(取得系) | バッファからユーザが利用可能なテーブル名称を取得する | GetTableName | SelectAll | select系メソッドの前に必要 | Get系を後で実行しなければ必ず開放 | select系で確保したハンドルを指定する |
| 取 得(取得系) | 与えられた条件の対象データ件数を取得する | RecCnt | SelectAll | select系メソッドの前に必要 | Get系を後で実行しなければ必ず開放 | select系で確保したハンドルを指定する |
| 取 得(取得系) | SQL文の取得 | GetSQL | SelectAll | none | none | 指定されたハンドルステートで最後に実行されたSQL文を取得、ハンドルが開放されていてもOK |
| 取 得(取得系) | 行列を指定してデータがNullかチェックする | GetRowColIsNull | SelectAll | select系メソッドの前に必要 | Get系を後で実行しなければ必ず開放 | VARCHAR2の場合、空とNULLの区別なし |
| トランザクション処理 | トランザクション処理の開始を宣言する | BeginTran | none | none | none | データベース単位で処理を行う |
| トランザクション処理 | トランザクション処理を確定する | Commit | none | none | none | データベース単位で処理を行う |
| トランザクション処理 | トランザクション処理を取り消す | RollBack | none | none | none | データベース単位で処理を行う |
| 更 新(更新系) | データを更新する | Update | update | select系と同じハンドルは操作できません。必ず更新系でハンドルを取得。 | none | none |
| 更 新(更新系) | データを挿入する | Insert | update | select系と同じハンドルは操作できません。必ず更新系でハンドルを取得。 | none | none |
| 更 新(更新系) | データを削除する | Delete | update | select系と同じハンドルは操作できません。必ず更新系でハンドルを取得。 | none | none |
| 更 新(更新系) | SQL文を直接実行する | Execute | update | select系と同じハンドルは操作できません。必ず更新系でハンドルを取得。 | none | バインドバッファ使用時は、ハンドルの開放が行われない。 |
| 更 新(更新系) | バインドバッファの生成 | BindArray | update | none | 更新系、select系実行後、明示的に行う必要がある。 | none |
| 更 新(更新系) | 行列を指定してデータ文字列をセットする | SetRowCol | update | none | 更新系、select系実行後、明示的に行う必要がある。 | BindArray実行後 |
| 更 新(更新系) | 行列を指定してNULLをセットする | SetRowColNull | update | none | 更新系、select系実行後、明示的に行う必要がある。 | BindArray実行後 |
| ハンドルステートメント | 空いているハンドルステートメントを取得する | GetHstmt | update | none | none | none |
| ハンドルステートメント | ハンドルステートメントの解放する | EndHstmt | update | none | none | none |
| 製品情報の取得 | 製品情報を取得する | GetProductInfo | update | none | none | none |
| エラーメッセージを取得 | エラーメッセージを取得する | GetErrorMsg | update | none | none | メソッドは全て戻り値があるので必ずチェックする。 |
対応表を作成する予定です。
簡単に移行が可能そうなもの。
移行が面倒そうなもの。
移行の際に注意しないと行けないのは、ハンドル操作です。OO4Oではこの辺が隠れていたのですが、FCSでは、うまい具合に使用しないといけません。よくあるパターンとしては、選択系と更新系と別に分けてハンドルを意識して操作する必要があります。
| fcsinstall | |
| FastConnector | 2-2 2-3 2-7 3 3-2 |
| NLS_LANG | 2-3 2-3 |
| ベンチマーク | 5 5 |
| ORACLE_HOME | 2-3 |