Zahid Karim
Recent Posts
1.Draw plus and cross sign into PDF via PLSQL using PL_FPDF
2.Draw Triangle directly into PDF via PLSQL using PL_FPDF
3.Write fast and efficient PLSQL - DBMS_PROFILER
4.Fix physically corrupt data blocks using PLSQL - DBMS_REPAIR
5.Encrypt or Decrypt sensitive data using PLSQL - DBMS_CRYPTO
Find me on
Upgrade Oracle 10g Release 2 to Oracle 11g Release 2 Oracle 11g Access Control List for External Network Services

Install Oracle 11g Release 1 on RHEL 5

Posted by Zahid on July 14, 2010.

In this article we will go through step by step installation of Oracle 11g Release 1 on RHEL 5 (Red Hat Enterprise Linux 5). It can be referred as a quick installation guide for Oracle 11g R1 on RHEL5.

Checking the Hardware Requirements

We need to make sure tha the hardware we have is compatible with Oracle 11g R1.

-- Check Physical Memory.
# grep MemTotal /proc/meminfo
MemTotal:      2059516 kB
/*
 At least 1GB of physical Memory (RAM) is required. 
 In my case I have 2GB.
*/

-- Check Swap Space.
# grep SwapTotal /proc/meminfo
SwapTotal:     3148732 kB

/*
 RAM between 1GB and 2GB then Swap = 1.5 times the size of RAM
 RAM between 2GB and 16GB then Swap = equal to the size of RAM
 RAM more than 16GB then Swap Size = 0.75 times the size of RAM
 Since my RAM is 2GB, so I have 3GB of Swap Size.
*/

# df -h /dev/shm
Filesystem            Size  Used Avail Use% Mounted on
tmpfs                1006M     0 1006M   0% /dev/shm

/*
 OS shared memory should be at least equal to what your memory
 management targets (automatic memory management) are going to 
 be later on. For example if you have plans to use memory management 
 targets lower then 1000M so 1006 M of shared memory file system 
 is sufficient for you. 
 But if you would like to have a bigger shared memory (/dev/shm) 
 size then do the following:
*/

# mount -t tmpfs tmpfs -o size=1500m /dev/shm
# df -h /dev/shm
Filesystem            Size  Used Avail Use% Mounted on
tmpfs                 1.5G     0  1.5G   0% /dev/shm

-- Check space available in /tmp
# df -h /tmp
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3             8.7G  3.7G  4.5G  45% /

/* 
  You need to have at least 150M to 200M of space in the /tmp directory.
  Make sure you have more then 200M in the column "Avail" in the above output.
*/

-- Disk space requirements for oracle software and pre-configured database.
-- I have a separate partition "/u01" that I created for Oracle Software 
-- and database files
# df -h /u01
Filesystem            Size  Used Avail Use% Mounted on
/dev/sdb1              12G  159M   11G   2% /u01

-- I have 11G avaialbale space on the partition /u01.
-- Which is quite sufficient according to the requirements below.
/*
  Space requirement for Oracle 11g Release 1 Software:
     Enterprise Edition      4.35G
     Standard Edition 	     3.73G
  
  Space requirement for Orale 11g R1 Database Files:
     Enterprise Edition      1.68G
     Standard Edition 	     1.48G
     (
      creating a database is always optional with oracle installation. 
      Can be done later.
     )
*/

Checking the Software Requirements

Check if software requirements for Oracle 11g R1 are met on this machine.

/*
 To install Oracle 11g Release 1 on RHEL 5 you should be running
 a kernel version 2.6.18 or later.
*/
# uname -r
2.6.18-194.el5

Now we need to make sure we have all necessary packages for Oracle. Put your Linux Media into DVD and go to the "Server" directory.

cd /dvd_mount_point/Server

