Install Oracle XE on Fedora

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.

Install RPM

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

Configure database

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

Create login

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.

oracle-xe-create-user.png

Use jbpm3/jbpm3 as the username/password. Leave the CONNECT and RESOURCE roles checked. Grant the CREATE TABLE and CREATE SEQUENCE privileges.

Create tables

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.

SQL> exit

Troubleshooting

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

 

Happy hacking