This document describes how to install Oracle Database 10g Express Edition on Fedora Linux 12. It may be useful for later versions as well.
Download installation packages
Look for Oracle 10g XE for Linux. Accept the license agreement and download one of the RPM packages. Choose the Universal package if you are interested in a localized installation.
An installation guide is available from Oracle. The next few sections summarize the instructions and highlight potential pitfalls.
While you can install the downloaded RPM by double clicking on it, it is advisable to install it from a terminal. The RPM package manager sometimes fails to execute the post install steps with no obvious graphical feedback. Conversely a command line installation prints any error right there in the console.
To install the Oracle XE package, execute:
# yum --nogpgcheck localinstall oracle-xe-univ-10.2.0.1-1.0.i386.rpm
Post install failures stem from missing packages/commands that the RPM does not list as dependencies. In particular, a test system lacked the bc command, which is used by the RPM post install script. The absence of a required command manifests itself as an error message in the console and a subsequent failure to start the database service.
bc: command not found
In this case, installing the bc package, plus reinstalling oracle-xe-univ, solved the problem.
# sudo yum install bc
Once the RPM installation completes, configure the database with the command below.
# service oracle-xe configure
When prompted, enter the following information.
- Port for the web console; defaults to 8080. Consider port 8180 instead, as Tomcat/JBoss AS also default to 8080.
- Port for the database manager. The default value 1521 is fine.
- Password for SYS and SYSTEM administrative account.
- Enable or disable automatic launch on startup.
After capturing the desired settings the Oracle database instance is ready for use. Note that the configuration process creates a single database called "XE" and no other databases can be created. New users are allowed, though.
Enable manual database start
The oracle-xe init script appears to be unprepared for the case automatic launch is disabled: the start and stop operations simply exit in this case.
case "$1" in start) if test -f "$CONFIGURATION" then if test "$ORACLE_DBENABLED" != "true" then exit 0 fi else echo "Oracle Database 10g Express Edition is not configured." exit 0 fi start ;;
A solution proposed in the Oracle forums is to enable automatic launch and then start the service as follows.
# service oracle-xe enable # service oracle-xe start
To stop the database, call stop followed by disable to prevent the database from starting in the next boot.
# service oracle-xe stop # service oracle-xe disable
An alternate, permanent solution is to enable automatic launch and turn the service off. The database will not start in the next boot and manual start will be possible.
# service oracle-xe enable # chkconfig oracle-xe off
Set the environment variables
Edit the login or profile files so that the Oracle Database XE environment variables are set properly each time you log in or open a new shell.
$ emacs .bash_profile
# Oracle Database XE environment . /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/oracle_env.sh
Point a browser to http://localhost:8180/apex, replacing 8180 with the web console port chosen in the previous section. Log in as system, providing the password selected earlier.
Once in the console, click Administration and select Database Users. Now click on create user.
Use jbpm3/jbpm3 as the username/password. Leave the CONNECT and RESOURCE roles checked. Grant the CREATE TABLE and CREATE SEQUENCE privileges.
Start the SQL command line.
$ sqlplus jbpm3 @jbpm.jpdl.oracle.sql Enter password:
Once the tables are created, leave SQL*Plus with the EXIT command.
Error ORA-12519 is reported
The exception below may be thrown under moderate to heavy load.
java.sql.SQLException: Listener refused the connection with the following error: ORA-12519, TNS:no appropriate service handler found The Connection descriptor used by the client was: localhost:1521:XE at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:261) at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387) at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:441) at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165) at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35) at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801) at java.sql.DriverManager.getConnection(DriverManager.java:620) at java.sql.DriverManager.getConnection(DriverManager.java:169) at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:110) at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:423) ... more
Oracle XE ships with a tight limit on the number of user processes (40). To allow more processes, start the SQL command line.
$ sqlplus system
Type the password for the system user. Enter the next command afterwards. It will raise the processes parameter to 80.
SQL> alter system set processes=80 scope=spfile;
Now quit sqlplus. Finally, restart the oracle-xe service. The problem will be gone.
# service oracle-xe restart
Source: Oracle forums