OCI8 のテストスイートは ext/oci8/tests にあります。 OCI8 のテストを実行すると、テストが失敗したときのログがこのディレクトリに記録されます。
PHP のテストを実行する前に、details.inc を編集して $user、$password と接続文字列 $dbase を編集します。 OCI8 のテストスイートでは SYSTEM アカウントを利用します。 テストユーザーにそれと同等の権限がなければ、いくつかのテストが失敗します。
Oracle 11g 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 データベース用の環境を適切に設定します。 Oracle 10gR2 XE の場合は次のようにします。
$ . /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/oracle_env.sh
Oracle 11gR2 XE の場合は次のようにします。
$ . /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh
それ以外のバージョンの Oracle の場合は次のようにします。
$ . /usr/local/bin/oraenv
シェルによっては、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 10gR2 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