For Linux 64-bit:
rpm -Uvih binutils-2*`uname -p`*
rpm -Uvih compat-libstdc++-33*`uname -p`*
rpm -Uvih compat-libstdc++-33*i386*
rpm -Uvih elfutils-libelf-0*`uname -p`*
rpm -Uvih elfutils-libelf-devel-0*`uname -p`*
rpm -Uvih gcc-4*`uname -p`*
rpm -Uvih gcc-c++-4*`uname -p`*
rpm -Uvih glibc-2*`uname -p`*
rpm -Uvih glibc-2*i686*
rpm -Uvih glibc-common-2*`uname -p`*
rpm -Uvih glibc-devel-2*`uname -p`*
rpm -Uvih glibc-devel-2*i386*
rpm -Uvih libaio-0*`uname -p`*
rpm -Uvih libaio-0*i386*
rpm -Uvih libaio-devel-0*`uname -p`*
rpm -Uvih libgcc-4*`uname -p`*
rpm -Uvih libgcc-4*i386*
rpm -Uvih libstdc++-4*`uname -p`* 
rpm -Uvih libstdc++-4*i386*
rpm -Uvih libstdc++-devel-4*`uname -p`*
rpm -Uvih make-3*`uname -p`*
rpm -Uvih numactl-devel-0*`uname -p`*
rpm -Uvih sysstat-7*`uname -p`*
rpm -Uvih unixODBC-2*`uname -p`*
rpm -Uvih unixODBC-2*i386*
rpm -Uvih unixODBC-devel-2*`uname -p`*

For Linux 32-bit:
rpm -Uvih binutils-2*
rpm -Uvih compat-libstdc++-33*
rpm -Uvih elfutils-libelf-0*
rpm -Uvih elfutils-libelf-devel-0*
rpm -Uvih glibc-2*`uname -p`*
rpm -Uvih glibc-common-2*
rpm -Uvih glibc-devel-2*
rpm -Uvih glibc-headers-2*
rpm -Uvih gcc-4*
rpm -Uvih gcc-c++-4*
rpm -Uvih libaio-0*
rpm -Uvih libaio-devel-0* 
rpm -Uvih libgcc-4*
rpm -Uvih libstdc++-4* 
rpm -Uvih libstdc++-devel-4*
rpm -Uvih make-3*
rpm -Uvih numactl-devel-0*
rpm -Uvih sysstat-7*
rpm -Uvih unixODBC-2*
rpm -Uvih unixODBC-devel-2*

NOTE: If you are using RHEL5 DVD then you should find them all in the "Server" directory in your DVD. And if you don't find one there you may download it from the Linux vendor's Web site.
If you have your Linux distribution in 3 CDs then these will be scattered on all three CDs in the Server directory on all CDs.

Pre-Installation Steps

Make sure that there is an entry in /etc/hosts file for your machine like this:

[IP-address]  [fully-qualified-machine-name]  [machine-name]

/* 
 Where "fully-qualified-machine-name" is your
 "machine_name"."domain_name"
*/

Next we need to adjust the Linux Kernel Parameters to support Oracle.
Open /etc/sysctl.conf and add the following lines:

# Oracle settings
fs.file-max = 65536
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 1024 65500
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576

Note: You may find the parameters mentioned above already present in the /etc/sysctl.conf file. If they have a value lower then mentioned above then make sure you change it, but if they have a larger value then perhaps its safe to leave it as is.

-- Make the kernel parameters changes effective immediately:
# /sbin/sysctl -p

-- Verify the parameters are changed or not? 
# /sbin/sysctl -a | grep name_of_kernel_parameter -- e.g. shmall

Now setup User that we will use as Oracle owner and the groups that it will need for installing and managing Oracle.

/usr/sbin/groupadd oinstall
/usr/sbin/groupadd dba
/usr/sbin/groupadd oper
/usr/sbin/useradd -g oinstall -G dba,oper oracle
/usr/bin/passwd oracle

Create directories where the Oracle Software and database will be installed.

mkdir -p /u01/app/oracle/product/11.1.0/db_1
chown -R oracle:oinstall /u01
chmod -R 0775 /u01

/*
 The above directory structure is designed to comply with OFA 
 (Oracle Flexible Architecture) i.e. a directory structure to
 support multiple oracle software installations.

 ORACLE_BASE=/u01/app/oracle 
 -- Base directory for all oracle installations.

 ORACLE_HOME=ORACLE_BASE/product/11.1.0/db_1 -- 11.1.0 installation 1.
 ORACLE_HOME=ORACLE_BASE/product/11.1.0/db_2 -- 11.1.0 installation 2.
 ORACLE_HOME=ORACLE_BASE/product/10.2.0/db_1 -- 10.2.0 installation 1.

 and so on....
*/

Now set the shell limits for the user Oracle.
Open /etc/security/limits.conf and add these lines.

oracle           soft    nproc   2047
oracle           hard    nproc   16384
oracle           soft    nofile  1024
oracle           hard    nofile  65536

