UNIX® システムでの ODBC のインストールと検証
以下のセクションでは、UNIX® および関連オペレーティング・システムでの ODBC のインストールと検証に関する詳細な情報を提供します。
-
スタンドアロン・インストールの実行 — InterSystems ODBC クライアント・ドライバとサポートされるドライバ・マネージャの UNIX® へのインストール。
-
InterSystems ODBC クライアント・ファイル — インストールされる重要なコンポーネントの具体的なファイル名。
-
UNIX® および関連プラットフォーム向け SQL ゲートウェイ・ドライバ — サードパーティのドライバで SQL ゲートウェイを実行するのに必要なライブラリについて説明します。
-
iODBC のカスタム・インストールと構成 — iODBC ドライバ・マネージャのインストールと構成、およびiODBC のための PHP の構成。
-
共有オブジェクトの依存関係に関するトラブルシューティング — 共有オブジェクトの依存関係の確認方法。
スタンドアロン・インストールの実行
InterSystems の標準インストールでは、既定で ODBC の完全インストールが実行されます。カスタム・インストール ("インストール・ガイド" で説明) を実行する場合は、“[SQL クライアントのみ]” オプションを選択して、クライアント・アクセス・コンポーネント (ODBC クライアント・ドライバ) のみをインストールできます。
ただし、InterSystems ODBC 用のスタンドアロン・インストーラも提供されています。このインストーラを使用するには、以下の手順に従います。
-
クライアントをインストールするディレクトリ (/usr/irisodbc/ など) を作成します。
-
作成したディレクトリに、適切な zip 圧縮 tar ファイルをコピーします。
./dist/ODBC/ ディレクトリには、以下のような名前の zip 圧縮 tar ファイルが含まれます。
ODBC-release-code-platform.tar.gz
release-code はリリース固有のコード (InterSystems のバージョンとリリースによって異なります)、platform は ODBC クライアントが実行されるオペレーティング・システムを示します。
-
作成したディレクトリに移動して、以下のように手動で .tar ファイルをアンパックします。
# gunzip ODBC-release-code-platform.tar.gz # tar xvf ODBC-release-code-platform.tar
bin ディレクトリと dev ディレクトリが作成され、ファイルのセットがインストールされます。
-
作成したディレクトリにある ODBCInstall プログラムを実行します。このプログラムは、複数のサンプル・スクリプトを作成し、mgr ディレクトリで irisodbc.ini を構成します。以下に例を示します。
# pwd /usr/irisodbc # ./ODBCInstall
一部のリリースでは、./dist/ODBC/ ディレクトリに、必要なファイルを識別するプラットフォーム名を表示するために以下のコマンドが含まれます。
# ./cplatname identify
このコマンドは、このコマンドが必要ないリリースには存在しません。
UNIX® および関連プラットフォーム向け SQL ゲートウェイ・ドライバ
UNIX ODBC ドライバは、特定のドライバ・マネージャ (iODBC または unixODBC) に対してコンパイルされます。例えば、InterSystems ODBC ドライバには、ドライバ・マネージャごとのバージョンがあります ("InterSystems ODBC クライアント・ファイル" を参照)。これらのドライバには、同じドライバ・マネージャにリンクされているサポート・ライブラリが必要です。インターシステムズでは、さまざまなサードパーティ・ドライバに適した odbcgateway ライブラリをいくつか提供しています。<install-dir>/bin/ ディレクトリには、InterSystems SQL ゲートウェイによって使用される以下のバージョンの共有オブジェクトが格納されています。これにより、InterSystems IRIS から他の ODBC クライアント・サーバへの接続が可能になります。スタンドアロン ODBC インストールを実行する場合、既定ではこれらのファイルはインストールされません。
iODBC ドライバ・マネージャにリンク
-
odbcgateway.so — 8 ビット ODBC をサポートします。
-
odbcgatewayiw.so — Unicode ODBC をサポートします。
unixODBC ドライバ・マネージャにリンク
-
odbcgatewayu.so — 8 ビット ODBC をサポートします。
-
odbcgatewayur64.so — 64 ビット unixODBC 用に 8 ビット ODBC をサポートします。
unixODBC サポート付きでコンパイルされたサードパーティのデータベース・ドライバ (MS SQL Server ODBC ドライバなど) をインストールする場合、odbcgateway.so をバックアップして、odbcgatewayur64.so の名前を odbcgateway.so に変更する必要があります。
詳細は、“ODBC データ・ソースとしての InterSystems データベースの使用法 (UNIX®)” を参照してください。
UNIX® システムでサードパーティ製共有ライブラリを使用する場合は、InterSystems IRIS LibPath パラメータを設定して LD_LIBRARY_PATH を定義する必要があります ("構成パラメータ・ファイル・リファレンス" の “LibPath” を参照してください)。これは、特権を持たないユーザがパスを変更できないようにするためのセキュリティ対策です。
InterSystems ODBC クライアント・ファイル
構成のニーズによっては、インストールされているコンポーネントの特定のファイル名を知っておくと便利な場合があります。次のリストでは、install-dir は InterSystems インストール・ディレクトリ (ご使用のシステムで $SYSTEM.Util.InstallDirectory() が返すパス) です。
install-dir/bin/ ディレクトリには、以下のドライバ・マネージャが格納されています。
-
libiodbc.so — iODBC ドライバ・マネージャです。8 ビット ODBC API と Unicode ODBC API の両方をサポートします。
-
libodbc.so — unixODBC ドライバ・マネージャです (ODBC 8 ビット API で使用)。
ODBC 仕様のリリース間で、SQLLen や SQLULen などのさまざまなデータ型が 32 ビット値から 64 ビット値へと変わりました。これらの値は、iODBC ではこれまでも常に 64 ビットでしたが、unixODBC では 32 ビットから 64 ビットに変わりました。unixODBC バージョン 2.2.14 以降、既定のビルドでは 64 ビットの整数値が使用されます。InterSystems ドライバは、32 ビット unixODBC と 64 ビット unixODBC の両方で使用できます。
インターシステムズは ODBC 2.5 クライアント・ドライバの配布を終了しましたが、ODBC 3.5 バージョンでは 3.5 の要求が 2.5 に自動的に変換されます。install-dir/bin/ ディレクトリには、以下のバージョン (*.so または *.sl) が格納されています。
-
libirisodbc35 — 8 ビット ODBC 3.5 をサポートします。
-
libirisodbciw35 — Unicode ODBC 3.5 をサポートします。
-
libirisodbciw.dylib — MAC OS 用の Unicode ODBC をサポートします。
-
libirisodbcu35 — 8 ビット ODBC 3.5 をサポートします。
-
libirisodbcur6435 — 64 ビット unixODBC 用に 8 ビット ODBC 3.5 をサポートします。
iODBC のカスタム・インストールと構成
カスタム化された条件のもとで運用するために、独自の iODBC ドライバ・マネージャを構築することが可能です。iODBC 実行可能ファイルおよびインクルード・ファイルは、install-dir/dev/odbc/redist/iodbc/ ディレクトリにあります。これらのディレクトリを使用してアプリケーションを構築するには、LD_LIBRARY_PATH (AIX® では LIBPATH) とインクルード・パスを設定する必要があります。
iODBC ドライバ・マネージャをカスタマイズすることもできます。iODBC のウエブ・サイト (www.iodbc.orgOpens in a new tab) からソースをダウンロードして、表示される指示に従います。
iODBC を使用した PHP の構成
InterSystems ODBC の機能を PHP と組み合わせて使用できます。PHP は、動的に生成されるページを開発者が作成できるようにするスクリプト言語です。そのプロセスは、以下のとおりです。
-
インストールを実行するマシンで、root 特権を取得します。
-
iODBC ドライバ・マネージャをインストールします。以下はその方法です。
-
キットをダウンロードします。
-
標準インストールと構成を実行します。
-
iODBC の Web サイト (www.iodbc.orgOpens in a new tab) の iODBC+PHP HOWTOOpens in a new tab ドキュメントの説明に従って、ドライバ・マネージャを PHP で使用するように構成します。
既定の PHP 構成のセキュリティ保護のため、iODBC PHP の例では、LD_LIBRARY_PATH (AIX® では LIBPATH) はセットされていない点に注意してください。また、LD_LIBRARY_PATH を使用しないでこれを登録するには、libiodbc.so を /usr/lib にコピーし、ldconfig を実行します。
-
-
PHP ソース・キットを https://www.php.netOpens in a new tab からダウンロードし、解凍します。
-
Apache HTTP サーバ・ソース・キットを http://httpd.apache.org/Opens in a new tab からダウンロードし、解凍します。
-
PHP を構築し、インストールします。
-
Apache HTTP サーバを構築し、インストール後、起動します。
-
Apache ルート・ディレクトリの info.php を使用して PHP と Web サーバをテストします。Apache ルート・ディレクトリは、Apache 構成ファイルで指定されています (通常 httpd.conf)。この URL は、http://127.0.0.1/info.php です。
-
$HOME 環境変数が定義されていない場合は、InterSystems 特有の初期化ファイル irisodbc.ini を /etc/odbc.ini にコピーします。Apache Web サーバでは、この場所を指定した方が好結果が得られます。
-
libirisodbc.so クライアント・ドライバ・ファイルを構成し、テストします。
-
custom.php ファイル (以下に表示) を Apache ルート・ディレクトリ (info.php が存在するディレクトリ) にコピーし、その場所を、使用しているマシンでの InterSystems インストール・ディレクトリの場所に合わせて調整します。
-
https://github.com/intersystems/Samples-DataOpens in a new tab から sample.person データベースをダウンロードしてインストールするか、お好みのサンプル・データベースを使用するように custom.php を変更します。
-
その後、ブラウザで http://127.0.0.1/custom.php を指して、custom.php プログラムを実行します。
<?php
putenv("LD_LIBRARY_PATH=/usr/local/lib"); //This may be blocked by php security
echo $LD_LIBRARY_PATH;
//putenv("ODBCINSTINI=/path/to/odbcinst.ini"); //this location will be determined by your driver install.
//putenv("ODBCINI=/path/to/odbc.ini"); //odbc.ini contains your DSNs, location determined by your driver install.
$dsn="SAMPLES";
$user="_SYSTEM";
$password="sys";
$sql="SELECT * FROM sample.person";
if ($conn_id=odbc_connect("$dsn","","")){
echo "connected to DSN: $dsn";
if($result=odbc_do($conn_id, $sql)) {
echo "executing '$sql'";
echo "Results: ";
odbc_result_all($result);
echo "freeing result";
odbc_free_result($result);
}else{
echo "can not execute '$sql' ";
}
echo "closing connection $conn_id";
odbc_close($conn_id);
}else{
echo "can not connect to DSN: $dsn ";
}
?>