Skip to content

Instantly share code, notes, and snippets.

@blacksnowmartin
Forked from shahanahmed86/oracle.md
Last active January 15, 2026 06:42
Show Gist options
  • Select an option

  • Save blacksnowmartin/742193335bf37d3ca49f666f7dad2be4 to your computer and use it in GitHub Desktop.

Select an option

Save blacksnowmartin/742193335bf37d3ca49f666f7dad2be4 to your computer and use it in GitHub Desktop.
install oracle 11g database in ubuntu

Step 1: Download Oracle Database Express Edition.

http://www.oracle.com/technetwork/database/database-technologies/express-edition/downloads/index.html

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

7. 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

8. Change the permission of the chkconfig file using the command:

sudo chmod 755 /sbin/chkconfig

9. 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

10. Copy the following into the file and save:

fs.file-max=6815744  
net.ipv4.ip_local_port_range=9000 65000  
kernel.sem=250 32000 100 128 
kernel.shmmax=536870912

11. Verify the change using the command:

sudo cat /etc/sysctl.d/60-oracle.conf

12. You should see what you entered earlier. Now load the kernel parameters:

sudo service procps start

13. Verify the new parameters are loaded using:

sudo sysctl -q fs.file-max You should see the file-max value that you entered earlier.

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

sudo pico /etc/rc2.d/S01shm_load

15. 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

16. Change the permissions of the file using the command:

sudo chmod 755 /etc/rc2.d/S01shm_load

17. Now execute the following commands:

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

18. 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. Use cursor when writing a query

sudo apt install rlwrap

3. Start command line shell as the system admin using the command:

rlwrap sqlplus sys as sysdba

Additional notedowns

If you are seeing "Package 'libaio1' has no installation candidate" is that you are likely on a newer version of Ubuntu (like 24.04 or 2026's latest release). In these versions, the package was renamed to libaio1t64 as part of a system-wide update to 64-bit time handling.

Oracle 11g, being an older piece of software, specifically looks for a file named libaio.so.1, which is missing because of this name change.

Step 1: Install the updated library

First, install the modern version of the library and the development headers:

sudo apt update
sudo apt install libaio1t64 libaio-dev

Step 2: Create a Symbolic Link (The Fix)

Oracle will still fail because it doesn't recognize libaio1t64. You need to create a "shortcut" (symbolic link) so that when Oracle asks for libaio.so.1, the system points it to the new file:

sudo ln -s /usr/lib/x86_64-linux-gnu/libaio.so.1t64 /usr/lib/x86_64-linux-gnu/libaio.so.1

Step 3: Accessing the Oracle Shell

Now that the configuration is complete and the library issue is fixed, you need to manually enter the shell. The reason your prompt didn't change is that service start only runs the background process; it doesn't open the interface.

1. Set your Environment Variables: Run these three commands to tell your current session where Oracle is:

export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe
export ORACLE_SID=XE
export PATH=$PATH:$ORACLE_HOME/bin

2. Launch SQL*Plus: Now, try to enter the command shell:

sqlplus / as sysdba

Troubleshooting the "Command Shell"

If sqlplus still says "command not found," it means the ORACLE_HOME path is slightly different on your machine. You can find the correct path by running:

find /u01 -name sqlplus
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment