Setting up Oracle to work with Database component
Suppose you have a running Oracle instance named "orcl" which you can access as user "scott" with password "tiger", and you want to run Database component on it.
Here are several steps to achieve this goal.
Setup a database user
You must make sure you have a user with the correct privileges, here we use the user "system" (DBA) with password "sys":
$ cat <<EOF | sqlplus system/sys@orcl
CREATE USER scott IDENTIFIED BY tiger QUOTA UNLIMITED ON SYSTEM;
GRANT CREATE SESSION TO scott;
GRANT CREATE TABLE TO scott;
GRANT CREATE TRIGGER TO scott;
GRANT CREATE SEQUENCE TO scott;
GRANT CREATE PROCEDURE TO scott;
GRANT ALTER ANY TABLE TO scott;
GRANT ALTER ANY TRIGGER TO scott;
GRANT ALTER ANY SEQUENCE TO scott;
GRANT ALTER ANY PROCEDURE TO scott;
GRANT DROP ANY TABLE TO scott;
GRANT DROP ANY TRIGGER TO scott;
GRANT DROP ANY SEQUENCE TO scott;
GRANT DROP ANY PROCEDURE TO scott;
GRANT UNLIMITED TABLESPACE TO scott;
EOF
You will see "ORA-01920: user name 'SCOTT' conflicts with another user or role name" if user scott already exists.
Create procedures for retrieving md5 hash strings and current date
The Database component requires creating a custom procedures in the Oracle which handles md5 strings and current date. Your user will require 'CREATE PROCEDURE' permissions for this. Execute:
$ sqlplus scott/tiger@orcl < Database/doc/sql/oracle_md5.sql
$ sqlplus scott/tiger@orcl < Database/doc/sql/oracle_now.sql
to have necessary procedures created.
Running Database unit tests.
After performing procedures above you could run Database unit tests:
$ php5 UnitTest/src/runtests.php -D oracle://scott:tiger@localhost/orcl Database
Note: It's forbidden to run unit tests in production environment as tests are aware of existing database data. It is strongly recommended to setup and use a testing environment while developing your application.