Where "nproc" is the maximum number of processes available to the user and "nofiles" is the number of open file descriptors.

Open /etc/pam.d/login and add the following line if it is already not there.

session    required     pam_limits.so

Disable secure linux by editing the /etc/selinux/config file, making sure the SELINUX flag is set as follows:

SELINUX=disabled

If you leave SELINUX=enforcing then you may get an error later while starting sqlplus:
sqlplus: error while loading shared libraries:
/usr/lib/oracle/default/client64/lib/libclntsh.so.11.1: cannot restore segment
prot after reloc: Permission denied

Allow the user oracle to use X server, which it will need to run Oracle Universal Installer.

# xhost +SI:localuser:oracle

Now switch to the user oracle.

# su - oracle

-- Let's see which shell is being used by the user Oracle.
$ echo $SHELL
/bin/bash

If the returned shell is bash then open ~/.bash_profile and add these lines:

# Oracle settings
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR

# If /tmp doesn't have 200M space free then you can workaround it by
# pointing the variables TMP AND TMPDIR to a location where you have 
# sufficient space.

ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.1.0/db_1; export ORACLE_HOME
ORACLE_SID=ora11g; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH; export PATH

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib;
export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;
export CLASSPATH

if [ $USER = "oracle" ]; then
   if [ $SHELL = "/bin/ksh" ]; then
     ulimit -p 16384
     ulimit -n 65536
   else
     ulimit -u 16384 -n 65536
   fi
fi

umask 022

If using C shell then open ~/.login and add these lines:

# Oracle settings
setenv TMP=/tmp
setenv TMPDIR=$TMP

# If /tmp doesn't have 200mb space free then you can workaround it
# by pointing the variables TMP AND TMPDIR to a location where you
# have sufficient space. Oracle will then use this directory for 
# temporary files.

setenv ORACLE_BASE /u01/app/oracle
setenv ORACLE_HOME $ORACLE_BASE/product/11.1.0/db_1
setenv ORACLE_SID ora11g
setenv ORACLE_TERM xterm
setenv PATH /usr/sbin:$PATH
setenv PATH $ORACLE_HOME/bin:$PATH

setenv LD_LIBRARY_PATH $ORACLE_HOME/lib:/lib:/usr/lib
setenv CLASSPATH $ORACLE_HOME/JRE:$ORACLE_HOME/jlib
setenv CLASSPATH $CLASSPATH:$ORACLE_HOME/rdbms/jlib

if ( $USER == "oracle" ) then
      limit maxproc 16384
      limit descriptors 65536
endif

umask 022

Now run the following command to make these changes effective in the current session of user oracle.

-- for bash shell
$ source ~/.bash_profile
-- for C shell
$ source ~/.login

Install Oracle 11g R1 on RHEL 5

The environment is ready for oracle installation. Its time to prepare the oracle installation media now.
Download or Copy the oracle media to the oracle user home directory i.e. /home/oracle.
Once Download/Copy is done unzip the media as follows:

$ cd /home/oracle
$ ls
linux.x64_11gR1_database_1013_1.zip
$ 
$ unzip linux.x64_11gR1_database_1013_1.zip

Once the unzip is finished go to the "database" directory unzipped in the previous step and start the Oracle Universal Installer.

$ cd /home/oracle/database/
$ ./runInstaller

The OUI (Oracle Universal Installer) should start and you should see following screens in the order given below:

Select Installation Method

