13 October 2007

Installing and Preparing CentOS 5.0 for the Installation of Oracle 11g Database

CentOS (Community Enterprise Operating System) 2, 3, 4 and 5 are built from publicly available open source SRPMS provided by a prominent North American Enterprise Linux vendor. CentOS conforms fully with the upstream vendors redistribution policies and aims to be 100% binary compatible. (CentOS mainly changes packages to remove upstream vendor branding and artwork).

CentOS is free! The "Prominent North american Enterprise Linux Vendor" and "Upstream Vendor" is Red Hat. In the last three years using CentOS I don't have any compatibility problem! To learn more about CentOS please visit http://www.centos.org

Installation environment
Linux Box is virtual machine created using VMware Workstation 6.0.
Guest OSRed Hat Enterprise Linux 5
Memory1024 MB
Hard Disk60 GB, Hard disk contents are stored in one or more files up to 2 GB each
CD-ROMAuto detect, use physical drive
EthernetBridged: Connected directly to the physical network.
USB-ControlerPresent
Sound AdapterAuto detect
DisplayAuto detect
Processors1
To learn more about VMware Workstation please visit http://www.vmware.com.

Download CentOS 5
The downloads sites of CentOS ISO images You can find here: http://isoredirect.centos.org/centos/5/isos/i386/
My DVD ISO Image I downloaded from here: http://centos.serveroffice.at/5.0/isos/i386/CentOS-5.0-i386-bin-DVD.iso

CentOS Installation
The installation uses mostly the default values. I made following changes:
Hard Drive PartitioningCreate Custom Layout.
Swap Space 2 GB and
one 58 GB root partition "/"
Network deviceConfigured manualy with static IP Address.
Disabled "Use of DHCP"
Disabled "Enable IPv6 support"
IPv4 Address: 192.168.0.95
Netmask: 255.255.255.0
Hostname: vl095.fla.net
Gateway: 192.168.0.1
Primary DNS: 192.168.0.1
RegionEurope/Vienna. select "System clock uses UTC"
Software SelectLeave default: Only Desktop Gnome selected and Radio Button "Customize later" activated
FirewallDisabled
SELinuxPermissive

Here is the Diashow of my CentOS installation:


Install the Required OS Packages

Please download the Oracle 11g Installation Documentation: http://www.oracle.com/pls/db111/to_pdf?pathname=install.111/b32002.pdf

The following package (or later version) must be installed:
binutils-2.17.50.0.6-2.el5
compat-libstdc++-33-3.2.3-61
elfutils-libelf-0.125-3.el5
elfutils-libelf-devel-0.125
gcc-4.1.1-52
gcc-c++-4.1.1-52
glibc-2.5-12
glibc-common-2.5-12
glibc-devel-2.5-12
glibc-headers-2.5-12
libaio-0.3.106
libaio-devel-0.3.106
libgcc-4.1.1-52
libstdc++-4.1.1
libstdc++-devel-4.1.1-52.e15
make-3.81-1.1
sysstat-7.0.0
unixODBC-2.2.11
unixODBC-devel-2.2.11

I installed the required OS Packages using "yum" (Yellowdog Updater, Modified).
Connect to Linux Box as root and start the "yum" command:

yum -y install binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers libaio libaio-devel libgcc libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel

