sqlrelay with oracle instant client
CGIなどからDBMSに接続する場合、あまりに大量の要求がくると、DBMSのコネクションを食い尽くして
しまう。
そのため、client processから直接DBMSにコネクションせず、途中にコネクションの整理をする中継>デーモンを置く「コネクションプーリング」という技法が必要となる。
この実装例が「sqlrelay」である。
このsqlrelayをphp client <->Oracle仕様でsetupする。
必要なファイル
- sqlrelay-0.39.4.tar.gz
- rudiments-0.31.tar.gz
setup
まずは、必要なクラスライブリrudimentsのsetup。
% tar xvfz udiments-0.31.tar.gz % cd rudiments-0.31 % ./confiure % make % su % make install
そして、sqlrelayのsetup。
% tar xvfz sqlrelay-0.39.4.tar.gz % cd sqlrelay-0.39.4 % ./configure --disable-mysql --disable-postgresql --disable-sqlite \\ --disable-sybase --disable-odbc \\ --with-oracle-instantclient-prefix=/usr/local/oracle/10.2.0.3/lib % make % su # make install
phpといいながら、perlにも対応している。
***** Summary *********************************************** Version : 0.39.4 APIs : C/C++ yes Perl yes Python no Ruby no PHP yes Java no TCL no Zope no Connections : Oracle8 dynamic MySQL no PostgreSQL no SQLite no FreeTDS no Sybase no ODBC no DB2 no Firebird no MDB Tools no *************************************************************
設定
「/usr/local/firstworks/etc/sqlrelay.conf」にDBMSの環境を設定する。
識別子(ID)「dbrelay」でDBMSサーバ名「dbserver」、DBMSサービス名「KURO」にuser01/pass01でログインする設定。
<?xml version="1.0"?> <!DOCTYPE instances SYSTEM "sqlrelay.dtd"> <instances> <!-- Regular SQL Relay Instance --> <instance id="dbrelay" port="9000" socket="/tmp/example.socket" dbase="oracle8" connections="3" maxconnections="15" maxqueuelength="5" growby="1" ttl="60" endofsession="commit" sessiontimeout="600" runasuser="nobody" runasgroup="nobody" cursors="5" authtier="listener" handoff="pass" deniedips="" allowedips="" debug="none" maxquerysize="65536" maxstringbindvaluelength="4000" maxlobbindvaluelength="71680" idleclienttimeout="-1" maxlisteners="-1" listenertimeout="0" reloginatstart="false"> <users> <user user="user01" password="pass01"/> <connections> <connection connectionid="KURO" string="user=user01;password=pass01;oracle_sid=dbserver/KURO;" metric="1" behindloadbalancer="no"/> </connections> </instance> </instances>
起動と終了
起動の確認
# export PATH=/usr/local/firstworks/bin:$PATH # /usr/local/firstworks/bin/sqlr-status -id 識別子
起動
# export PATH=/usr/local/firstworks/bin:$PATH # /usr/local/firstworks/bin/sqlr-start -id 識別子
終了
# export PATH=/usr/local/firstworks/bin:$PATH # /usr/local/firstworks/bin/sqlr-stop -id 識別子
フロントエンド(sqlplus相当)
% export PATH=/usr/local/firstworks/bin:$PATH % /usr/local/firstworks/bin/sqlrsh -id 識別子 SQLRShell - Version 0.22 Connected to: localhost:9000 as user01 type help; for a help. 0>quit;