How to install Oracle 11gR2 on Ubuntu 14.04?

Please provide me with the guidance to install oracle 11gr2 on Ubuntu 14.04.


1. Download Oracle Database Express Edition.

2. Instructions before installing Oracle database

  1. Copy the downloaded file and paste it in home directory.

  2. Unzip using the downloaded .zip file:

     unzip oracle-xe-11.2.0-1.0.x86_64.rpm.zip 
    
  3. Install required packages:

     sudo apt-get install alien libaio1 unixodbc # still works in 22.04
    
  4. Change directories to the Disk1 directory:

     cd Disk1/
    
  5. Convert .rpm package format to .deb package format (that is used by Ubuntu):

     sudo alien --scripts -d oracle-xe-11.2.0-1.0.x86_64.rpm
    
  6. Create the required chkconfig script:

     sudo nano /sbin/chkconfig
    

    The nano text editor is started and the commands are shown at the bottom of the screen. Now copy and paste the following into the file and save:

     #!/bin/bash
     # Oracle 11gR2 XE installer chkconfig hack for Ubuntu
     file=/etc/init.d/oracle-xe
     if [[ ! `tail -n1 $file | grep INIT` ]]; then
         echo >> $file
         echo '### BEGIN INIT INFO' >> $file
         echo '# Provides: OracleXE' >> $file
         echo '# Required-Start: $remote_fs $syslog' >> $file
         echo '# Required-Stop: $remote_fs $syslog' >> $file
         echo '# Default-Start: 2 3 4 5' >> $file
         echo '# Default-Stop: 0 1 6' >> $file
         echo '# Short-Description: Oracle 11g Express Edition' >> $file
         echo '### END INIT INFO' >> $file
     fi
     update-rc.d oracle-xe defaults 80 01
    
  7. Change the permission of the chkconfig file:

     sudo chmod 755 /sbin/chkconfig  
    
  8. Set kernel parameters. Oracle 11gR2 XE requires additional kernel parameters which you need to set using the command:

     sudo nano /etc/sysctl.d/60-oracle.conf
    
  9. Copy the following into the file and save:

     # Oracle 11g XE kernel parameters 
     fs.file-max=6815744  
     net.ipv4.ip_local_port_range=9000 65000  
     kernel.sem=250 32000 100 128 
     kernel.shmmax=536870912 
    
  10. Verify the changes:

    sudo cat /etc/sysctl.d/60-oracle.conf 
    
  11. You should see what you entered earlier. Now load the kernel parameters:

    sudo service procps start # If this doesn't work try sudo systemctl start procps 
    
  12. Verify the new parameters are loaded:

    sudo sysctl -q fs.file-max
    

You should see the file-max value that you entered earlier.

  1. Set up /dev/shm mount point for Oracle. Create the following file:

    sudo nano /etc/rc2.d/S01shm_load
    
  2. Copy the following into the file and save.

    #!/bin/sh
    case "$1" in
    start)
        mkdir /var/lock/subsys 2>/dev/null
        touch /var/lock/subsys/listener
        rm /dev/shm 2>/dev/null
        mkdir /dev/shm 2>/dev/null
    *)
        echo error
        exit 1
        ;;
    
    esac 
    
  3. Change the permissions of the file:

    sudo chmod 755 /etc/rc2.d/S01shm_load
    
  4. Run the following commands:

    sudo ln -s /usr/bin/awk /bin/awk 
    sudo mkdir /var/lock/subsys 
    sudo touch /var/lock/subsys/listener
    sudo reboot
    

3. Install Oracle database

  1. Install Oracle DBMS:

    sudo dpkg --install oracle-xe_11.2.0-2_amd64.deb
    
  2. Configure Oracle:

    sudo /etc/init.d/oracle-xe configure 
    
  3. Setup environment variables by editing your .bashrc file:

    nano ~/.bashrc
    
  4. Add the following lines to the end of the file:

     export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe
     export ORACLE_SID=XE
     export NLS_LANG=`$ORACLE_HOME/bin/nls_lang.sh`
     export ORACLE_BASE=/u01/app/oracle
     export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
     export PATH=$ORACLE_HOME/bin:$PATH
    
  5. Load the changes by executing your profile:

    . ~/.bashrc
    
  6. Start Oracle 11gR2 XE:

     sudo service oracle-xe start
    
  7. Add user YOURUSERNAME to group dba using the command:

    sudo usermod -a -G dba YOURUSERNAME
    

4. Using the Oracle XE command shell

  1. Start the Oracle XE 11gR2 server:

    sudo service oracle-xe start
    
  2. Start command-line shell as the system admin:

    sqlplus sys as sysdba
    

    Enter the password that you gave while configuring Oracle earlier. You will now be placed in a SQL environment that only understands SQL commands.

  3. Create a regular user account in Oracle using the SQL command:

    create user USERNAME identified by PASSWORD;
    

    Replace USERNAME and PASSWORD with the username and password of your choice. Please remember this username and password. If you had error executing the above with a message about resetlogs, then execute the following SQL command and try again:

    alter database open resetlogs;
    
  4. Grant privileges to the user account using the SQL command:

    grant connect, resource to USERNAME;
    

    Replace USERNAME and PASSWORD with the username and password of your choice. Please remember this username and password.

  5. Exit the sys admin shell using the SQL command:

    exit;
    
  6. Start the command-line shell as a regular user using the command:

    sqlplus
    

Now you can run SQL commands.


This worked fine, however I got the following error:

sudo /etc/init.d/oracle-xe start
[....] Starting oracle-xe (via systemctl): oracle-xe.serviceJob for oracle-xe.service failed because the control process exited with error code. See "systemctl status oracle-xe.service" and "journalctl -xe" for details.
 failed!

Looking into it:

systemctl status oracle-xe.service
Jan 27 10:01:05 <myusername> su[29699]: No passwd entry for user 'oracle'

I resolved it by simply adding a user:

sudo adduser oracle

Hope this helps someone.