[root@vl095 ~]# yum -y install binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers libaio libaio-devel libgcc libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel
Loading "installonlyn" plugin
Setting up Install Process
Setting up repositories
base 100% |=========================| 1.1 kB 00:00
updates 100% |=========================| 951 B 00:00
addons 100% |=========================| 951 B 00:00
extras 100% |=========================| 1.1 kB 00:00
Reading repository metadata in from local files
Parsing package install arguments
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for sysstat to pack into transaction set.
sysstat-7.0.0-3.el5.i386. 100% |=========================| 14 kB 00:00
---> Package sysstat.i386 0:7.0.0-3.el5 set to be updated
---> Downloading header for unixODBC-devel to pack into transaction set.
unixODBC-devel-2.2.11-7.1 100% |=========================| 16 kB 00:00
---> Package unixODBC-devel.i386 0:2.2.11-7.1 set to be updated
---> Downloading header for unixODBC to pack into transaction set.
unixODBC-2.2.11-7.1.i386. 100% |=========================| 28 kB 00:00
---> Package unixODBC.i386 0:2.2.11-7.1 set to be updated
---> Downloading header for gcc-c++ to pack into transaction set.
gcc-c++-4.1.1-52.el5.2.i3 100% |=========================| 52 kB 00:00
---> Package gcc-c++.i386 0:4.1.1-52.el5.2 set to be updated
---> Downloading header for gcc to pack into transaction set.
gcc-4.1.1-52.el5.2.i386.r 100% |=========================| 59 kB 00:00
---> Package gcc.i386 0:4.1.1-52.el5.2 set to be updated
---> Downloading header for glibc-devel to pack into transaction set.
glibc-devel-2.5-12.i386.r 100% |=========================| 105 kB 00:00
---> Package glibc-devel.i386 0:2.5-12 set to be updated
---> Downloading header for glibc-headers to pack into transaction set.
glibc-headers-2.5-12.i386 100% |=========================| 138 kB 00:00
---> Package glibc-headers.i386 0:2.5-12 set to be updated
---> Downloading header for libaio-devel to pack into transaction set.
libaio-devel-0.3.106-3.2. 100% |=========================| 6.7 kB 00:00
---> Package libaio-devel.i386 0:0.3.106-3.2 set to be updated
---> Downloading header for libgcc to pack into transaction set.
libgcc-4.1.1-52.el5.2.i38 100% |=========================| 49 kB 00:00
---> Package libgcc.i386 0:4.1.1-52.el5.2 set to be updated
---> Downloading header for compat-libstdc++-33 to pack into transaction set.
compat-libstdc++-33-3.2.3 100% |=========================| 7.2 kB 00:00
---> Package compat-libstdc++-33.i386 0:3.2.3-61 set to be updated
---> Downloading header for libstdc++ to pack into transaction set.
libstdc++-4.1.1-52.el5.2. 100% |=========================| 49 kB 00:00
---> Package libstdc++.i386 0:4.1.1-52.el5.2 set to be updated
---> Downloading header for libstdc++-devel to pack into transaction set.
libstdc++-devel-4.1.1-52. 100% |=========================| 130 kB 00:00
---> Package libstdc++-devel.i386 0:4.1.1-52.el5.2 set to be updated
---> Downloading header for elfutils-libelf-devel to pack into transaction set.
elfutils-libelf-devel-0.1 100% |=========================| 13 kB 00:00
---> Package elfutils-libelf-devel.i386 0:0.125-3.el5 set to be updated
--> Running transaction check
--> Processing Dependency: elfutils-libelf-devel-static = 0.125-3.el5 for package: elfutils-libelf-devel
--> Processing Dependency: libgomp.so.1 for package: gcc
--> Processing Dependency: libgomp = 4.1.1-52.el5.2 for package: gcc
--> Processing Dependency: cpp = 4.1.1-52.el5.2 for package: gcc
--> Restarting Dependency Resolution with new changes.
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for elfutils-libelf-devel-static to pack into transaction set.
elfutils-libelf-devel-sta 100% |=========================| 13 kB 00:00
---> Package elfutils-libelf-devel-static.i386 0:0.125-3.el5 set to be updated
---> Downloading header for cpp to pack into transaction set.
cpp-4.1.1-52.el5.2.i386.r 100% |=========================| 52 kB 00:00
---> Package cpp.i386 0:4.1.1-52.el5.2 set to be updated
---> Downloading header for libgomp to pack into transaction set.
libgomp-4.1.1-52.el5.2.i3 100% |=========================| 49 kB 00:00
---> Package libgomp.i386 0:4.1.1-52.el5.2 set to be updated
--> Running transaction check

Dependencies Resolved

