Installation of Oracle 11g R1 (11.1.0.6.0) on SuSE Linux Enteprise Server (SLES) 10 and OpenSuSE 10.3


This paper (HOWTO) describes step-by-step installation of Oracle 11g R1 database software on SuSE Linux Enteprise Server (SLES) 10 and OpenSuSE 10.3 (currently for x86_64. x86 version will come soon). Note that OpenSUSE distribution is not certified by Oracle Corporation.
This article does not cover database creation process, and ASM Instance creation process.

This paper covers following steps:

Pre-Instalation Tasks

1. Create oracle User Account

Login as root and create te user oracle which belongs to dba group.
su -
# groupadd dba
# useradd -g dba oracle
# mkdir /home/oracle
# chown oracle:dba /home/oracle

2. Setting System parameters
Edit the /etc/sysctl.conf and add following lines:
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 6553600
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 262144
Note: You need to execute "sysctl -p" command to apply above settings.

Edit the /etc/pam.d/login file and add following line:
session required pam_limits.so

Edit the /etc/security/limits.conf file and add following lines:
oracle    soft  nproc  2047
oracle    hard  nproc  16384
oracle    soft  nofile  1024
oracle    hard  nofile  65536

3. Creating oracle directories
# mkdir /opt/oracle
# mkdir /opt/oracle/111
# chown -R oracle:dba /opt/oracle

4. Setting Oracle Enviroment
Edit the /home/oracle/.bash_profile file and add following lines:
Use this settings for 64bit (x86_64) architecture.
ORACLE_BASE=/opt/oracle
ORACLE_HOME=$ORACLE_BASE/111
ORACLE_SID=ORCL
LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/lib32
PATH=$PATH:$ORACLE_HOME/bin

export ORACLE_BASE ORACLE_HOME ORACLE_SID LD_LIBRARY_PATH PATH

Save the .bash_profile and execute following commands for load new enviroment:
cd /home/oracle
. .bash_profile

5. For OpenSuSE only!:Backup original /etc/SuSE-release and change the distribution and release in original file. Change content as following:
SUSE Linux Enterprise Server 10 (x86_64)
VERSION = 10
PATCHLEVEL = 1

Download & Install

1. Download and install required .rpm packages

Some additional packages are required for succesful instalation of Oracle software. To check wheter required packages are installed on your operating system use following command:
rpm -qa --qf '%{name}-%{version}-%{release}.%{arch}\n'|egrep 'binutils|compat|glibc|gcc|libstd|cpp|make|ODBC|libaio|ksh|motif|libelf|sysstat'| egrep -v 'avahi|cdrkit|ldap|ssl'|sort

Required packages for SLES 10 64bit (x86_64) architecture:
binutils-2.16.91.0.5-23.20.x86_64
compat-libstdc++-5.0.7-22.2.x86_64
cpp-4.1.2_20070115-0.11.x86_64
gcc-4.1.2_20070115-0.11.x86_64
gcc-c++-4.1.2_20070115-0.11.x86_64
glibc-2.4-31.30.x86_64
glibc-32bit-2.4-31.30.x86_64
glibc-devel-2.4-31.30.x86_64
glibc-devel-32bit-2.4-31.30.x86_64
glibc-i18ndata-2.4-31.30.x86_64
glibc-info-2.4-31.30.x86_64
glibc-locale-2.4-31.30.x86_64
glibc-locale-32bit-2.4-31.30.x86_64
ksh-93r-12.28.x86_64
libaio-0.3.104-14.2.x86_64
libaio-32bit-0.3.104-14.2.x86_64
libaio-devel-0.3.104-14.2.x86_64
libaio-devel-32bit-0.3.104-14.2.x86_64
libelf-0.8.5-47.2.x86_64
libgcc-4.1.2_20070115-0.11.x86_64
libstdc++-4.1.2_20070115-0.11.x86_64
libstdc++-devel-4.1.2_20070115-0.11.x86_64
make-3.80-202.2.x86_64
openmotif-libs-2.2.4-21.12.x86_64
sysstat-6.0.2-16.19.x86_64
unixODBC-32bit-2.2.11-21.4.x86_64


Required packages for OpenSuSE 64bit (x86_64) architecture:
binutils-2.17.50.20070726-14.x86_64
compat-libstdc++-5.0.7-86.x86_64
cpp-4.2-24.x86_64
cpp42-4.2.1_20070724-17.x86_64
gcc42-32bit-4.2.1_20070724-17.x86_64
gcc42-4.2.1_20070724-17.x86_64
gcc42-c++-4.2.1_20070724-17.x86_64
glibc-2.6.1-18.x86_64
glibc-32bit-2.6.1-18.x86_64
glibc-devel-2.6.1-18.x86_64
glibc-devel-32bit-2.6.1-18.x86_64
ksh-93s-48.x86_64
libaio-0.3.104-74.x86_64
libaio-32bit-0.3.104-74.x86_64
libaio-devel-0.3.104-74.x86_64
libaio-devel-32bit-0.3.104-74.x86_64
libelf0-0.8.9-17.x86_64
libgcc42-32bit-4.2.1_20070724-17.x86_64
libgcc42-4.2.1_20070724-17.x86_64
libstdc++42-32bit-4.2.1_20070724-17.x86_64
libstdc++42-4.2.1_20070724-17.x86_64
libstdc++42-devel-32bit-4.2.1_20070724-17.x86_64
libstdc++42-devel-4.2.1_20070724-17.x86_64
make-3.81-66.x86_64
openmotif-libs-2.3.0-23.x86_64
sysstat-7.1.6-16.x86_64
unixODBC-32bit-2.2.12-55.x86_64


