Today it became necessary to deploy Oracle XE on a new SuSE system. This did not seem a big deal; we had already deployed a version of Oracle 10g XE on SuSE 10.2 quite a while back and as far as I remembered it was a simple rpm deployment. This time the XE was the same but we were deploying on OpenSuse 11.2.

Everything seemed to install fine, but darned if Oracle would not  come up at all with no errors logged anywhere to give us a clue. We  paused to wonder; perhaps the versions of glibc and libaio (stated as requirements) were too new - should we revert to something older? As it happens we had to deploy Tomcat v6 with Java v1.6+ and our normal alternative - Centos/RedHat - had only prior versions of these. So it was either go back to RHEL v5 - requiring an upgrade to Java/Tomcat - or figure out what was wrong and get the SuSE system working.

It was Friday; plan B won - but it took us quite a while to figure out what was going wrong!

The Problem

First off we downloaded the XE rpm version from Oracle's website then installed it using the rpm command

rpm -ivh oracle-xe-univ-

It did complain a bit but these were warning messages because the startup script in /etc/init.d was missing a few presets expected by SuSE system configuration.   blacktav:/srv/ftp/Oracle

blacktav:/srv/ftp/Oracle # rpm -ihv oracle-xe-univ- Preparing... 
########################################### [100%] 1:oracle-xe-univ 
########################################### [100%] Executing Post-install steps... 
insserv: warning: script 'oracle-xe' missing LSB tags and overrides insserv: Default-Start 
undefined, assuming default start runlevel(s) for script `oracle-xe' oracle-xe 0:off 1:off 
2:off 3:on 4:off 5:on 6:off You must run '/etc/init.d/oracle-xe configure' as the root 
user to configure the database. 

These extras were not needed as the service was configured to start-up correctly and the LSB component is just documentation to describe the product. All seemed good.

  • an oracle user account & group had been added as oracle
  • the product tree had been populated under /usr/lib/oracle/xe

For convenience at this point we added entries in /etc/ (oracle.conf) to add the Oracle libraries and in /etc/profile.d ( to add Oracle binaries to our path and a few convenience variables for Oralcle such as ORACLE_HOME and the likes. These steps are also detailed in the Oracle Installation Guide.   And so to the final step, doing the configuration step with  /etc/init.d/oracle-xe configure

This step should initialise our database file and actually launch both  the SQL engine and Oracle's management webtool servers. We were  expecting to use this in the wild, wild Interweb so we decided to  provide a difficult password for the system users; we accepted defaults  for the other values. This interaction creates a file in /etc/sysadmin (oraclexe.conf) which is a reference for configuration information by the startup  script. This "seemed" to complete without error but something was not  right; neither the engine nor the admin web application were running.  All Oracle had said was:  

Starting Oracle Database 10g Express Edition Instance...Done Installation Completed  Successfully. To access the Database Home Page go to ""

Oracle had not installed itself at all - there was no oradata/XE tree, nor other folders which the various conf/scripts should have created. It took us quite a while to figure this one out; what seems to have gone wrong was that the oracle user account had been created with a password. When we assigned a password during the interaction, this password was  used to initiate an su session when the database was actually configured by the oracle user. Because the passwords were now different, su could not work and the script did not have sufficient privileges to create the folders required. There were other issues around simply running sqlplus; depending on our trial: libaio was missing, the binary was not in the path or ORACLE_HOME was not set.


Anyway we eventually figured it out. This is what we should have done:

  • make sure you have the required libraries (glibc and libaio); you might need a 32b of libaio if you are installing a 32b application on a 64b platform
  • install using the command  rpm-ihv oracle-xe-univ-
  • set the oracle user's password to "oracle" with passwd oracle
  • in /etc/profile.d add an file in which you can add the lines  export PATH=$PATH: export ORACLE_HOME
  • log off and on again so these exports can take effect. Before continuing, make sure you can startup sqlplus
  • now you can finish off with /etc/init.d/oracle-xe configure; accept the defaults and when prompted for a password use "oracle"; your system should pause displaying  Configuring Database... after a few minutes it should finish and you should have a working Oracle instance which you can check by going to   If you have started an installation and reached a point where it has failed like above; it should be possible to remove oraclexe.conf from /etc/sysconfig and try again from step 3.


There are essentially two steps to be completed: install from rpm and  configure the application. In order for the configuration step to  succeed you need to ensure:

  • the sqlplus tool can be started from the command-line
  • the configure script can su to the oracle user account using the password provided

For whatever reason, neither of these are satisfied by the tools or the process documented by Oracle Security Alert: once installed, remember to change the oracle user password to something more secure: the default is obviously widely known.