OCI8 のテストスイートは ext/oci8/tests にあります。 OCI8 のテストを実行すると、テストが失敗したときのログがこのディレクトリに記録されます。
PHP のテストを実行する前に、details.inc
を編集して $user、$password と接続文字列 $dbase を編集します。
OCI8 のテストスイートでは SYSTEM
アカウントを利用します。
テストユーザーにそれと同等の権限がなければ、いくつかのテストが失敗します。
Oracle Database Resident Connection Pooling をテストする場合は
$test_drcp を true
に設定し、
適切な DRCP プールサーバーに接続するための接続文字列を指定します。
details.inc を編集する以外の方法として、 次のように環境変数で設定することもできます。
$ export PHP_OCI8_TEST_USER=system $ export PHP_OCI8_TEST_PASS=oracle $ export PHP_OCI8_TEST_DB=localhost/XE $ export PHP_OCI8_TEST_DRCP=FALSE
次に、Oracle データベース用の環境を適切に設定します。 PHP を Oracle データベースと同じマシンで実行している場合、以下を実行します。
$ . /usr/local/bin/oraenv
Oracle 11gR2 XE の場合は次のようにします。
$ . /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh
シェルによっては、php.ini の variables_order parameter
パラメータに E
を設定しておかなければならないこともあります。
variables_order = "EGPCS"
すべての PHP のテストを実行するには、次のようにします。
$ cd your_php_src_directory $ make test
$ cd your_php_src_directory $ make test TESTS=ext/oci8
テストが終了したら、失敗したテストを見直します。
遅いシステムで実行した場合は、run-tests.php
のデフォルトのタイムアウトよりも長い時間がかかるテストも出てくるかもしれません。
その場合は、環境変数 TEST_TIMEOUT
を大きめに設定します。
高速なマシンで、軽量な設定のデータベース (Oracle 11gR2 XE など)
をローカルで動かしていると、いくつかのテストが
ORA-12516 あるいは ORA-12520 エラーで終了することがあります。
これを避けるには、データベースのパラメータ
PROCESSES
を次の手順で増やします。
Oracle ソフトウェアのオーナーとして接続します。
$ su - oracle
Oracle 用の環境を、上で説明した oracle_env.sh あるいは oraenv で設定します。
SQL*Plus を立ち上げ、
PROCESSES
を増やします。
$ sqlplus / as sysdba SQL> alter system set processes=100 scope=spfile
データベースを再起動します。
SQL> startup force