This is the first screen you should see when you run Installer. Select Advanced here as we will create a database too with the oracle software.

  • Select Installation Method
  • Specify Inventory Directory and Credentials

    Provide Inventory directory and OS group or leave the defaults as is.

  • Specify Inventory Directory and Credentials
  • Select installation type

    Select Enterprise Edition and press next.

  • Select installation type
  • Install Location

    Provide ORACLE_BASE directory and ORACLE_HOME directory. If you have setup the environment as describe din this article then Installer should pick these values up as you have configured earlier.

  • Install Location
  • Product-Specific Prerequisite Checks

    Oracle will perform prerequisite checks here and will notify you if any check fails. If you have configured the system as demonstrated in this article all checks should pass.

  • Product-Specific Prerequisite Checks
  • Select Configuration Option

    Select "Create a Database" and press next.

  • Select Configuration Option
  • Select Database Configuration

    Select the type of the database you want to create. I would go with "General Purpose".

  • Select Database Configuration
  • Specify Database Configuration Options

    Provide ORACLE_SID and Global Database Name here. It should pick up the oracle sid value if $ORACLE_SID environment variable is set.

  • Specify Database Configuration Options
  • Specify Database Config Details

    Here you need to choose if you want to use Automatic Memory Management or not. I would go with AMM enabled. Further more you can see there are three more tabs on this screen.
    Character Sets - Choose the character set here. For a test database just leave the default.
    Security - Enable or Disable Oracle 11g security features. Lease as default.
    Sample Schemas - Choose if you want to create sample schemas like SCOTT , HR etc. Go to this tab and check the checkbox which says "Create Sample Schemas".

  • Specify Database Config Details
  • Select Database Management Options

    Choose if you want to use Grid Control or Database Control for database management. You may also enable Email Notifications of Alerts from Database Control.

  • Select Database Management Options
  • Specify Database Storage Options

    Choose if your database will be created in filesystem or ASM.

  • Specify Database Storage Options
  • Specify Backup and Recovery Options

    Select "Do not enable Automated backups" and press next.

  • Specify Backup and Recovery Options
  • Specify Database Schema Passwords

    Choose same password for all accounts and provide this master password.

  • Specify Database Schema Passwords
  • Privileged Operating System Groups

    According to our configurations the OSDBA group is "dba", OSOPER group is "oper" and since we are not using ASM for database storage so we haven't created OSASM group. Just select oracle user's primary group oinstall as OSASM group.

  • Privileged Operating System Groups
  • Oracle Configuration Manager Registration

    You may link your database directly to metalink. I will skip this.

  • Oracle Configuration Manager Registration
  • Installation Summary

    This is a summary of the install.

  • Installation Summary
  • Installation Progress

    Oracle 11g R1 Binaries are now being installed.

  • Installation Progress
  • Configuration Assistants

    Once the oracle software binaries are installed Net Configuration and Database Configuration Assistants will kick off. This screen shows status of these assistants.

  • Configuration Assistants
  • Database Configuration Assistants

    This is Database Configuration Assistant and it will be invoked by the Oracle Installer to create a database. Just watch it to finish successfully.

  • Database Configuration Assistants
  • Database Configuration Assistants

    Once the database is created you should see this screen, which provides a detail of the database created. Just press OK.

  • Database Configuration Assistants
  • Execute Configuration Scripts

    The next step is to execute a couple of scripts from user "root" as suggested by this screen.

  • Execute Configuration Scripts
  • Open another console and login as root. Execute following once logged in successfully.

    # /u01/app/oraInventory/orainstRoot.sh
    Changing permissions of /u01/app/oraInventory to 770.
    Changing groupname of /u01/app/oraInventory to oinstall.
    The execution of the script is complete
    
    Changing groupname of /u01/app/oraInventory to oinstall.
    The execution of the script is complete.
    
    # /u01/app/oracle/product/11.1.0/db_1/root.sh
    Running Oracle 11g root.sh script...
    
    The following environment variables are set as:
        ORACLE_OWNER= oracle
        ORACLE_HOME=  /u01/app/oracle/product/11.1.0/db_1
    
    Enter the full pathname of the local bin directory: [/usr/local/bin]: 
       Copying dbhome to /usr/local/bin ...
       Copying oraenv to /usr/local/bin ...
       Copying coraenv to /usr/local/bin ...
    
    
    Creating /etc/oratab file...
    Entries will be added to the /etc/oratab file as needed by
    Database Configuration Assistant when a database is created
    Finished running generic part of root.sh script.
    Now product-specific root actions will be performed.
    Finished product-specific root actions.

    End of Installation

    When the root scripts are complete come back to the oracle installer and press OK on the "Execute Configuration Scripts" screen. The next screen you should see is the End of Install screen. Press Exit to quit the oracle installer.

  • End of Installation
  • Lets log in to the database now.

    $ sqlplus / as sysdba
    
    SQL> select * from v$version;
    
    BANNER
    --------------------------------------------------------------------------------
    Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
    PL/SQL Release 11.1.0.6.0 - Production
    CORE    11.1.0.6.0      Production
    TNS for Linux: Version 11.1.0.6.0 - Production
    NLSRTL Version 11.1.0.6.0 - Production

    See also:
    How to Install Red Hat Enterprise Linux 5
    How to Install Red Hat Enterprise Linux 4
    Install Oracle 10g Release 2 on RHEL 5