(For OpenSuSE only!:) If some package is not installed then install it from installation media or download it from following locations:
OpenSUSE 10.3 x86_64 repository
Note: (For OpenSuSE only!:) Some packages could be missing on OpenSuSE installation media (DVD) (Don't ask me why) but you can find them in official repository.

If you need install packages for SLES 10, use SuSE SLES 10 installation CDs/DVD.

Install the required packages using the rpm command:
rpm -ivh <package_name>.rpm


For OpenSuSE 10.3 only!: Create symlinks for compilers (as root):
# cd /usr/lib
# ln -s gcc-4.2 gcc
# ln -s g++-4.2 g++


2. Download the Oracle 11g release 1 (11.1.0.6.0) software from Oracle website.
Extract the files using following command:
unzip linux_11gR1_database.zip

3. Start the Oracle software installation process.

Now the system is prepared for Oracle software installation. To start the installation process execute the following commands:
cd database
./runInstaller

Note: For OpenSuSE 10.3 only!: If OUI failed during "Checking operating system package requirements" phase and you are verified that all important packages (listed in step #1) are installed then use check box to change status to "User verified" (as shown on picture below).

Post-Instalation Tasks

1. (Optional) Auto Startup and Shutdown of Database and Listener

Login as root and modify /etc/oratab file and change last character to Y for apropriate database.
ORCL:/opt/oracle/111:Y

As root user create new file "oracle" (init script for startup and shutdown the database) in /etc/init.d/ directory with following content:
#! /bin/bash
#
#
# /etc/init.d/oracle
#
#
### BEGIN INIT INFO
# Provides: oracle
# Required-Start: $network
# Required-Stop: $network
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Description: Oracle Database startup script
### END INIT INFO


ORACLE_OWNER="oracle"
ORACLE_HOME="/opt/oracle/111"

case "$1" in
start)
echo -n $"Starting Oracle DB:"
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
echo "OK"
;;
stop)
echo -n $"Stopping Oracle DB:"
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME"
echo "OK"
;;
*)
echo $"Usage: $0 {start|stop}"
esac

Execute (as root) following commands (First script change the permissions, second script is configuring execution for specific runlevels):
chmod 750 /etc/init.d/oracle
chkconfig --add oracle --level 0356

2. (Optional) Auto Startup and Shutdown of Enterprise Manager Database Control

As root user create new file "oraemctl" (init script for startup and shutdown EM DB Console) in /etc/init.d/ directory with following content:
#! /bin/bash
#
#
# /etc/init.d/oraemctl
#
#
### BEGIN INIT INFO
# Provides: oraemctl
# Required-Start: $network
# Required-Stop: $network
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Description: Starting and stopping Oracle Enterprise Manager Database Control
### END INIT INFO


ORACLE_OWNER="oracle"
ORACLE_HOME="/opt/oracle/111"

case "$1" in
start)
echo -n $"Starting Oracle EM DB Console:"
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/emctl start dbconsole"
echo "OK"
;;
stop)
echo -n $"Stopping Oracle EM DB Console:"
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/emctl stop dbconsole"
echo "OK"
;;
*)
echo $"Usage: $0 {start|stop}"
esac

Execute (as root) following commands (First script change the permissions, second script is configuring execution for specific runlevels):
chmod 750 /etc/init.d/oraemctl
chkconfig --add oraemctl --level 0356

3. (Optional) You may consider to use rlwrap for comfortable work with sqlplus and adrci utility. RPM package for SUSE compatible (x86_64) distribution you can download here.
su -
# rpm -ivh rlwrap-0.30-suse.x86_64.rpm
# exit
echo "alias sqlplus='rlwrap sqlplus'" >> /home/oracle/.bash_profile
echo "alias adrci='rlwrap adrci'" >> /home/oracle/.bash_profile
. /home/oracle/.bash_profile

4. (Optional) Restore /etc/SuSE-release from backup file (see step #5 in Pre-Installation Tasks)

Common Installation Errors

DISPLAY not set. Please set the DISPLAY and try again.
Solution: Execute "export DISPLAY=:0.0" when you perform installation on local machine or "export DISPLAY=:0.0 when you perform installation on remote machine connected over SSH". Don't forget to execute "xhost +" command on client machine.

error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
Solution: Install libaio and libaio-devel packages. If packages already installed and error still occurs try execute "ldconfig" as root.


Comments, suggestions, questions, errors (also grammatical :) )? Feel free to contact me.