This is Demo of Installation of 11.2.0.3 Grid Infrastructure and Database on Linux x86_64 bit OS.
It install as Job Role separation.
I have skipped few Pre-requisite such as security, kernal parameter modification
Steps.
--Create user/group
--create GI/OH and set ownership/permission.
--check umask
--Set permission on ASM disks
--Configure ASM driver and Mark ASM Disks.
--Configure DNS server for SCAN IP.
--Configure zone files.
--configure ssh for GRID/ORACLE user
--runcluvfy.sh
--Installation of Grid Infrastrcuture.
--Execute root scripts.
--Create Diskgroup for Database.
--Install Database software and create DB.
--Root.sh after DB installation.
--Create user/group
/usr/sbin/groupadd -g 1020 asmadmin
/usr/sbin/groupadd -g 1021 asmdba
/usr/sbin/groupadd -g 1030 asmoper
/usr/sbin/groupadd -g 1031 dba
/usr/sbin/groupadd -g 1032 oper
useradd -u 1101 -g oinstall -G dba,asmdba oracle
useradd -u 1100 -g oinstall -G asmadmin,asmdba,asmoper grid
uid=1100(grid) gid=1000(oinstall) groups=1000(oinstall),1020(asmadmin),1021(asmdba),1030(asmoper)
uid=1101(oracle) gid=1000(oinstall) groups=1000(oinstall),1021(asmdba),1031(dba)
---create GI/OH and set ownership/permission.
--GI home
mkdir -p /u00/app/11.2.3/grid
chmod 775 /u00/app/11.2.3/grid
chown -R grid:oinstall /u00
chmod -R 775 /u00
--OH home
mkdir -p /u01/app/oracle/11.2.3/db
chmod 775 /u01/app/oracle/11.2.3/db
chown -R oracle:oinstall /u01
chmod -R 775 /u01
--check umask
TESTP2@:/home/grid : $umask
0022
--Set permission on ASM disks
[root@TESTP1 ~]# cat /etc/rc.d/rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
chown grid:asmadmin /dev/sdb1
chown grid:asmadmin /dev/sdc1
chown grid:asmadmin /dev/sdd1
chown grid:asmadmin /dev/sde1
chown grid:asmadmin /dev/sdf1
chown grid:asmadmin /dev/sdg1
chown grid:asmadmin /dev/sdh1
chown grid:asmadmin /dev/sdi1
chown oracle:oinstall /dev/sdj1
chmod 660 /dev/sdb1
chmod 660 /dev/sdc1
chmod 660 /dev/sdd1
chmod 660 /dev/sde1
chmod 660 /dev/sdf1
chmod 660 /dev/sdg1
chmod 660 /dev/sdh1
chmod 660 /dev/sdi1
chmod 777 /dev/sdj1
--Configure ASM driver and Mark ASM Disks.
[root@TESTP1 ~]# /etc/init.d/oracleasm configure -i
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 without typing an
answer will keep that current value. Ctrl-C will abort.
Default user to own the driver interface [oracle]: grid
Default group to own the driver interface [oinstall]: asmadmin
Start Oracle ASM library driver on boot (y/n) [y]: 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 ]
[root@PNETN1 ~]# /etc/init.d/oracleasm createdisk DISK1 /dev/sdb1
Marking disk "DISK1" as an ASM disk: [ OK ]
[root@PNETN1 ~]# /etc/init.d/oracleasm createdisk DISK2 /dev/sdc1
Marking disk "DISK2" as an ASM disk: [ OK ]
[root@PNETN1 ~]# /etc/init.d/oracleasm createdisk DISK3 /dev/sdd1
Marking disk "DISK3" as an ASM disk: [ OK ]
[root@PNETN1 ~]# /etc/init.d/oracleasm createdisk DISK4 /dev/sde1
Marking disk "DISK4" as an ASM disk: [ OK ]
[root@PNETN1 ~]# /etc/init.d/oracleasm createdisk DISK5 /dev/sdf1
Marking disk "DISK5" as an ASM disk: [ OK ]
[root@PNETN1 ~]# /etc/init.d/oracleasm createdisk DISK6 /dev/sdg1
Marking disk "DISK6" as an ASM disk: [ OK ]
[root@TESTP1 ~]# /etc/init.d/oracleasm createdisk DISK7 /dev/sdh1
Marking disk "DISK7" as an ASM disk: [ OK ]
[root@TESTP1 ~]# /etc/init.d/oracleasm createdisk DISK8 /dev/sdi1
Marking disk "DISK8" as an ASM disk: [ OK ]
[root@TESTP1 ~]# /etc/init.d/oracleasm scandisks
Scanning the system for Oracle ASMLib disks: [ OK ]
[root@TESTP1 ~]# /etc/init.d/oracleasm listdisks
DISK1
DISK2
DISK3
DISK4
DISK5
DISK6
DISK7
DISK8
--Do it on rest of the Nodes.
[root@TESTP2 ~]# /etc/init.d/oracleasm scandisks
Scanning the system for Oracle ASMLib disks: [ OK ]
[root@TESTP2 ~]# /etc/init.d/oracleasm listdisks
DISK1
DISK2
DISK3
DISK4
DISK5
DISK6
DISK7
DISK8
--Configure DNS server for SCAN IP.
rpm required for DNS
[root@DNS ~]# rpm -qa| grep bind
ypbind-1.19-12.el5
bind-9.3.6-4.P1.el5
system-config-bind-4.0.3-4.0.1.el5
bind-utils-9.3.6-4.P1.el5
bind-libs-9.3.6-4.P1.el5
bind-chroot-9.3.6-4.P1.el5
kdebindings-3.5.4-6.el5
--Configure zone files.
--Named files for Localdomain.com
[root@DNS ~]# cat /var/named/chroot/etc/named.conf
// Enterprise Linux BIND Configuration Tool
//
// Default initial "Caching Only" name server configuration
//
options {
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
};
// Zone for this RAC configuration is hingu.net
zone "localdomain.com" in {
type master;
file "localdomain.com.zone";
allow-update { none; };
};
// For reverse lookups
zone "100.168.192.in-addr.arpa" in {
type master;
file "100.168.192.in-addr.arpa.zone";
allow-update { none; };
};
include "/etc/rndc.key";
-- localdomain.zone file.
[root@DNS named]# cat /var/named/chroot/var/named/localdomain.com.zone
$TTL 1d
localdomain.com. IN SOA dns.localdomain.com. root.localdomain.com. (
100 ; se = serial number
8h ; ref = refresh
5m ; ret = update retry
3w ; ex = expiry
3h ; min = minimum
)
IN NS dns.localdomain.com.
; DNS server
dns IN A 192.168.100.150
; RAC Nodes Public name
RACG1 IN A 192.168.100.121
RACG2 IN A 192.168.100.122
RACG3 IN A 192.168.100.123
RACD1 IN A 192.168.100.124
RACD2 IN A 192.168.100.125
PNETN1 IN A 192.168.100.126
PNETN2 IN A 192.168.100.127
PNETN3 IN A 192.168.100.128
TESTP1 IN A 192.168.100.181
TESTP2 IN A 192.168.100.182
; RAC Nodes Public VIPs
RACG1-VIP IN A 192.168.100.131
RACG2-VIP IN A 192.168.100.132
RACG3-VIP IN A 192.168.100.133
RACD1-VIP IN A 192.168.100.134
RACD2-VIP IN A 192.168.100.135
PNETN1-VIP IN A 192.168.100.136
PNETN2-VIP IN A 192.168.100.137
PNETN3-VIP IN A 192.168.100.138
TESTP1-VIP IN A 192.168.100.183
TESTP2-VIP IN A 192.168.100.184
; 3 SCAN VIPs
RACG-scan IN A 192.168.100.151
RACG-scan IN A 192.168.100.152
RACG-scan IN A 192.168.100.153
RACD-scan IN A 192.168.100.154
RACD-scan IN A 192.168.100.155
RACD-scan IN A 192.168.100.156
PNETN-SCAN IN A 192.168.100.157
PNETN-SCAN IN A 192.168.100.158
PNETN-SCAN IN A 192.168.100.159
TESTP-SCAN IN A 192.168.100.185
TESTP-SCAN IN A 192.168.100.186
TESTP-SCAN IN A 192.168.100.187
---reverse lookup zone file.
[root@DNS named]# cat /var/named/chroot/var/named/100.168.192.in-addr.arpa.zone
$TTL 1d
@ IN SOA dns.localdomain.com. root.localdomain.com. (
100 ; se = serial number
8h ; ref = refresh
5m ; ret = update retry
3w ; ex = expiry
3h ; min = minimum
)
IN NS dns.localdomain.com.
; DNS machine name in reverse
150 IN PTR dns.localdomain.com.
; RAC Nodes Public Name in Reverse
121 IN PTR RACG1.localdomain.com.
122 IN PTR RACG2.localdomain.com.
123 IN PTR RACG3.localdomain.com.
124 IN PTR RACD1.localdomain.com.
125 IN PTR RACD2.localdomain.com.
126 IN PTR PNETN1.localdomain.com.
127 IN PTR PNETN2.localdomain.com.
128 IN PTR PNETN3.localdomain.com.
181 IN PTR TESTP1.localdomain.com.
182 IN PTR TESTP2.localdomain.com.
; RAC Nodes Public VIPs in Reverse
131 IN PTR RACG1-VIP.localdomain.com.
132 IN PTR RACG2-VIP.localdomain.com.
133 IN PTR RACG3-VIP.localdomain.com.
134 IN PTR RACD1-VIP.localdomain.com.
135 IN PTR RACD2-VIP.localdomain.com.
136 IN PTR PNETN1-VIP.localdomain.com.
137 IN PTR PNETN2-VIP.localdomain.com.
138 IN PTR PNETN3-VIP.localdomain.com.
183 IN PTR TESTP1-VIP.localdomain.com.
184 IN PTR TESTP2-VIP.localdomain.com.
; RAC Nodes SCAN VIPs in Reverse
151 IN PTR RACG-scan.localdomain.com.
152 IN PTR RACG-scan.localdomain.com.
153 IN PTR RACG-scan.localdomain.com.
154 IN PTR RACD-scan.localdomain.com.
155 IN PTR RACD-scan.localdomain.com.
156 IN PTR RACD-scan.localdomain.com.
157 IN PTR PNETN-SCAN.localdomain.com.
158 IN PTR PNETN-SCAN.localdomain.com.
159 IN PTR PNETN-SCAN.localdomain.com.
185 IN PTR TESTP-SCAN.localdomain.com
186 IN PTR TESTP-SCAN.localdomain.com.
187 IN PTR TESTP-SCAN.localdomain.com.
--start service on DNS server.
service named start
--Turn on service on reboot of DNS service.
chkconfig --levl 35 named on
--put below entries in each node.
[root@TESTP2 ~]# vi /etc/resolv.conf
search localdomain.com
nameserver 192.168.100.150
--Test SCAN-IP in reverse lookup
[root@TESTP2 ~]# nslookup TESTP-SCAN
Server: 192.168.100.150
Address: 192.168.100.150#53
Name: TESTP-SCAN.localdomain.com
Address: 192.168.100.185
Name: TESTP-SCAN.localdomain.com
Address: 192.168.100.186
Name: TESTP-SCAN.localdomain.com
Address: 192.168.100.187
[root@TESTP2 ~]# nslookup TESTP-SCAN
Server: 192.168.100.150
Address: 192.168.100.150#53
Name: TESTP-SCAN.localdomain.com
Address: 192.168.100.187
Name: TESTP-SCAN.localdomain.com
Address: 192.168.100.185
Name: TESTP-SCAN.localdomain.com
Address: 192.168.100.186
[root@TESTP2 ~]# nslookup TESTP-SCAN
Server: 192.168.100.150
Address: 192.168.100.150#53
Name: TESTP-SCAN.localdomain.com
Address: 192.168.100.186
Name: TESTP-SCAN.localdomain.com
Address: 192.168.100.187
Name: TESTP-SCAN.localdomain.com
Address: 192.168.100.185
--configure ssh for GRID/ORACLE user
--NODE 1
/home/grid
TESTP1@:/home/grid : $mkdir -p ~/.ssh
TESTP1@:/home/grid : $chmod 700 ~/.ssh
TESTP1@:/home/grid : $/usr/bin/ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/grid/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/grid/.ssh/id_rsa.
Your public key has been saved in /home/grid/.ssh/id_rsa.pub.
The key fingerprint is:
ed:70:21:f8:28:c2:9d:18:bf:c8:ed:d8:0f:23:fe:2a grid@TESTP1.localdomain.com
TESTP1@:/home/grid : $/usr/bin/ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/grid/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/grid/.ssh/id_dsa.
Your public key has been saved in /home/grid/.ssh/id_dsa.pub.
The key fingerprint is:
b9:e4:f1:2e:22:78:eb:b6:b3:21:f9:86:24:ee:63:52 grid@TESTP1.localdomain.com
--NODE 2
TESTP2@:/home/grid : $mkdir -p ~/.ssh
TESTP2@:/home/grid : $chmod 700 ~/.ssh
TESTP2@:/home/grid : $/usr/bin/ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/grid/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/grid/.ssh/id_rsa.
Your public key has been saved in /home/grid/.ssh/id_rsa.pub.
The key fingerprint is:
70:af:37:b6:9b:e9:ce:f8:a1:bf:00:00:2c:9d:50:e5 grid@TESTP2.localdomain.com
TESTP2@:/home/grid : $/usr/bin/ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/grid/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/grid/.ssh/id_dsa.
Your public key has been saved in /home/grid/.ssh/id_dsa.pub.
The key fingerprint is:
96:d4:e2:55:18:e2:d8:3e:64:25:a3:62:47:6a:4e:0b grid@TESTP2.localdomain.com
--NODE 1
TESTP1@:/home/grid : $ssh TESTP1 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
The authenticity of host 'testp1 (192.168.100.181)' can't be established.
RSA key fingerprint is 27:ac:4b:9a:e3:d2:ae:6d:2b:71:99:8d:b9:c0:b1:a7.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'testp1,192.168.100.181' (RSA) to the list of known hosts.
grid@testp1's password:
TESTP1@:/home/grid : $ssh TESTP1 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
TESTP1@:/home/grid : $scp /home/grid/.ssh/authorized_keys grid@TESTP2:~/.ssh/
grid@testp2's password:
authorized_keys 100% 1026 1.0KB/s 00:00
TESTP1@:/home/grid : $
-- NODE 2
TESTP2@:/home/grid : $ssh TESTP2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
The authenticity of host 'testp2 (192.168.100.182)' can't be established.
RSA key fingerprint is 27:ac:4b:9a:e3:d2:ae:6d:2b:71:99:8d:b9:c0:b1:a7.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'testp2,192.168.100.182' (RSA) to the list of known hosts.
grid@testp2's password:
TESTP2@:/home/grid : $ssh TESTP2 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
TESTP2@:/home/grid : $scp /home/grid/.ssh/authorized_keys grid@TESTP1:~/.ssh/
grid@testp1's password:
authorized_keys 100% 2461 2.4KB/s 00:00
--CONFIRM SSH
TESTP2@:/home/grid : $ssh TESTP1 date
Mon Aug 6 10:47:53 EDT 2012
TESTP2@:/home/grid : $ssh TESTP2 date
Mon Aug 6 10:48:06 EDT 2012
TESTP1@:/home/grid : $ssh TESTP1 date
Mon Aug 6 10:48:22 EDT 2012
TESTP1@:/home/grid : $ssh TESTP2 date
Mon Aug 6 10:48:36 EDT 2012
--Run cluvfy.
TESTP1@:/u01/grid : $./runcluvfy.sh stage -pre crsinst -n TESTP1,TESTP2 -fixup -verbose
Performing pre-checks for cluster services setup
Checking node reachability...
Check: Node reachability from node "TESTP1"
Destination Node Reachable?
------------------------------------ ------------------------
TESTP1 yes
TESTP2 yes
Result: Node reachability check passed from node "TESTP1"
Checking user equivalence...
Check: User equivalence for user "grid"
Node Name Status
------------------------------------ ------------------------
TESTP1 passed
TESTP2 passed
Result: User equivalence check passed for user "grid"
Checking node connectivity...
Checking hosts config file...
Node Name Status
------------------------------------ ------------------------
TESTP1 passed
TESTP2 passed
Verification of the hosts config file successful
Interface information for node "TESTP1"
Name IP Address Subnet Gateway Def. Gateway HW Address MTU
------ --------------- --------------- --------------- --------------- ----------------- ------
eth0 192.168.100.181 192.168.100.0 0.0.0.0 192.168.152.1 00:0C:29:9A:83:1C 1500
eth1 192.168.152.181 192.168.152.0 0.0.0.0 192.168.152.1 00:0C:29:9A:83:26 1500
Interface information for node "TESTP2"
Name IP Address Subnet Gateway Def. Gateway HW Address MTU
------ --------------- --------------- --------------- --------------- ----------------- ------
eth0 192.168.100.182 192.168.100.0 0.0.0.0 192.168.152.1 00:0C:29:CE:9B:85 1500
eth1 192.168.152.182 192.168.152.0 0.0.0.0 192.168.152.1 00:0C:29:CE:9B:8F 1500
Check: Node connectivity of subnet "192.168.100.0"
Source Destination Connected?
------------------------------ ------------------------------ ----------------
TESTP1[192.168.100.181] TESTP2[192.168.100.182] yes
Result: Node connectivity passed for subnet "192.168.100.0" with node(s) TESTP1,TESTP2
Check: TCP connectivity of subnet "192.168.100.0"
Source Destination Connected?
------------------------------ ------------------------------ ----------------
TESTP1:192.168.100.181 TESTP2:192.168.100.182 passed
Result: TCP connectivity check passed for subnet "192.168.100.0"
Check: Node connectivity of subnet "192.168.152.0"
Source Destination Connected?
------------------------------ ------------------------------ ----------------
TESTP1[192.168.152.181] TESTP2[192.168.152.182] yes
Result: Node connectivity passed for subnet "192.168.152.0" with node(s) TESTP1,TESTP2
Check: TCP connectivity of subnet "192.168.152.0"
Source Destination Connected?
------------------------------ ------------------------------ ----------------
TESTP1:192.168.152.181 TESTP2:192.168.152.182 passed
Result: TCP connectivity check passed for subnet "192.168.152.0"
Interfaces found on subnet "192.168.152.0" that are likely candidates for VIP are:
TESTP1 eth1:192.168.152.181
TESTP2 eth1:192.168.152.182
Interfaces found on subnet "192.168.100.0" that are likely candidates for a private interconnect are:
TESTP1 eth0:192.168.100.181
TESTP2 eth0:192.168.100.182
Checking subnet mask consistency...
Subnet mask consistency check passed for subnet "192.168.100.0".
Subnet mask consistency check passed for subnet "192.168.152.0".
Subnet mask consistency check passed.
Result: Node connectivity check passed
Checking multicast communication...
Checking subnet "192.168.100.0" for multicast communication with multicast group "230.0.1.0"...
Check of subnet "192.168.100.0" for multicast communication with multicast group "230.0.1.0" passed.
Checking subnet "192.168.152.0" for multicast communication with multicast group "230.0.1.0"...
Check of subnet "192.168.152.0" for multicast communication with multicast group "230.0.1.0" passed.
Check of multicast communication passed.
Checking ASMLib configuration.
Node Name Status
------------------------------------ ------------------------
TESTP1 passed
TESTP2 passed
Result: Check for ASMLib configuration passed.
Check: Total memory
Node Name Available Required Status
------------ ------------------------ ------------------------ ----------
TESTP1 1.6625GB (1743280.0KB) 1.5GB (1572864.0KB) passed
TESTP2 1.6625GB (1743280.0KB) 1.5GB (1572864.0KB) passed
Result: Total memory check passed
Check: Available memory
Node Name Available Required Status
------------ ------------------------ ------------------------ ----------
TESTP1 1.441GB (1510964.0KB) 50MB (51200.0KB) passed
TESTP2 1.5201GB (1593992.0KB) 50MB (51200.0KB) passed
Result: Available memory check passed
Check: Swap space
Node Name Available Required Status
------------ ------------------------ ------------------------ ----------
TESTP1 3.8437GB (4030456.0KB) 2.4938GB (2614920.0KB) passed
TESTP2 3.8437GB (4030456.0KB) 2.4938GB (2614920.0KB) passed
Result: Swap space check passed
Check: Free disk space for "TESTP1:/tmp"
Path Node Name Mount point Available Required Status
---------------- ------------ ------------ ------------ ------------ ------------
/tmp TESTP1 / 2.7619GB 1GB passed
Result: Free disk space check passed for "TESTP1:/tmp"
Check: Free disk space for "TESTP2:/tmp"
Path Node Name Mount point Available Required Status
---------------- ------------ ------------ ------------ ------------ ------------
/tmp TESTP2 / 2.7832GB 1GB passed
Result: Free disk space check passed for "TESTP2:/tmp"
Check: User existence for "grid"
Node Name Status Comment
------------ ------------------------ ------------------------
TESTP1 passed exists(1100)
TESTP2 passed exists(1100)
Checking for multiple users with UID value 1100
Result: Check for multiple users with UID value 1100 passed
Result: User existence check passed for "grid"
Check: Group existence for "oinstall"
Node Name Status Comment
------------ ------------------------ ------------------------
TESTP1 passed exists
TESTP2 passed exists
Result: Group existence check passed for "oinstall"
Check: Group existence for "dba"
Node Name Status Comment
------------ ------------------------ ------------------------
TESTP1 passed exists
TESTP2 passed exists
Result: Group existence check passed for "dba"
Check: Membership of user "grid" in group "oinstall" [as Primary]
Node Name User Exists Group Exists User in Group Primary Status
---------------- ------------ ------------ ------------ ------------ ------------
TESTP1 yes yes yes yes passed
TESTP2 yes yes yes yes passed
Result: Membership check for user "grid" in group "oinstall" [as Primary] passed
Check: Membership of user "grid" in group "dba"
Node Name User Exists Group Exists User in Group Status
---------------- ------------ ------------ ------------ ----------------
TESTP1 yes yes no failed
TESTP2 yes yes no failed
Result: Membership check for user "grid" in group "dba" failed
Check: Run level
Node Name run level Required Status
------------ ------------------------ ------------------------ ----------
TESTP1 5 3,5 passed
TESTP2 5 3,5 passed
Result: Run level check passed
Check: Hard limits for "maximum open file descriptors"
Node Name Type Available Required Status
---------------- ------------ ------------ ------------ ----------------
TESTP1 hard 131072 65536 passed
TESTP2 hard 131072 65536 passed
Result: Hard limits check passed for "maximum open file descriptors"
Check: Soft limits for "maximum open file descriptors"
Node Name Type Available Required Status
---------------- ------------ ------------ ------------ ----------------
TESTP1 soft 131072 1024 passed
TESTP2 soft 131072 1024 passed
Result: Soft limits check passed for "maximum open file descriptors"
Check: Hard limits for "maximum user processes"
Node Name Type Available Required Status
---------------- ------------ ------------ ------------ ----------------
TESTP1 hard 131072 16384 passed
TESTP2 hard 131072 16384 passed
Result: Hard limits check passed for "maximum user processes"
Check: Soft limits for "maximum user processes"
Node Name Type Available Required Status
---------------- ------------ ------------ ------------ ----------------
TESTP1 soft 131072 2047 passed
TESTP2 soft 131072 2047 passed
Result: Soft limits check passed for "maximum user processes"
Check: System architecture
Node Name Available Required Status
------------ ------------------------ ------------------------ ----------
TESTP1 x86_64 x86_64 passed
TESTP2 x86_64 x86_64 passed
Result: System architecture check passed
Check: Kernel version
Node Name Available Required Status
------------ ------------------------ ------------------------ ----------
TESTP1 2.6.18-164.el5xen 2.6.18 passed
TESTP2 2.6.18-164.el5xen 2.6.18 passed
Result: Kernel version check passed
Check: Kernel parameter for "semmsl"
Node Name Current Configured Required Status Comment
---------------- ------------ ------------ ------------ ------------ ------------
TESTP1 250 250 250 passed
TESTP2 250 250 250 passed
Result: Kernel parameter check passed for "semmsl"
Check: Kernel parameter for "semmns"
Node Name Current Configured Required Status Comment
---------------- ------------ ------------ ------------ ------------ ------------
TESTP1 32000 32000 32000 passed
TESTP2 32000 32000 32000 passed
Result: Kernel parameter check passed for "semmns"
Check: Kernel parameter for "semopm"
Node Name Current Configured Required Status Comment
---------------- ------------ ------------ ------------ ------------ ------------
TESTP1 100 100 100 passed
TESTP2 100 100 100 passed
Result: Kernel parameter check passed for "semopm"
Check: Kernel parameter for "semmni"
Node Name Current Configured Required Status Comment
---------------- ------------ ------------ ------------ ------------ ------------
TESTP1 142 142 128 passed
TESTP2 142 142 128 passed
Result: Kernel parameter check passed for "semmni"
Check: Kernel parameter for "shmmax"
Node Name Current Configured Required Status Comment
---------------- ------------ ------------ ------------ ------------ ------------
TESTP1 4398046511104 4398046511104 892559360 passed
TESTP2 4398046511104 4398046511104 892559360 passed
Result: Kernel parameter check passed for "shmmax"
Check: Kernel parameter for "shmmni"
Node Name Current Configured Required Status Comment
---------------- ------------ ------------ ------------ ------------ ------------
TESTP1 4096 4096 4096 passed
TESTP2 4096 4096 4096 passed
Result: Kernel parameter check passed for "shmmni"
Check: Kernel parameter for "shmall"
Node Name Current Configured Required Status Comment
---------------- ------------ ------------ ------------ ------------ ------------
TESTP1 1073741824 1073741824 2097152 passed
TESTP2 1073741824 1073741824 2097152 passed
Result: Kernel parameter check passed for "shmall"
Check: Kernel parameter for "file-max"
Node Name Current Configured Required Status Comment
---------------- ------------ ------------ ------------ ------------ ------------
TESTP1 6815744 6815744 6815744 passed
TESTP2 6815744 6815744 6815744 passed
Result: Kernel parameter check passed for "file-max"
Check: Kernel parameter for "ip_local_port_range"
Node Name Current Configured Required Status Comment
---------------- ------------ ------------ ------------ ------------ ------------
TESTP1 between 9000.0 & 65500.0 between 9000.0 & 65500.0 between 9000.0 & 65500.0 passed
TESTP2 between 9000.0 & 65500.0 between 9000.0 & 65500.0 between 9000.0 & 65500.0 passed
Result: Kernel parameter check passed for "ip_local_port_range"
Check: Kernel parameter for "rmem_default"
Node Name Current Configured Required Status Comment
---------------- ------------ ------------ ------------ ------------ ------------
TESTP1 262144 262144 262144 passed
TESTP2 262144 262144 262144 passed
Result: Kernel parameter check passed for "rmem_default"
Check: Kernel parameter for "rmem_max"
Node Name Current Configured Required Status Comment
---------------- ------------ ------------ ------------ ------------ ------------
TESTP1 4194304 4194304 4194304 passed
TESTP2 4194304 4194304 4194304 passed
Result: Kernel parameter check passed for "rmem_max"
Check: Kernel parameter for "wmem_default"
Node Name Current Configured Required Status Comment
---------------- ------------ ------------ ------------ ------------ ------------
TESTP1 262144 262144 262144 passed
TESTP2 262144 262144 262144 passed
Result: Kernel parameter check passed for "wmem_default"
Check: Kernel parameter for "wmem_max"
Node Name Current Configured Required Status Comment
---------------- ------------ ------------ ------------ ------------ ------------
TESTP1 1048576 1048576 1048576 passed
TESTP2 1048576 1048576 1048576 passed
Result: Kernel parameter check passed for "wmem_max"
Check: Kernel parameter for "aio-max-nr"
Node Name Current Configured Required Status Comment
---------------- ------------ ------------ ------------ ------------ ------------
TESTP1 3145728 3145728 1048576 passed
TESTP2 3145728 3145728 1048576 passed
Result: Kernel parameter check passed for "aio-max-nr"
Check: Package existence for "make"
Node Name Available Required Status
------------ ------------------------ ------------------------ ----------
TESTP1 make-3.81-3.el5 make-3.81 passed
TESTP2 make-3.81-3.el5 make-3.81 passed
Result: Package existence check passed for "make"
Check: Package existence for "binutils"
Node Name Available Required Status
------------ ------------------------ ------------------------ ----------
TESTP1 binutils-2.17.50.0.6-12.el5 binutils-2.17.50.0.6 passed
TESTP2 binutils-2.17.50.0.6-12.el5 binutils-2.17.50.0.6 passed
Result: Package existence check passed for "binutils"
Check: Package existence for "gcc(x86_64)"
Node Name Available Required Status
------------ ------------------------ ------------------------ ----------
TESTP1 gcc(x86_64)-4.1.2-46.el5 gcc(x86_64)-4.1.2 passed
TESTP2 gcc(x86_64)-4.1.2-46.el5 gcc(x86_64)-4.1.2 passed
Result: Package existence check passed for "gcc(x86_64)"
Check: Package existence for "libaio(x86_64)"
Node Name Available Required Status
------------ ------------------------ ------------------------ ----------
TESTP1 libaio(x86_64)-0.3.106-3.2 libaio(x86_64)-0.3.106 passed
TESTP2 libaio(x86_64)-0.3.106-3.2 libaio(x86_64)-0.3.106 passed
Result: Package existence check passed for "libaio(x86_64)"
Check: Package existence for "glibc(x86_64)"
Node Name Available Required Status
------------ ------------------------ ------------------------ ----------
TESTP1 glibc(x86_64)-2.5-42 glibc(x86_64)-2.5-24 passed
TESTP2 glibc(x86_64)-2.5-42 glibc(x86_64)-2.5-24 passed
Result: Package existence check passed for "glibc(x86_64)"
Check: Package existence for "compat-libstdc++-33(x86_64)"
Node Name Available Required Status
------------ ------------------------ ------------------------ ----------
TESTP1 compat-libstdc++-33(x86_64)-3.2.3-61 compat-libstdc++-33(x86_64)-3.2.3 passed
TESTP2 compat-libstdc++-33(x86_64)-3.2.3-61 compat-libstdc++-33(x86_64)-3.2.3 passed
Result: Package existence check passed for "compat-libstdc++-33(x86_64)"
Check: Package existence for "elfutils-libelf(x86_64)"
Node Name Available Required Status
------------ ------------------------ ------------------------ ----------
TESTP1 elfutils-libelf(x86_64)-0.137-3.el5 elfutils-libelf(x86_64)-0.125 passed
TESTP2 elfutils-libelf(x86_64)-0.137-3.el5 elfutils-libelf(x86_64)-0.125 passed
Result: Package existence check passed for "elfutils-libelf(x86_64)"
Check: Package existence for "elfutils-libelf-devel"
Node Name Available Required Status
------------ ------------------------ ------------------------ ----------
TESTP1 elfutils-libelf-devel-0.137-3.el5 elfutils-libelf-devel-0.125 passed
TESTP2 elfutils-libelf-devel-0.137-3.el5 elfutils-libelf-devel-0.125 passed
Result: Package existence check passed for "elfutils-libelf-devel"
Check: Package existence for "glibc-common"
Node Name Available Required Status
------------ ------------------------ ------------------------ ----------
TESTP1 glibc-common-2.5-42 glibc-common-2.5 passed
TESTP2 glibc-common-2.5-42 glibc-common-2.5 passed
Result: Package existence check passed for "glibc-common"
Check: Package existence for "glibc-devel(x86_64)"
Node Name Available Required Status
------------ ------------------------ ------------------------ ----------
TESTP1 glibc-devel(x86_64)-2.5-42 glibc-devel(x86_64)-2.5 passed
TESTP2 glibc-devel(x86_64)-2.5-42 glibc-devel(x86_64)-2.5 passed
Result: Package existence check passed for "glibc-devel(x86_64)"
Check: Package existence for "glibc-headers"
Node Name Available Required Status
------------ ------------------------ ------------------------ ----------
TESTP1 glibc-headers-2.5-42 glibc-headers-2.5 passed
TESTP2 glibc-headers-2.5-42 glibc-headers-2.5 passed
Result: Package existence check passed for "glibc-headers"
Check: Package existence for "gcc-c++(x86_64)"
Node Name Available Required Status
------------ ------------------------ ------------------------ ----------
TESTP1 gcc-c++(x86_64)-4.1.2-46.el5 gcc-c++(x86_64)-4.1.2 passed
TESTP2 gcc-c++(x86_64)-4.1.2-46.el5 gcc-c++(x86_64)-4.1.2 passed
Result: Package existence check passed for "gcc-c++(x86_64)"
Check: Package existence for "libaio-devel(x86_64)"
Node Name Available Required Status
------------ ------------------------ ------------------------ ----------
TESTP1 libaio-devel(x86_64)-0.3.106-3.2 libaio-devel(x86_64)-0.3.106 passed
TESTP2 libaio-devel(x86_64)-0.3.106-3.2 libaio-devel(x86_64)-0.3.106 passed
Result: Package existence check passed for "libaio-devel(x86_64)"
Check: Package existence for "libgcc(x86_64)"
Node Name Available Required Status
------------ ------------------------ ------------------------ ----------
TESTP1 libgcc(x86_64)-4.1.2-46.el5 libgcc(x86_64)-4.1.2 passed
TESTP2 libgcc(x86_64)-4.1.2-46.el5 libgcc(x86_64)-4.1.2 passed
Result: Package existence check passed for "libgcc(x86_64)"
Check: Package existence for "libstdc++(x86_64)"
Node Name Available Required Status
------------ ------------------------ ------------------------ ----------
TESTP1 libstdc++(x86_64)-4.1.2-46.el5 libstdc++(x86_64)-4.1.2 passed
TESTP2 libstdc++(x86_64)-4.1.2-46.el5 libstdc++(x86_64)-4.1.2 passed
Result: Package existence check passed for "libstdc++(x86_64)"
Check: Package existence for "libstdc++-devel(x86_64)"
Node Name Available Required Status
------------ ------------------------ ------------------------ ----------
TESTP1 libstdc++-devel(x86_64)-4.1.2-46.el5 libstdc++-devel(x86_64)-4.1.2 passed
TESTP2 libstdc++-devel(x86_64)-4.1.2-46.el5 libstdc++-devel(x86_64)-4.1.2 passed
Result: Package existence check passed for "libstdc++-devel(x86_64)"
Check: Package existence for "sysstat"
Node Name Available Required Status
------------ ------------------------ ------------------------ ----------
TESTP1 sysstat-7.0.2-3.el5 sysstat-7.0.2 passed
TESTP2 sysstat-7.0.2-3.el5 sysstat-7.0.2 passed
Result: Package existence check passed for "sysstat"
Check: Package existence for "ksh"
Node Name Available Required Status
------------ ------------------------ ------------------------ ----------
TESTP1 ksh-20080202-14.el5 ksh-20060214 passed
TESTP2 ksh-20080202-14.el5 ksh-20060214 passed
Result: Package existence check passed for "ksh"
Checking for multiple users with UID value 0
Result: Check for multiple users with UID value 0 passed
Check: Current group ID
Result: Current group ID check passed
Starting check for consistency of primary group of root user
Node Name Status
------------------------------------ ------------------------
TESTP1 passed
TESTP2 passed
Check for consistency of root user's primary group passed
Starting Clock synchronization checks using Network Time Protocol(NTP)...
NTP Configuration file check started...
Network Time Protocol(NTP) configuration file not found on any of the nodes. Oracle Cluster Time Synchronization Service(CTSS) can be used instead of NTP for time synchronization on the cluster nodes
No NTP Daemons or Services were found to be running
Result: Clock synchronization check using Network Time Protocol(NTP) passed
Checking Core file name pattern consistency...
Core file name pattern consistency check passed.
Checking to make sure user "grid" is not in "root" group
Node Name Status Comment
------------ ------------------------ ------------------------
TESTP1 passed does not exist
TESTP2 passed does not exist
Result: User "grid" is not part of "root" group. Check passed
Check default user file creation mask
Node Name Available Required Comment
------------ ------------------------ ------------------------ ----------
TESTP1 0022 0022 passed
TESTP2 0022 0022 passed
Result: Default user file creation mask check passed
Checking consistency of file "/etc/resolv.conf" across nodes
Checking the file "/etc/resolv.conf" to make sure only one of domain and search entries is defined
File "/etc/resolv.conf" does not have both domain and search entries defined
Checking if domain entry in file "/etc/resolv.conf" is consistent across the nodes...
domain entry in file "/etc/resolv.conf" is consistent across nodes
Checking if search entry in file "/etc/resolv.conf" is consistent across the nodes...
search entry in file "/etc/resolv.conf" is consistent across nodes
Checking file "/etc/resolv.conf" to make sure that only one search entry is defined
All nodes have one search entry defined in file "/etc/resolv.conf"
Checking all nodes to make sure that search entry is "localdomain.com" as found on node "TESTP1"
All nodes of the cluster have same value for 'search'
Checking DNS response time for an unreachable node
Node Name Status
------------------------------------ ------------------------
TESTP1 failed
TESTP2 failed
PRVF-5636 : The DNS response time for an unreachable node exceeded "15000" ms on following nodes: TESTP1,TESTP2
File "/etc/resolv.conf" is not consistent across nodes
Check: Time zone consistency
Result: Time zone consistency check passed
Fixup information has been generated for following node(s):
TESTP1,TESTP2
Please run the following script on each node as "root" user to execute the fixups:
'/tmp/CVU_11.2.0.3.0_grid/runfixup.sh'
Pre-check for cluster services setup was unsuccessful on all the nodes.
--we can check DNS response using "time nslookup HOST_NAME"
TESTP1@:/u01/grid : $time nslookup TESTP1
Server: 192.168.100.150
Address: 192.168.100.150#53
Name: TESTP1.localdomain.com
Address: 192.168.100.181
real 0m0.14s
user 0m0.00s
sys 0m0.01s
TESTP1@:/u01/grid : $time nslookup TESTP2
Server: 192.168.100.150
Address: 192.168.100.150#53
Name: TESTP2.localdomain.com
Address: 192.168.100.182
real 0m0.02s
user 0m0.00s
sys 0m0.02s
--Start Installation of Grid Infrastructure.
Please Ignore PRVF-5104 .
--Execute root scripts.
to see progress of root.sh
[root@TESTP1 crsconfig]# tail -f /u00/app/11.2.3/grid/cfgtoollogs/crsconfig/rootcrs_testp1.log
[root@TESTP1 Server]# /u00/app/oraInventory/orainstRoot.sh
Changing permissions of /u00/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.
Changing groupname of /u00/app/oraInventory to oinstall.
The execution of the script is complete.
[root@TESTP1 Server]# /u00/app/11.2.3/grid/root.sh
Performing root user operation for Oracle 11g
The following environment variables are set as:
ORACLE_OWNER= grid
ORACLE_HOME= /u00/app/11.2.3/grid
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 script.
Now product-specific root actions will be performed.
Using configuration parameter file: /u00/app/11.2.3/grid/crs/install/crsconfig_params
Creating trace directory
User ignored Prerequisites during installation
OLR initialization - successful
root wallet
root wallet cert
root cert export
peer wallet
profile reader wallet
pa wallet
peer wallet keys
pa wallet keys
peer cert request
pa cert request
peer cert
pa cert
peer root cert TP
profile reader root cert TP
pa root cert TP
peer pa cert TP
pa peer cert TP
profile reader pa cert TP
profile reader peer cert TP
peer user cert
pa user cert
Adding Clusterware entries to inittab
CRS-2672: Attempting to start 'ora.mdnsd' on 'testp1'
CRS-2676: Start of 'ora.mdnsd' on 'testp1' succeeded
CRS-2672: Attempting to start 'ora.gpnpd' on 'testp1'
CRS-2676: Start of 'ora.gpnpd' on 'testp1' succeeded
CRS-2672: Attempting to start 'ora.cssdmonitor' on 'testp1'
CRS-2672: Attempting to start 'ora.gipcd' on 'testp1'
CRS-2676: Start of 'ora.gipcd' on 'testp1' succeeded
CRS-2676: Start of 'ora.cssdmonitor' on 'testp1' succeeded
CRS-2672: Attempting to start 'ora.cssd' on 'testp1'
CRS-2672: Attempting to start 'ora.diskmon' on 'testp1'
CRS-2676: Start of 'ora.diskmon' on 'testp1' succeeded
CRS-2676: Start of 'ora.cssd' on 'testp1' succeeded
ASM created and started successfully.
Disk Group CRS created successfully.
clscfg: -install mode specified
Successfully accumulated necessary OCR keys.
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
CRS-4256: Updating the profile
Successful addition of voting disk 1b6e9a5de4504f92bf70cd3056169ee6.
Successfully replaced voting disk group with +CRS.
CRS-4256: Updating the profile
CRS-4266: Voting file(s) successfully replaced
## STATE File Universal Id File Name Disk group
-- ----- ----------------- --------- ---------
1. ONLINE 1b6e9a5de4504f92bf70cd3056169ee6 (/dev/sdb1) [CRS]
Located 1 voting disk(s).
CRS-2672: Attempting to start 'ora.asm' on 'testp1'
CRS-2676: Start of 'ora.asm' on 'testp1' succeeded
CRS-2672: Attempting to start 'ora.CRS.dg' on 'testp1'
CRS-2676: Start of 'ora.CRS.dg' on 'testp1' succeeded
CRS-2672: Attempting to start 'ora.registry.acfs' on 'testp1'
CRS-2676: Start of 'ora.registry.acfs' on 'testp1' succeeded
Configure Oracle Grid Infrastructure for a Cluster ... succeeded
--ON NODE 2
[root@TESTP2 media]# /u00/app/oraInventory/orainstRoot.sh
Changing permissions of /u00/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.
Changing groupname of /u00/app/oraInventory to oinstall.
The execution of the script is complete.
[root@TESTP2 media]# /u00/app/oraInventory/orainstRoot.sh
Changing permissions of /u00/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.
Changing groupname of /u00/app/oraInventory to oinstall.
The execution of the script is complete.
[root@TESTP2 media]# /u00/app/11.2.3/grid/root.sh
Performing root user operation for Oracle 11g
The following environment variables are set as:
ORACLE_OWNER= grid
ORACLE_HOME= /u00/app/11.2.3/grid
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 script.
Now product-specific root actions will be performed.
Using configuration parameter file: /u00/app/11.2.3/grid/crs/install/crsconfig_params
Creating trace directory
User ignored Prerequisites during installation
OLR initialization - successful
Adding Clusterware entries to inittab
CRS-4402: The CSS daemon was started in exclusive mode but found an active CSS daemon on node testp1, number 1, and is terminating
An active cluster was found during exclusive startup, restarting to join the cluster
Configure Oracle Grid Infrastructure for a Cluster ... succeeded
----CLUSTER STATUS After Grid Installation.
TESTP1@:/home/grid :+ASM1 $crsctl stat res -t
--------------------------------------------------------------------------------
NAME TARGET STATE SERVER STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.CRS.dg
ONLINE ONLINE testp1
ONLINE ONLINE testp2
ora.asm
ONLINE ONLINE testp1 Started
ONLINE ONLINE testp2 Started
ora.gsd
OFFLINE OFFLINE testp1
OFFLINE OFFLINE testp2
ora.net1.network
ONLINE ONLINE testp1
ONLINE ONLINE testp2
ora.ons
ONLINE ONLINE testp1
ONLINE ONLINE testp2
ora.registry.acfs
ONLINE ONLINE testp1
ONLINE ONLINE testp2
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE testp2
ora.LISTENER_SCAN2.lsnr
1 ONLINE ONLINE testp1
ora.LISTENER_SCAN3.lsnr
1 ONLINE ONLINE testp1
ora.cvu
1 ONLINE ONLINE testp1
ora.oc4j
1 ONLINE ONLINE testp1
ora.scan1.vip
1 ONLINE ONLINE testp2
ora.scan2.vip
1 ONLINE ONLINE testp1
ora.scan3.vip
1 ONLINE ONLINE testp1
ora.testp1.vip
1 ONLINE ONLINE testp1
ora.testp2.vip
1 ONLINE ONLINE testp2
CREATE DISKGROUP DATABASE
--Create Diskgroup for Database.
TESTP1@:/home/grid :+ASM1 $sqlplus / as sysasm
SQL*Plus: Release 11.2.0.3.0 Production on Mon Aug 6 17:46:38 2012
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options
SQL> CREATE DISKGROUP TESTDG EXTERNAL REDUNDANCY
SQL> DISK '/dev/sdc1','/dev/sdd1','/dev/sde1'
SQL> ATTRIBUTE 'au_size'='1M',
SQL> 'compatible.asm' = '11.2',
SQL> 'compatible.rdbms' = '11.2';
Diskgroup created.
--Mount Diskgroup on other Nodes.
TESTP2@:/home/grid :+ASM2 $sqlplus / as sysasm
SQL*Plus: Release 11.2.0.3.0 Production on Mon Aug 6 18:52:06 2012
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options
SQL> ALTER DISKGROUP TESTDG MOUNT;
Diskgroup altered.
SQL>
--Install Database software and create DB.
---After this point you will run root script.
--And root.sh after DB installation.
[root@TESTP1 ~]# /u01/app/oracle/11.2.3/db/root.sh
Performing root user operation for Oracle 11g
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /u01/app/oracle/11.2.3/db
Enter the full pathname of the local bin directory: [/usr/local/bin]:
The contents of "dbhome" have not changed. No need to overwrite.
The contents of "oraenv" have not changed. No need to overwrite.
The contents of "coraenv" have not changed. No need to overwrite.
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 script.
Now product-specific root actions will be performed.
Finished product-specific root actions.