=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
compat-libstdc++-33 i386 3.2.3-61 base 232 k
elfutils-libelf-devel i386 0.125-3.el5 base 20 k
gcc i386 4.1.1-52.el5.2 updates 4.9 M
gcc-c++ i386 4.1.1-52.el5.2 updates 3.3 M
glibc-devel i386 2.5-12 base 2.0 M
glibc-headers i386 2.5-12 base 605 k
libaio-devel i386 0.3.106-3.2 base 11 k
libstdc++-devel i386 4.1.1-52.el5.2 updates 9.4 M
sysstat i386 7.0.0-3.el5 base 163 k
unixODBC i386 2.2.11-7.1 base 832 k
unixODBC-devel i386 2.2.11-7.1 base 739 k
Updating:
libgcc i386 4.1.1-52.el5.2 updates 82 k
libstdc++ i386 4.1.1-52.el5.2 updates 350 k
Installing for dependencies:
elfutils-libelf-devel-static i386 0.125-3.el5 base 60 k
libgomp i386 4.1.1-52.el5.2 updates 69 k
Updating for dependencies:
cpp i386 4.1.1-52.el5.2 updates 2.6 M

Transaction Summary
=============================================================================
Install 13 Package(s)
Update 3 Package(s)
Remove 0 Package(s)

Total download size: 25 M
Downloading Packages:
(1/16): sysstat-7.0.0-3.e 100% |=========================| 163 kB 00:00
(2/16): elfutils-libelf-d 100% |=========================| 60 kB 00:00
(3/16): unixODBC-devel-2. 100% |=========================| 739 kB 00:01
(4/16): unixODBC-2.2.11-7 100% |=========================| 832 kB 00:01
(5/16): gcc-c++-4.1.1-52. 100% |=========================| 3.3 MB 00:07
(6/16): gcc-4.1.1-52.el5. 100% |=========================| 4.9 MB 00:12
(7/16): glibc-devel-2.5-1 100% |=========================| 2.0 MB 00:05
(8/16): glibc-headers-2.5 100% |=========================| 605 kB 00:02
(9/16): cpp-4.1.1-52.el5. 100% |=========================| 2.6 MB 00:06
(10/16): libaio-devel-0.3 100% |=========================| 11 kB 00:00
(11/16): libgcc-4.1.1-52. 100% |=========================| 82 kB 00:00
(12/16): compat-libstdc++ 100% |=========================| 232 kB 00:00
(13/16): libstdc++-4.1.1- 100% |=========================| 350 kB 00:00
(14/16): libstdc++-devel- 100% |=========================| 9.4 MB 00:26
(15/16): elfutils-libelf- 100% |=========================| 20 kB 00:00
(16/16): libgomp-4.1.1-52 100% |=========================| 69 kB 00:00
warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID e8562897
Importing GPG key 0xE8562897 "CentOS-5 Key (CentOS 5 Official Signing Key) " from http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Updating : libgcc ####################### [ 1/19]
Updating : libstdc++ ####################### [ 2/19]
Installing: libstdc++-devel ####################### [ 3/19]
Installing: libgomp ####################### [ 4/19]
Updating : cpp ####################### [ 5/19]
Installing: glibc-headers ####################### [ 6/19]
Installing: glibc-devel ####################### [ 7/19]
Installing: gcc ####################### [ 8/19]
Installing: unixODBC ####################### [ 9/19]
Installing: unixODBC-devel ####################### [10/19]
Installing: gcc-c++ ####################### [11/19]
Installing: compat-libstdc++-33 ####################### [12/19]
Installing: libaio-devel ####################### [13/19]
Installing: sysstat ####################### [14/19]
Installing: elfutils-libelf-devel ####################### [15/19]
Installing: elfutils-libelf-devel-static ####################### [16/19]
Cleanup : cpp ####################### [17/19]
Cleanup : libgcc ####################### [18/19]
Cleanup : libstdc++ ####################### [19/19]

Installed: compat-libstdc++-33.i386 0:3.2.3-61 elfutils-libelf-devel.i386 0:0.125-3.el5 gcc.i386 0:4.1.1-52.el5.2 gcc-c++.i386 0:4.1.1-52.el5.2 glibc-devel.i386 0:2.5-12 glibc-headers.i386 0:2.5-12 libaio-devel.i386 0:0.3.106-3.2 libstdc++-devel.i386 0:4.1.1-52.el5.2 sysstat.i386 0:7.0.0-3.el5 unixODBC.i386 0:2.2.11-7.1 unixODBC-devel.i386 0:2.2.11-7.1
Dependency Installed: elfutils-libelf-devel-static.i386 0:0.125-3.el5 libgomp.i386 0:4.1.1-52.el5.2
Updated: libgcc.i386 0:4.1.1-52.el5.2 libstdc++.i386 0:4.1.1-52.el5.2
Dependency Updated: cpp.i386 0:4.1.1-52.el5.2
Complete!
Check and Modify /etc/hosts file

