Sometimes it happens that developer needs to tie his business logic with fixed database provider, just to obtain required functionality. In my case it was Oracle >= 10g and functionality was regular expression support (REGEX_LIKE, REGEXP_INSTR, REGEXP_SUBSTR, REGEX_REPLACE functions). Hence testing code has to refrain from using quick, agile DB backends (as HSQL) and setup something more heavyweight.
Those who happened to install/configure full-blown Oracle know how hard can this be. Fortunately Oracle came up with solution by releasing Oracle XE database. In Linux with dpkg installation is as easy as:
- get DEB package
- run dpkg -i package
- /etc/init.d/oracle-xe configure
And that's it! We have fully-functional Oracle DB in our own host :) Web UI, typically available under http://127.0.0.1:8100/apex/f let user log in as SYS and manage database just as using sqlplus.
There is however one caveat - when connecting via JDBC, user will very probably get stranfge exceptions with error code ORA-12519, meaning "TNS:no appropriate service handler found". Typical SQL exception is:
oracle xe Io exception:
Connection refused
(DESCRIPTION=(TMP=)(VSNNUM=169869568)(ERR=12519)
(ERROR_STACK=(ERROR=(CODE=12519)(EMFI=4))))
This is caused by a bug in how Oracle XE handles monitoring processes, Fix is pretty straightforward:
- execute: ALTER SYSTEM SET PROCESSES=150 SCOPE=SPFILE;
- stop db: /etc/init.d/oracle-xe stop
- start it again: /etc/init.d/oracle-xe start
Voila! Enjoy your integration testing with brand-new Oracle Express Edition.
Brak komentarzy:
Prześlij komentarz