Oracle has a beta version of it's Express edition available.
They promise it will be free for up to 4GB of user data, 1G memory and 1 CPU.
This offer is somewhat similar to Sybase Express that has almost the same features.
For small enterprises this might just be enough for running Compiere so I gave it a try.
Compiere Libero (PostgreSQL based version) seems to lag many versions behind main
compiere and my previous attempts with Sybase Express failed miserably because of one
"little" oversight from Compiere behalf:
The Sybase format database dump is nowhere to be found. That's right, it's not in CVS where the documentation
says it should be or anywhere near it and of course not in the main tarballs as well.
*sigh* Why can't You Compiere guys just set up a documentation Wiki if You can't write accurate documentation
yourself. I finally found the CompiereSybase.zip from the files section in sourceforge, but it seemed to be for an ages old version of
Compiere (2.5.2a) so I decided not to push my luck.
Anyway here we go Oracle XE.
* Debian 3.1 system
RPM package, mm nice, but I'm using debian.
Ok, alien to the rescue.
Great, but the RPM had some scripts in it that didn't run *sigh*.
Let's extract them.
rpm -q --scripts -p oracle*.rpm > scripts.txt
Good, I extracted 4 scripts from that text file.
Preinst script checked some system parameters and modified my systcl.conf file.
Well it was SUPPOSED to do that. Instead it just died:
expr: syntax error
oracle-xe-preinst.sh: line 21: [: -lt: unary operator expected
Debugging it a bit I quickly got to the cause:
my system uses LVM so when I do df -k it shows:
Filesystem 1K-blocks Used Available Use% Mounted on
511980 94100 417880 19% /
5242716 1750916 3491800 34% /usr
As You can see the long lines are split which naturally confuses the oracle preinstall script trying to
parse the output. Adding -P argument to every df in this script helped.
I can assure You that the script will run into the very same error on redhat too.
Ok second time in a row the scipts worked fine.
But with a twist again. I didn't have libaio installed and the init script deleted the seed database so there was no way to
recover from this error but to reinstall the package.
It took me over 3 hours to debug it because of Oracle-s "helpful" error messages telling me cryptic things like:
Unable to find control file
And all logs with error messages spread out into 4 different directories.
I fixed the init script to play nice with debian, You can find the patch here:http://www.linux.ee/~anttix/oracle-xe-startupscript.diff
Ok, now to the wonders of Compiere.
Untar, sh RUN_setup.sh
Enter passwords and compiere database name as compiere.
ORA-12514, TNS:listener does not currently know of service requested in connect descriptor
Another "helpful" error.
Great, I must create database I presume.
The great oracle web based administration interface (htmldb) does not come with anything that
even resembles a database creation tool.
Running create database (I know that create statement is incomplete, but the complete one will get exactly the same error)
from SQL manually just gives another one of Oracle-s "helpful" error messages:
SQL> create database compiere;
create database compiere
ERROR at line 1:
ORA-01501: CREATE DATABASE failed
ORA-01100: database already mounted
Now WHAT THE F* is this supposed to mean?
Googling around finally gave me an answer:You can only create a database in Oracle-express if the allready existing XE database has been shutdown. It is not possible to run two databases at once though. This is a documented limitation of Oracle-XE. If you need to run more then one database, please install standard or enterprise.
Great! Only one database for XE eh? Oh my. Why do I get the feeling that Sybase Express is a much better product *sigh*.
Ok, now I have to disable the demo database and create my own, MANUALLY. There are even comperhensive guides how to
create an oracle database in the web like this one: http://www.adp-gmbh.ch/ora/admin/creatingdbmanually.html.
BUT! Do I really want to go through all that trouble?
NO! Since Oracle 10e XE can't use more than one database anyway, the only thing I get from messing around with
database names is the warm fuzzy feeling that my database name is compiere and nothing else.
So I just dropped the demo user called HR (ticked cascade of-course) and changed the database name in compiere setup to XE.
IMP-00017: following statement failed with ORACLE error 6550:
"BEGIN :STATUS := DBMS_JAVA.START_IMPORT('META-INF/MANIFEST.MF', 0, 30, "
"0, 3, 130, 0); END;"
IMP-00003: ORACLE error 6550 encountered
ORA-06550: line 1, column 22:
PLS-00201: identifier 'DBMS_JAVA.START_IMPORT' must be declared
ORA-06550: line 1, column 11:
PL/SQL: Statement ignored
Hmm, I guess it must be one of those "warnings" Compiere documentation says are OK.
oracle/ImportCompiere.sh: line 36: .//opt/Compiere2/utils/oracle/create.sh: No such file or directory
Now that definately IS NOT A WARNING.
And as expected the database health check scripts fail miserably after that.
Great. Edit the file oracle/importCompiere.sh, go to line 36 and delete ./ from the beginning of the line.
Load Oracle SQLJ ...
/opt/Compiere2/utils/oracle/create.sh: line 11: loadjava: command not found
There is no loadjava command in oracle XE *cry*
According to: http://forums.oracle.com/forums/thread.jspa?threadID=347516&tstart=1
Oracle XE doesn't come with built-in Java or any of the Oracle-java companents or features.
So much for "free" oracle and Compiere.
I took me at least 6 hours to figure out all the nasty little details of oracle XE and no result in the end :(
No I'm mad! I have to give it another try on Sybase then.