This article presents installation of Oracle 11.2.0.3 on OEL6.
Read following article to install OEL6 Linux: Install Oracle Linux 6 64 bit(for comfort set 2G memory for your virtual machine). During OEL6 installation I drop user oracle and both group dba and oinstall.
11.2.0.3 installation guide presents full separation of grid and oracle user.
Add groups
/usr/sbin/groupadd -g 501 oinstall /usr/sbin/groupadd -g 502 dba /usr/sbin/groupadd -g 503 oper /usr/sbin/groupadd -g 504 asmadmin /usr/sbin/groupadd -g 505 asmdba /usr/sbin/groupadd -g 506 asmoper
Add users
/usr/sbin/useradd -u 501 -g oinstall -G asmadmin,asmdba,asmoper,dba grid /usr/sbin/useradd -u 502 -g oinstall -G dba,asmdba oracle
Modification and verification for user and groups can be done in graphical mode -run from menu: System->Administration->Users and Groups
Privileges and Groups for ASM
ASM privileges - SYSASM, SYSOPER, SYSDBA. SYSASM - provides full administration privileges for ASM instance. SYSDBA - provides access to ASM disk. It's just subset of SYSASM. Used to separate grid user from oracle. SYSOPER - it's subset of SYSASM so enables subset of administration privileges like startup/shutdown/mount/dismount/check diskgroup Above privileges are granted to a given users by unix groups
ASM groups - ASMADMIN, ASMDBA, ASMOPER ASMADMIN - grants ASM privilege SYSASM ASMDBA - grants ASM privilege SYSDBA ASMOPER - grants ASM privilege SYSOPER NOTE - user oracle has got ASMDBA group so gets ASM privilege SYSDBA to be able to read/write asm devices. Remember don't mix ASM SYSDBA(granted by group ASMDBA) with Oracle SYSDBA(granted by group dba). For example user grid has got group ASMDBA but is not able to restart oracle instance but just asm instance. Group dba can be granted to grid user if you want to use Oracle Restart feature.
Change password for users
passwd oracle passwd grid
Add kernel parameters to /etc/sysctl.conf
--kernel parameters for 11g installation kernel.shmmni = 4096 kernel.shmmax = 4398046511104 kernel.shmall = 1073741824 kernel.sem = 250 32000 100 128 fs.aio-max-nr = 1048576 fs.file-max = 6815744 net.ipv4.ip_local_port_range = 9000 65500 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048586
Apply kernel parameters
/sbin/sysctl -p
Add following line for user grid and oracle shell limits in file /etc/security/limits.conf
--shell limits for users oracle and grid 11gR2 grid soft nproc 131072 grid hard nproc 131072 grid soft nofile 131072 grid hard nofile 131072 grid soft core unlimited grid hard core unlimited grid soft memlock 50000000 grid hard memlock 50000000 oracle soft nproc 131072 oracle hard nproc 131072 oracle soft nofile 131072 oracle hard nofile 131072 oracle soft core unlimited oracle hard core unlimited oracle soft memlock 50000000 oracle hard memlock 50000000
The “/etc/hosts” file must contain a fully qualified name for the server.
<IP-address> <fully-qualified-machine-name> <machine-name>
For example.
127.0.0.1 oel6 oel6.dbaora.com localhost localhost.localdomain
Create .bash_profile for user grid
# Oracle Settings export TMP=/tmp export ORACLE_HOSTNAME=oel6.dbaora.com export ORACLE_UNQNAME=+ASM export ORACLE_BASE=/ora01/app/grid export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/grid export ORACLE_SID=+ASM PATH=/usr/sbin:$PATH:$ORACLE_HOME/bin export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; alias cdob='cd $ORACLE_BASE' alias cdoh='cd $ORACLE_HOME' alias tns='cd $ORACLE_HOME/network/admin' alias envo='env | grep ORACLE'
Create .bash_profile for user oracle
# Oracle Settings export TMP=/tmp export ORACLE_HOSTNAME=oel6.dbaora.com export ORACLE_UNQNAME=ORA11G export ORACLE_BASE=/ora01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1 export ORACLE_SID=ORA11G PATH=/usr/sbin:$PATH:$ORACLE_HOME/bin export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; alias cdob='cd $ORACLE_BASE' alias cdoh='cd $ORACLE_HOME' alias tns='cd $ORACLE_HOME/network/admin' alias envo='env | grep ORACLE' umask 022
Check which packages are installed and which are missing
rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE}(%{ARCH})\n' binutils \ compat-libstdc++-33 \ elfutils-libelf \ elfutils-libelf-devel \ gcc \ gcc-c++ \ glibc \ glibc-common \ glibc-devel \ glibc-headers \ ksh \ libaio \ libaio-devel \ libgcc \ libstdc++ \ libstdc++-devel \ make \ sysstat \ unixODBC \ unixODBC-devel
Install missing packages. It’s just example:
#directory with mounted Oracle Enterprise Linux 6 install disk cd /media/OL6.2 x86_64 Disc 1 20111212/Server/Packages #install missed packages (example for package unixODBC*) rpm -Uvh unixODBC*
Create directory structure
mkdir -p /ora01/app chown grid:oinstall /ora01/app chmod 775 /ora01/app
ORACLE_BASE for grid
mkdir -p /ora01/app/grid chown -R grid:oinstall /ora01/ chmod 775 /ora01/app/grid
ORACLE_BASE for oracle
mkdir -p /ora01/app/oracle chown oracle:oinstall /ora01/app/oracle chmod 775 /ora01/app/oracle
Create ORACLE_HOME directories for grid and oracle
mkdir -p /ora01/app/oracle/product/11.2.0/db_1 chown oracle:oinstall -R /ora01/app/oracle mkdir -p /ora01/app/grid/product/11.2.0/grid chown grid:oinstall -R /ora01/app/grid
Disable secure linux by editing the “/etc/selinux/config” file, making sure the SELINUX flag is set as follows. It requires REBOOT to be effective !!!
SELINUX=disabled
Disable Firewall
Run firewall graphical manager System->Administration->Firewall and click “Disable” button. Remember to apply changes File->Apply before quit this manager.
It’s time to add ASM disks to our host. There are 2 options:
- create dummy loopback device to simulate our drive
- add new drive to virtual machine dedicated for ASM
Option number 1 – add loopback device
--create directory for loopback devices mkdir /asmdisks
--create dummy files dd if=/dev/zero of=/asmdisks/disk1 bs=1024k count=5120 dd if=/dev/zero of=/asmdisks/disk2 bs=1024k count=5120
--change owner and group for grid user chown -R grid:asmdba /asmdisks
--check privileges ls -la /asmdisks total 10485776 drwxr-xr-x 2 grid asmdba 4096 Oct 7 14:15 . dr-xr-xr-x. 28 root root 4096 Oct 7 14:14 .. -rw-r--r-- 1 grid asmdba 5368709120 Oct 7 14:15 disk1 -rw-r--r-- 1 grid asmdba 5368709120 Oct 7 14:16 disk2
--create loopback devices and check them losetup /dev/loop1 /asmdisks/disk1 losetup /dev/loop2 /asmdisks/disk2 losetup -a /dev/loop1: [fc00]:655363 (/asmdisks/disk1) /dev/loop2: [fc00]:655364 (/asmdisks/disk2)
--configure ASM lib driver /etc/init.d/oracleasm configure Configuring the Oracle ASM library driver. This will configure the on-boot properties of the Oracle ASM library driver. The following questions will determine whether the driver is loaded on boot and what permissions it will have. The current values will be shown in brackets ('[]'). Hitting <ENTER> without typing an answer will keep that current value. Ctrl-C will abort. Default user to own the driver interface []: grid Default group to own the driver interface []: asmdba Start Oracle ASM library driver on boot (y/n) [n]: y Scan for Oracle ASM disks on boot (y/n) [y]: y Writing Oracle ASM library driver configuration: done Initializing the Oracle ASMLib driver: [ OK ] Scanning the system for Oracle ASMLib disks: [ OK ]
--create asm devices oracleasm createdisk DISK1 /dev/loop1 oracleasm createdisk DISK2 /dev/loop2
--check asmdisks oracleasm listdisks DISK1 DISK2
Add the following entries to the file “/etc/rc.local”
/sbin/losetup /dev/loop1 /asmdisks/disk1 /sbin/losetup /dev/loop2 /asmdisks/disk2 /etc/init.d/oracleasm createdisk DISK1 /dev/loop1 /etc/init.d/oracleasm createdisk DISK2 /dev/loop2 /etc/init.d/oracleasm scandisks
Option number 2 – add dedicated disks
I assume you can add disk to virtual machine and you can find it under unix. For my tests I added 20G disk to my virtual machine. It’s visible in Linux as /dev/sdb device.
--add 2 new partitions to /dev/sdb fdisk /dev/sdb Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-2610, default 1): 1 Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +10G Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 2 First cylinder (1307-2610, default 1307): Using default value 1307 Last cylinder, +cylinders or +size{K,M,G} (1307-2610, default 2610): Using default value 2610 Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
--List new partitions fdisk -l /dev/sdb Device Boot Start End Blocks Id System /dev/sdb1 1 1306 10490413+ 83 Linux /dev/sdb2 1307 2610 10474380 83 Linux
--Map new partitions to asm library oracleasm createdisk DISK3 /dev/sdb1 Writing disk header: done Instantiating disk: done oracleasm createdisk DISK4 /dev/sdb2 Writing disk header: done Instantiating disk: done
--List all ASM disks oracleasm listdisks DISK1 DISK2 DISK3 DISK4 ll /dev/oracleasm/disks/ total 0 brw-rw---- 1 grid asmdba 7, 1 Oct 5 21:24 DISK1 brw-rw---- 1 grid asmdba 7, 2 Oct 5 21:24 DISK2 brw-rw---- 1 grid asmdba 8, 17 Oct 5 21:08 DISK3 brw-rw---- 1 grid asmdba 8, 18 Oct 5 21:08 DISK4
Start grid installation as user grid, remember to run command xhost+ as root.
xhost + access control disabled, clients can connect from any host
su - grid --I defined 4 aliases in .bash_profile of user grid to make --administration heaven :) [grid@oel6 ~]$ alias envo cdob cdoh tns alias envo='env | grep ORACLE' alias cdob='cd $ORACLE_BASE' alias cdoh='cd $ORACLE_HOME' alias tns='cd $ORACLE_HOME/network/admin' --run alias command envo to display environment settings envo ORACLE_UNQNAME=+ASM ORACLE_SID=+ASM ORACLE_BASE=/ora01/app/grid ORACLE_HOSTNAME=oel6.dbaora.com ORACLE_HOME=/ora01/app/grid/product/11.2.0/grid --run alias command cdob and cdoh to check ORACLE_BASE, ORACLE_HOME [grid@oel6 ~]$ cdob [grid@oel6 grid]$ pwd /ora01/app/grid [grid@oel6 grid]$ cdoh [grid@oel6 grid]$ pwd /ora01/app/grid/product/11.2.0/grid --run installation ./runInstall
1. Select “Skip software updates” and click “Next” button.
2. Select “configure Oracle Grid Infrastructure for Standalone Server” and click “Next” button.
3. Select langauge and click “Next” button.
4. It’s time to create ASM diskgroup DATA. So first you need to make visible ASM devices. Click “Change Discovery Path” button.
5. Enter new discovery path: /dev/oracleasm/disks/* and click “OK” button.
6. You should see 4 ASM devices. Select “External” Redundancy for new diskgroup and check checkbox for one device /dev/oracleasm/disks/DISK3. Click “Next” button.
7. From security point of view you should specify separate password for user SYS and ASMSNMP. I set for both user the same password. Click “Next” button.
8. In case your password is simple Oracle display following screen. Just ignore it and click “Yes” or “No” to change password to more complex.
9. You can change assignment of groups to ASM roles here. When it’s done click “Next” button.
10. Just click “Next” button.
11. Just click “Next” buton.
12. Oracle makes checks before installation begin. It’s the last moment to verify OS settings. In my case Oracle detected that swap is “too small”. You can change it and click “Check Again” or like in my case check checkbox “Ignore All” and click “Next” button. 2GB of ram and almost 2GB of swap is more than enough to proceed with installation.
13. Summary screen just before installation begin. Click “Install” button.
14. Boring installation …
15. In the “middle” of installation you will be asked to run 2 scripts as user root. when scripts are executed just click “OK” button. Installation will proceeed.
--execute scripts /ora01/app/oraInventory/orainstRoot.sh /ora01/app/grid/product/11.2.0/grid/root.sh
16. Installation completed. Just click “Close” button.
After this installation you can increase swap to 4GB.
Install database software
Let’s start with database software installation as oracle user
su - oracle --I defined 4 aliases in .bash_profile of user oracle to make --administration heaven :) [oracle@oel6 ~]$ alias envo cdob cdoh tns alias envo='env | grep ORACLE' alias cdob='cd $ORACLE_BASE' alias cdoh='cd $ORACLE_HOME' alias tns='cd $ORACLE_HOME/network/admin' --run alias command envo to display environment settings envo ORACLE_UNQNAME=ORA11G ORACLE_SID=ORA11G ORACLE_BASE=/ora01/app/oracle ORACLE_HOSTNAME=oel6.dbaora.com ORACLE_HOME=/ora01/app/oracle/product/11.2.0/db_1 --run alias command cdob and cdoh to check ORACLE_BASE, ORACLE_HOME [oracle@oel6 ~]$ cdob [oracle@oel6 oracle]$ pwd /ora01/app/oracle [oracle@oel6 db_1]$ cdoh [oracle@oel6 db_1]$ pwd /ora01/app/oracle/product/11.2.0/db_1 --run installation ./runInstall
1. Uncheck checkbox “I wish to recive security updates via My Oracle Support” and click “Next” button.
2. Ignore this message and click “Yes”
3. Select “Skip software updates” and click “Next” button.
4. Select “Install database software only” and click “Next”. You can of course create database here but I want to have control how this database is created.
5. Select “Single instance database installation” and click “Next” button.
6. Select language and click “Next” button.
7. Just click “Next”
8. Just click “Next”
9. Just click “Next”
10. I ignored messages about swap by checking “Ignore All”. Then click “Next” button.
11. Ignore this message and click “Yes”.
12. Start installation click “Install” button.
13. Installation in progress …
14. You need to run one script as user root. When it’s done click “OK” button.
[root@oel6 oracle]# /ora01/app/oracle/product/11.2.0/db_1/root.sh
15. Installation database software completed
ASM configuration assistant – ASMCA
So far we have created only one ASM group DATA. I want to show you how quickly you can add extra group to ASM instance.
As user grid start ASMCA. Remeber to start xhost + as user root to enable run graphical tools from other users like grid, oracle.
[root@oel6 ~]# su - grid [grid@oel6 ~]$ asmca
1. ASMCA started just click “Create” button.
2. Enter group name BACKUP, check checkbox for “/dev/oracleasm/disks/DISK4″ device and click “OK” button. Other devices we can use later.
3. You should see following screen. Click “OK”.
4. Now you should see we have 2 ASM groups “BACKUP” and “DATA”. Click “Exit” button.
Now you can verify in sqlplus you have 2 ASM groups.
[grid@oel6 ~]$ sqlplus SQL*Plus: Release 11.2.0.3.0 Production on Sun Oct 14 22:39:11 2012 Copyright (c) 1982, 2011, Oracle. All rights reserved. Enter user-name: / as sysasm Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Automatic Storage Management option SQL> select name from v$asm_diskgroup; NAME ------------------------------ DATA BACKUP
Database configuration assistant – DBCA
As user oracle start DBCA. Remeber to start xhost + as user root to enable run graphical tools from other users like grid, oracle.
1. Click “Next” button.
2. Just click “Next” button.
3. Just click “Next” button
4. Enter global database name and sid name.
5. Just click “Next” button.
6. From security point of view you should set separate passwords for user SYS, SYSTEM, DBSNMP, SYSMAN. You can set the same password for all users like below.
7. In case password is too simple you see below screen. You can ignore by clicking “Yes” button.
8. Select as Storage Type “Automatic Storage Management (ASM)” then click “Browse” button for Database Area.
9. Select DATA diskgroup and click “OK” button.
10. Click “Next” button.
11. You should see following screen to enter ASMSNMP password then click “OK”.
12. On this screen check checkbox “Specify fast Recovery Area” and “Enable Archiving”. It will create flashback area and turn on archivlog on database. Click “Browse” button to select ASM diskgroup for flashback.
13. Select diskgroup “BACKUP” then click “OK” button.
14. Click “Next” button.
15. Check checkbox “Sample Schemas” to install extra shemas. It’s very usefull for developers.
16. Following 4 screens shows information about our new database. You can change some settings for the database like memory settings, initial parameters, character set of our database, change default connection type(dedicated server, shared server). Then click “Next” button.
17. Summary screen. You can review storage layout for our new database. Click “Next” button.
18. This screen enables 3 options. Select 1 and 3 option and click “Finish” button.
- Create Database – it will create database in graphical mode.
- Save as Database Template – it will create template which can be later used by DBCA to create similar database.
- Generate Database Creation Scripts – it will generate scripts which can be used later to install the database in silent mode.
19. Summary screen. Click “OK” button to start installation.
20. First script for silent mode is generated. Click “OK” button to progress with installation.
21. Boring installation …
22. When it’s done you can see some interesting details for our new database.
23. You can verify new database in Database Control
Have a fun 🙂
Tomasz
Hi Tomasz,
Good Explanation. Help me a lot. One Suggestion, instead of using dummy loop back devices. You can use the real disk or VMWare disk.
Hi Joshua
It’s quite old article in the latest installation articles I’m not using any more loopback devices.
Regards
Tomasz
Hi Tomasz,
Sorry, I never see the Option -2 .
Do you have any Documents for Dataguard.
Thank you
Hi Joshua
Not yet but I’ll think about it :). Can you suggest what would you like to have in such article ? I assume configuration: logical, physical, switchover, failover, dgmrl, backup & restore, flashback. What else ?
Kind Regards
Tomasz
Waiting for you dataguard article.
Physical and Snapshot Standby Databases.
Thank you
Joshua
i got a problem with the 2nd grid script because “ohasd failed to start Inappropriate ioctl for device at roothas.pl” at Oracle Linux 6.5
if some1 else got this problem, here is the solution that worked for me:
https://community.oracle.com/message/10481231#10481231
and i got a improvement:
the Oracle Net Configuration Assistant refused to work properly at my installation because i got sereval entries in my /etc/hosts file in the same line. so its better to write every entry in a new line:
127.0.0.1 localhost
127.0.0.1 localhost.localdomain
etc.
regards
Judas
Hello Judas,
I got the same errors the solutions provided works
Regards
Denis Kairu
(Nairobi Kenya)