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

Step 1: Download Oracle Database Express Edition.

Step 2: Instructions before install Oracle

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

  2. Unzip using the command:

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

    sudo apt-get install alien libaio1 unixodbc
    
  4. Enter into the Disk1 folder using command:

    cd Disk1/
    
  5. Convert RPM package format to DEB package format (that is used by Ubuntu) using the command:

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

    sudo pico /sbin/chkconfig
    

    The pico 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 using the command:

    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 pico /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 change using the command:

    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
    
  12. Verify the new parameters are loaded using:

    sudo sysctl -q fs.file-max
    

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

  13. Set up /dev/shm mount point for Oracle. Create the following file using the command:

    sudo pico /etc/rc2.d/S01shm_load
    
  14. 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 
    
  15. Change the permissions of the file using the command:

    sudo chmod 755 /etc/rc2.d/S01shm_load
    
  16. Now execute the following commands:

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

    Now, Reboot Your System

Step 3: Install Oracle

  1. Install the oracle DBMS using the command:

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

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

    pico ~/.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 the Oracle 11gR2 XE:

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

    sudo usermod -a -G dba YOURUSERNAME
    

Step 4: Using the Oracle XE Command Shell

  1. Start the Oracle XE 11gR2 server using the command:

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

    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 commandline shell as a regular user using the command:

    sqlplus
    

    Now, you can run sql commands...

  • At step 6 I am getting Starting Oracle Net Listener...touch: cannot touch '/var/lock/subsys/listener': No such file or directory Done Configuring database... Database Configuration failed. Look into /u01/app/oracle/product/11.2.0/xe/config/log for details – Skynet May 5 '16 at 13:39
  • 2
    @Skynet. I got the same error. Although i don't able to understand these commands, i tried and able to configure oracle XE or linux mint. – Jeet Jul 5 '16 at 7:45
  • @Skynet. And also tried this link. Search content Reference in the comment after expand : to get it to work I needed to add the following lines in the beginning of the file "/etc/init.d/oracle-xe"...between steps 6(i) and 6(ii) if [ -L /dev/shm ]; then rm -rf /dev/shm mkdir /dev/shm mount -t tmpfs shmfs -o size=2048m /dev/shm fi if [ ! -d /var/lock/subsys ]; then mkdir /var/lock/subsys touch /var/lock/subsys/listener fi – Jeet Jul 5 '16 at 8:08
  • 1
    /etc/rc2.d/S01shm_load seems missing ;; indicating the end of an alternative at line 7. – user3523935 Nov 4 '16 at 8:18
  • 2
    Had to use sudo service procps restart instead of sudo service procps start – ossbuntu Oct 24 '17 at 11:53

Thank you for the detailed tutorial but I was getting error

touch: cannot touch '/var/lock/subsys/listener' .. 

in the step sudo /etc/init.d/oracle-xe configure. So as suggested on http://meandmyubuntulinux.blogspot.in/2012/05/installing-oracle-11g-r2-express.html I added the following lines in /etc/init.d/oracle-xe

if [ -L /dev/shm ]; then
    rm -rf /dev/shm
    mkdir /dev/shm
    mount -t tmpfs shmfs -o size=2048m /dev/shm
fi

if [ ! -d /var/lock/subsys ]; then
 mkdir /var/lock/subsys
 touch /var/lock/subsys/listener
fi

...and its working fine for me

  • You get the error because there's an error in the script /etc/rc2.d/S01shm_load in Saikat's answer. Fixing this would be a cleaner solution. I'll edit the answer with the correct script. – Forage Sep 29 '17 at 8:32
  • Forget it, reviewers are idiots. After the first and and second attempt to correct the script have failed I give up. Apparently it's more important to mindlessly vote to score points then to actually try to understand what is being done. – Forage Oct 2 '17 at 15:11

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.

protected by Community Aug 27 '16 at 10:53

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.