[root@vl095 ~]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
192.168.0.95 vl095.fla.net vl095
Set Kernel Parameters

Recommended minimum values are:
fs.file-max = 512 * PROCESSES
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 262144

Check Your current value using following commands:
/sbin/sysctl -a | grep sem
/sbin/sysctl -a | grep shm
/sbin/sysctl -a | grep file-max
/sbin/sysctl -a | grep ip_local_port_range
/sbin/sysctl -a | grep rmem_default
/sbin/sysctl -a | grep rmem_max
/sbin/sysctl -a | grep wmem_default
/sbin/sysctl -a | grep wmem_max

Content of the Kernel configuration file /etc/sysctl.conf
[root@vl095 ~]# cat /etc/sysctl.conf
# Kernel sysctl configuration file for Red Hat Linux
#
# For binary values, 0 is disabled, 1 is enabled. See sysctl(8) and
# sysctl.conf(5) for more details.
# Controls IP packet forwarding
net.ipv4.ip_forward = 0
# Controls source route verification
net.ipv4.conf.default.rp_filter = 1
# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0
# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0
# Controls whether core dumps will append the PID to the core filename
# Useful for debugging multi-threaded applications
kernel.core_uses_pid = 1
# Controls the use of TCP syncookies
net.ipv4.tcp_syncookies = 1
# Controls the maximum size of a message, in bytes
kernel.msgmnb = 65536
# Controls the default maxmimum size of a mesage queue
kernel.msgmax = 65536
# Controls the maximum shared segment size, in bytes
kernel.shmmax = 4294967295
# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 268435456
# Parameters for oracle
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
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
To change the current values of the kernel parameters enter: /sbin/sysctl -p
[root@vl095 ~]# /sbin/sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 4294967295
kernel.shmall = 268435456
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
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
Configure owner and groups for Oracle Software

Create groups "oinstall" and "dba". Please check if group-id's 5001 and 5002 are free. If not take some other group-id.
[root@vl095 ~]# groupadd -g 5001 oinstall
[root@vl095 ~]# groupadd -g 5002 dba
Create directory for oracle user "home".
[root@vl095 ~]# mkdir -p /appl/home
[root@vl095 ~]# chgrp oinstall /appl/home
Create "oracle" user:
[root@vl095 ~]# useradd -u 5001 -g oinstall -G dba -c "Oracle Software Owner" -d /appl/home/oracle -s /bin/bash oracle
Change password for user "oracle" (my password is qwertz):
[root@vl095 ~]# passwd oracle
Changing password for user oracle.
New UNIX password:
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

Configure Oracle software owner limits

Add to the /etc/security/limits.conf file:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536

Add to the /etc/pam.d/login file:
session required /lib/security/pam_limits.so
session required pam_limits.so

Create file "oracle.sh" in directory /etc/profile.d with the following lines:
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
Connect to Linux Box as "oracle" user and run the "xclok" to check if X11 is working.
[root@vl095 ~]# ssh -Xl oracle vl095
The authenticity of host 'vl095 (192.168.0.95)' can't be established.
RSA key fingerprint is 8d:58:db:80:97:20:7f:e4:5e:cb:8a:10:4b:98:40:5f.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'vl095,192.168.0.95' (RSA) to the list of known hosts.
oracle@vl095's password:
/usr/bin/xauth: creating new authority file /appl/home/oracle/.Xauthority
[oracle@vl095 ~]$ xclock
CentOS is now prepared for the installation of the Oracle 11g software.

Regards,
Flavio

KEYWORDS: centos 5, centos 5.0, oracle 11g 11 rel 1, database, set, setting, prepare, install,configure, preparation, installation configuration yum, howto, linux enterprise, unix, os, operating system, rhel 5.0, red hat, redhat, hardware, software, vmware workstation 6 6.0, virtual machine.