Welcome

Wheresoever you go, go with all your heart. (Confucius)

4/06/2011

Installation of Oracle 11g Release 1 (11.1.0.6.0) on RedHat EL 4, 5 and (Oracle) Enteprise Linux 4, 5


This paper (HOWTO) describes step-by-step installation of Oracle 11g R1 database software on RedHat Enterprise Linux 4 and 5 or Enteprise Linux 4 and 5 shipped by Oracle Corp. This article is useful for Centos Linux release 4 and 5. Note that Centos 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

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 reboot system or execute "sysctl -p" command to apply above settings.

For RedHat (OEL, Centos, WBL) 4 version: Edit the /etc/pam.d/login file and add following line:
session required /lib/security/pam_limits.so

For RedHat (OEL, Centos) 5 version: 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:
ORACLE_BASE=/opt/oracle
ORACLE_HOME=$ORACLE_BASE/111
ORACLE_SID=ORCL
LD_LIBRARY_PATH=$ORACLE_HOME/lib
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

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 -q binutils elfutils elfutils-libelf gcc gcc-c++ glibc glibc-common glibc-devel compat-libstdc++-33 cpp make compat-db sysstat libaio libaio-devel unixODBC unixODBC-devel|sort

If some package is not installed then install it from installation media or download it from following locations:
RedHat Enterprise Linux 4 - source packages only
RedHat Enterprise Linux 5 - source packages only
Centos Linux 4
Centos Linux 5


This is example how to build RPM package from source package (libaio-0.3.105-2.src.rpm). Note gcc, make and rpm-build (and dependent) packages must be already installed on your system.
# rpm -ivh libaio-0.3.105-2.src.rpm
# cd /usr/src/redhat/SPECS/
# rpmbuild --target i386 libaio.spec
# cd ../RPMS/i386/
# rpm -ivh libaio-0.3.105-2.i386.rpm libaio-devel-0.3.105-2.i386.rpm


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


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

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
#
# oracle Init file for starting and stopping
# Oracle Database. Script is valid for 10g and 11g versions.
#
# chkconfig: 35 80 30
# description: Oracle Database startup script

# Source function library.

. /etc/rc.d/init.d/functions

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
#
# oraemctl Starting and stopping Oracle Enterprise Manager Database Control.
# Script is valid for 10g and 11g versions.
#
# chkconfig: 35 80 30
# description: Enterprise Manager DB Control startup script

# Source function library.

. /etc/rc.d/init.d/functions

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 RedHat compatible (x86) distribution you can download here.
su -
# rpm -ivh rlwrap-0.24-rh.i386.rpm
# exit
echo "alias sqlplus='rlwrap sqlplus'" >> /home/oracle/.bash_profile
echo "alias adrci='rlwrap adrci'" >> /home/oracle/.bash_profile
. /home/oracle/.bash_profile


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.

Check complete. The overall result of this check is: Failed <<<< 
Solution: Install missing package or set check system parameters (See reason of failure).


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

Environment variables on Oracle 11g Release 2

  • Setting up environment variables

$ vi .bashrc
# add ORACLE_HOME, ORACLE_BASE and ORACLE_SID
# example
export ORACLE_BASE=/db/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=oracle_sid


  • Test

$ sqlplus /nolog
SQL> connect / as sysdba
SQL>  startup
ORA-01078: failure in processing system parametersLRM-00109: could not open parameter file 'anywhere'
If you are facing the above error while startup of oracle, possible reasons might be the init{ORACLE_SID}.ora file not accessible by oracle user. To solve this problem, you can get your pfile at the location $ORACLE_BASE/admin/$ORACLE_SID/pfile/. A typical file name is init.ora.{NUMBER}. From that location, make a spfile by the following:
$ORACLE_BASE=/db/app/oracle/ and $ORACLE_SID=ora_sid
$sqlplus /nolog
SQL> connect / as sysdba
SQL> create spfile from pfile='/db/app/oracle/admin/ora_sid/pfile/init.ora.{NUMBER}
   File created.
SQL> startup