|« 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.
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:
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.
Specify Inventory Directory and Credentials
Provide Inventory directory and OS group or leave the defaults as is.
Select installation type
Select Enterprise Edition and press next.
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.
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.
Select Configuration Option
Select "Create a Database" and press next.
Select Database Configuration
Select the type of the database you want to create. I would go with "General Purpose".
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 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".
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.
Specify Database Storage Options
Choose if your database will be created in filesystem or ASM.
Specify Backup and Recovery Options
Select "Do not enable Automated backups" and press next.
Specify Database Schema Passwords
Choose same password for all accounts and provide this master password.
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.
Oracle Configuration Manager Registration
You may link your database directly to metalink. I will skip this.
This is a summary of the install.
Oracle 11g R1 Binaries are now being installed.
Once the oracle software binaries are installed Net Configuration and Database Configuration Assistants will kick off. This screen shows status of these 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
Once the database is created you should see this screen, which provides a detail of the database created. Just press OK.
Execute Configuration Scripts
The next step is to execute a couple of scripts from user "root" as suggested by this screen.
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.
Lets log in to the database now.
$ sqlplus / as sysdba SQL> select * from v$version; BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition Release 184.108.40.206.0 - 64bit Production PL/SQL Release 220.127.116.11.0 - Production CORE 18.104.22.168.0 Production TNS for Linux: Version 22.214.171.124.0 - Production NLSRTL Version 126.96.36.199.0 - Production