Installing Oracle 11g R2 Express Edition on Ubuntu 64-bit

              But at first, I must inform you about the limitations of Oracle 11g R2 Express Edition (XE) which are as follows :
  • The Installer released by Oracle is only meant for 64-bit (x86_64) systems. If you wish to install the 32-bit version , see installing oracle xe on ubuntu 32-bit
  • It will consume, at most, processing resources equivalent to one CPU.
  • Only one installation of Oracle Database XE can be performed on a single computer.
  • The maximum amount of user data in an Oracle Database XE database cannot exceed 11 GB.
  • The maximum amount of RAM that Oracle XE uses cannot exceed 1 GB, even if more is available.
Now the steps for Installation :
1) Download the Oracle 11gR2 express edition installer from the link given below:
( You will need to create a free oracle web account if you don’t already have it )
2) Unzip it :
3) Install the following packages :
sudo apt-get install alien libaio1 unixodbc vim
4) Convert the red-hat ( rpm ) package to Ubuntu-package :
sudo alien –scripts -d oracle-xe-11.2.0-1.0.x86_64.rpm
(Note: this may take a while , till that time you can go for step 5 )
5) Do the following pre-requisite things:
a) Create a special chkconfigscript :
The Red Hat based installer of Oracle XE 11gR2 relies on /sbin/chkconfig, which is not used in Ubuntu. The chkconfig package available for the current version of Ubuntu produces errors and my not be safe to use. Below is a simple trick to get around the problem and install Oracle XE successfully:
sudo vim /sbin/chkconfig

(copy and paste the following into the file )
# Oracle 11gR2 XE installer chkconfig hack for Ubuntu
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
update-rc.d oracle-xe defaults 80 01

Save the above file and provide appropriate execute privilege :
       chmod 755 /sbin/chkconfig
b) Set the Kernel parameters :
Oracle 11gR2 XE requires to set the following additional kernel parameters:
sudo vim /etc/sysctl.d/60-oracle.conf
(Enter the following)
# Oracle 11g XE kernel parameters
net.ipv4.ip_local_port_range=9000 65000
kernel.sem=250 32000 100 128
(Save the file)
Note: kernel.shmmax = max possible value , e.g. size of physical RAM ( in bytes e.g. 512MB RAM == 512*1024*1024 == 536870912 bytes )
Verify the change :
sudo cat /etc/sysctl.d/60-oracle.conf
Load newkernel parameters:
sudo service procps start
Verify: sudo sysctl -q fs.file-max
       -> fs.file-max = 6815744
c) Increase the system swap space :Analyze your current swap space by following command :
           free -m
Minimum swap space requirement of Oracle 11gR2 XE is 2 GB . In case, your is lesser , you can increase it by following steps in my one of previous post .
d) make some more required changes :
i) ln -s /usr/bin/awk /bin/awk
ii) mkdir /var/lock/subsys
iii) touch /var/lock/subsys/listener
6) Now you are ready to install Oracle 11gR2 XE. Go to the directory where you created the ubuntu package file in Step 4 and enter following commands in terminal :
i) sudo dpkg –install oracle-xe_11.2.0-2_amd64.deb
Update : Before you proceed to next step , do have a look at this trouble-shooting post in order to avoid MEMORY TARGET or any other “shared memory” error.
ii) sudo /etc/init.d/oracle-xe configure
Enter the following configuration information:
  • A valid HTTP port for the Oracle Application Express (the default is 8080)
  • A valid port for the Oracle database listener (the default is 1521)
  • A password for the SYS and SYSTEM administrative user accounts
  • Confirm password for SYS and SYSTEM administrative user accounts
  • Whether you want the database to start automatically when the computer starts (next reboot).
7) Before you start using Oracle 11gR2 XE you have to set-up more things :
a) Set-up the environmental variables :
Add following lines to your .bashrc :
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe
export NLS_LANG=`$ORACLE_HOME/bin/`
export ORACLE_BASE=/u01/app/oracle
b) execute your .profile to load the changes:
          . ./.profile
8) Start the Oracle 11gR2 XE :
sudo service oracle-xe start
The output should be similar to following :
user@machine:~$ sudo service oracle-xe start
Starting Oracle Net Listener.
Starting Oracle Database 11g Express Edition instance.
8) Create your user :
a) start sqlplus and login as sys :
sqlplus sys as sysdba
( provide the password you gave while configuring the oracle in Step 6 (ii) ).
This should come to following :
SQL*Plus: Release Production on Wed May 9 12:12:16 2012
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Enter password:
Connected to:
Oracle Database 11g Express Edition Release – 64bit Production
b) Enter following on the sql prompt : Replace username and password by your desired ones.
SQL> create user username identified by password;
User created.
SQL> grant connect,resource to username;
Grant succeeded. 
9) Now as you have created the user , you can login to it :
user@machine:~$ sqlplus
SQL*Plus: Release Production on Wed May 9 12:28:48 2012
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Enter user-name: temp
Enter password:
Connected to:
Oracle Database 11g Express Edition Release – 64bit Production
SQL> select 2+2 from dual;

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s