Two previous blog posts showed steps to upgrade from
11.2.0.1 to 11.2.0.2 and
11.2.0.2 to 11.2.0.3. Earlier posts all had out of place upgrades for a single node cluster stack. This post is for a two node cluster with out of place upgrade for Grid Infrastructure (GI) and in-place upgrade for Oracle Home.
Following text is from GI install guide (sections that relates to the upgrade).
"
Oracle recommends that you leave Oracle RAC instances running. When you start the root script on each node, that node's instances are shut down and then started up again by the rootupgrade.sh script. If you upgrade from release 11.2.0.1 to any later version (11.2.0.2 or 11.2.0.3), then all nodes are selected by default. You cannot select or de-select the nodes. For single instance Oracle Databases on the cluster, only those that use Oracle ASM need to be shut down. Listeners do not need to be shut down."
"
Oracle recommends that you select all cluster member nodes for the upgrade, and then shut down database instances on each node before you run the upgrade root script, starting the database instance up again on each node after the upgrade is complete. You can also use this procedure to upgrade a subset of nodes in the cluster."
"
Oracle recommends that you upgrade Oracle ASM at the same time that you upgrade the Oracle Clusterware binaries. Until Oracle ASM is upgraded, Oracle databases that use Oracle ASM cannot be created. Until Oracle ASM is upgraded, the 11g release 2 (11.2) Oracle ASM management tools in the Grid home (for example, srvctl) will not work."
"
At the end of the upgrade, if you set the OCR backup location manually to the older release Oracle Clusterware home (CRS home), then you must change the OCR backup location to the Oracle Grid Infrastructure home (Grid home). If you did not set the OCR backup location manually, then this issue does not concern you."
"
To upgrade existing 11.2.0.1 Oracle Grid Infrastructure installations to Oracle Grid Infrastructure 11.2.0.2, you must first verify if you need to apply any mandatory patches for upgrade to succeed. Refer to Section F.6 for steps to check readiness.
To upgrade existing Oracle Grid Infrastructure from 11.2.0.2, to 11.2.0.3 or later, you must apply patch 11.2.0.2.1 (11.2.0.2 PSU 1) or later."
From the upgrade guide
"
Known Issue with the Deinstallation Tool for This Release
Cause: After upgrading from 11.2.0.1 or 11.2.0.2 to 11.2.0.3, deinstallation of the Oracle home in the earlier release of Oracle Database may result in the deletion of the old Oracle base that was associated with it. This may also result in the deletion of data files, audit files, etc., which are stored under the old Oracle base.
Action: Before deinstalling the Oracle home in the earlier release, edit the orabase_cleanup.lst file found in the $Oracle_Home/utl directory and remove the "oradata" and "admin" entries. Then, deinstall the Oracle home using the 11.2.0.3 deinstallation tool."
Combination of patches used in the two upgrades mentioned above are not needed here (9706490 or 12539000).
11.2.0.1 to 11.2.0.2 ASM Rolling Upgrade [ID 1274629.1] has a new section for upgrading to 11.2.0.3.
Cluster verification utility can check the required patches for the platform before the upgrade. For Linux x86_64 the required patch was 9413827. Running cluvfy with pre upgrade mode would check the pre-reqs needed. Only two stood out in this case
Checking for Oracle patch "9413827" in home "/opt/app/11.2.0/grid".
Node Name Applied Required Comment
------------ ------------------------ ------------------------ ----------
rac5 missing 9413827 failed
rac4 missing 9413827 failed
Result: Check for Oracle patch "9413827" in home "/opt/app/11.2.0/grid" failed
There are no oracle patches required for home "/opt/app/11.2.0/grid3".
Check: Kernel parameter for "shmmni"
Node Name Current Configured Required Status Comment
---------------- ------------ ------------ ------------ ------------ ------------
rac5 4096 unknown 4096 failed Configured value too low.
rac4 4096 unknown 4096 failed Configured value too low.
Result: Kernel parameter check failed for "shmmni"
After applying the required patch and running the fixup script all the checks passed.
Below is the full output from the pre-reqs check.
./runcluvfy.sh stage -pre crsinst -upgrade -n rac4,rac5 -rolling -src_crshome /opt/app/11.2.0/grid -dest_crshome /opt/app/11.2.0/grid3 -dest_version 11.2.0.3.0 -fixup -fixupdir /home/oracle/fixupscript -verbose
Performing pre-checks for cluster services setup
Checking node reachability...
Check: Node reachability from node "rac4"
Destination Node Reachable?
------------------------------------ ------------------------
rac4 yes
rac5 yes
Result: Node reachability check passed from node "rac4"
Checking user equivalence...
Check: User equivalence for user "oracle"
Node Name Status
------------------------------------ ------------------------
rac5 passed
rac4 passed
Result: User equivalence check passed for user "oracle"
Checking CRS user consistency
Result: CRS user consistency check successful
Checking node connectivity...
Checking hosts config file...
Node Name Status
------------------------------------ ------------------------
rac5 passed
rac4 passed
Verification of the hosts config file successful
Interface information for node "rac5"
Name IP Address Subnet Gateway Def. Gateway HW Address MTU
------ --------------- --------------- --------------- --------------- ----------------- ------
eth0 192.168.0.85 192.168.0.0 0.0.0.0 192.168.0.100 08:00:27:68:31:61 1500
eth0 192.168.0.89 192.168.0.0 0.0.0.0 192.168.0.100 08:00:27:68:31:61 1500
eth1 192.168.0.87 192.168.0.0 0.0.0.0 192.168.0.100 08:00:27:2B:9C:30 1500
Interface information for node "rac4"
Name IP Address Subnet Gateway Def. Gateway HW Address MTU
------ --------------- --------------- --------------- --------------- ----------------- ------
eth0 192.168.0.86 192.168.0.0 0.0.0.0 192.168.0.100 08:00:27:C1:59:A3 1500
eth0 192.168.0.91 192.168.0.0 0.0.0.0 192.168.0.100 08:00:27:C1:59:A3 1500
eth0 192.168.0.90 192.168.0.0 0.0.0.0 192.168.0.100 08:00:27:C1:59:A3 1500
eth1 192.168.0.88 192.168.0.0 0.0.0.0 192.168.0.100 08:00:27:7C:F4:94 1500
Check: Node connectivity for interface "eth0"
Source Destination Connected?
------------------------------ ------------------------------ ----------------
rac5[192.168.0.85] rac5[192.168.0.89] yes
rac5[192.168.0.85] rac5[192.168.0.87] yes
rac5[192.168.0.85] rac4[192.168.0.86] yes
rac5[192.168.0.85] rac4[192.168.0.91] yes
rac5[192.168.0.85] rac4[192.168.0.90] yes
rac5[192.168.0.85] rac4[192.168.0.88] yes
rac5[192.168.0.89] rac5[192.168.0.87] yes
rac5[192.168.0.89] rac4[192.168.0.86] yes
rac5[192.168.0.89] rac4[192.168.0.91] yes
rac5[192.168.0.89] rac4[192.168.0.90] yes
rac5[192.168.0.89] rac4[192.168.0.88] yes
rac5[192.168.0.87] rac4[192.168.0.86] yes
rac5[192.168.0.87] rac4[192.168.0.91] yes
rac5[192.168.0.87] rac4[192.168.0.90] yes
rac5[192.168.0.87] rac4[192.168.0.88] yes
rac4[192.168.0.86] rac4[192.168.0.91] yes
rac4[192.168.0.86] rac4[192.168.0.90] yes
rac4[192.168.0.86] rac4[192.168.0.88] yes
rac4[192.168.0.91] rac4[192.168.0.90] yes
rac4[192.168.0.91] rac4[192.168.0.88] yes
rac4[192.168.0.90] rac4[192.168.0.88] yes
Result: Node connectivity passed for interface "eth0"
Check: TCP connectivity of subnet "192.168.0.0"
Source Destination Connected?
------------------------------ ------------------------------ ----------------
rac4:192.168.0.86 rac5:192.168.0.85 passed
rac4:192.168.0.86 rac5:192.168.0.89 passed
rac4:192.168.0.86 rac5:192.168.0.87 passed
rac4:192.168.0.86 rac4:192.168.0.91 passed
rac4:192.168.0.86 rac4:192.168.0.90 passed
rac4:192.168.0.86 rac4:192.168.0.88 passed
Result: TCP connectivity check passed for subnet "192.168.0.0"
Check: Node connectivity for interface "eth1"
Checking subnet mask consistency...
Subnet mask consistency check passed for subnet "192.168.0.0".
Subnet mask consistency check passed.
Result: Node connectivity check passed
Checking multicast communication...
Checking subnet "192.168.0.0" for multicast communication with multicast group "230.0.1.0"...
Check of subnet "192.168.0.0" for multicast communication with multicast group "230.0.1.0" passed.
Check of multicast communication passed.
Checking OCR integrity...
OCR integrity check passed
Checking ASMLib configuration.
Node Name Status
------------------------------------ ------------------------
rac5 passed
rac4 passed
Result: Check for ASMLib configuration passed.
Check: Total memory
Node Name Available Required Status
------------ ------------------------ ------------------------ ----------
rac5 1.9641GB (2059516.0KB) 1.5GB (1572864.0KB) passed
rac4 1.9641GB (2059516.0KB) 1.5GB (1572864.0KB) passed
Result: Total memory check passed
Check: Available memory
Node Name Available Required Status
------------ ------------------------ ------------------------ ----------
rac5 1004.918MB (1029036.0KB) 50MB (51200.0KB) passed
rac4 744.9531MB (762832.0KB) 50MB (51200.0KB) passed
Result: Available memory check passed
Check: Swap space
Node Name Available Required Status
------------ ------------------------ ------------------------ ----------
rac5 3.9987GB (4192956.0KB) 2.9462GB (3089274.0KB) passed
rac4 3.9987GB (4192956.0KB) 2.9462GB (3089274.0KB) passed
Result: Swap space check passed
Check: Free disk space for "rac5:/opt/app/11.2.0/grid3,rac5:/tmp"
Path Node Name Mount point Available Required Status
---------------- ------------ ------------ ------------ ------------ ------------
/opt/app/11.2.0/grid3 rac5 / 10.4014GB 7.5GB passed
/tmp rac5 / 10.4014GB 7.5GB passed
Result: Free disk space check passed for "rac5:/opt/app/11.2.0/grid3,rac5:/tmp"
Check: Free disk space for "rac4:/opt/app/11.2.0/grid3,rac4:/tmp"
Path Node Name Mount point Available Required Status
---------------- ------------ ------------ ------------ ------------ ------------
/opt/app/11.2.0/grid3 rac4 / 10.8156GB 7.5GB passed
/tmp rac4 / 10.8156GB 7.5GB passed
Result: Free disk space check passed for "rac4:/opt/app/11.2.0/grid3,rac4:/tmp"
Check: User existence for "oracle"
Node Name Status Comment
------------ ------------------------ ------------------------
rac5 passed exists(500)
rac4 passed exists(500)
Checking for multiple users with UID value 500
Result: Check for multiple users with UID value 500 passed
Result: User existence check passed for "oracle"
Check: Group existence for "oinstall"
Node Name Status Comment
------------ ------------------------ ------------------------
rac5 passed exists
rac4 passed exists
Result: Group existence check passed for "oinstall"
Check: Membership of user "oracle" in group "oinstall" [as Primary]
Node Name User Exists Group Exists User in Group Primary Status
---------------- ------------ ------------ ------------ ------------ ------------
rac5 yes yes yes yes passed
rac4 yes yes yes yes passed
Result: Membership check for user "oracle" in group "oinstall" [as Primary] passed
Check: Run level
Node Name run level Required Status
------------ ------------------------ ------------------------ ----------
rac5 3 3,5 passed
rac4 3 3,5 passed
Result: Run level check passed
Check: Hard limits for "maximum open file descriptors"
Node Name Type Available Required Status
---------------- ------------ ------------ ------------ ----------------
rac5 hard 65536 65536 passed
rac4 hard 65536 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
---------------- ------------ ------------ ------------ ----------------
rac5 soft 1024 1024 passed
rac4 soft 65536 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
---------------- ------------ ------------ ------------ ----------------
rac5 hard 16384 16384 passed
rac4 hard 16384 16384 passed
Result: Hard limits check passed for "maximum user processes"
Check: Soft limits for "maximum user processes"
Node Name Type Available Required Status
---------------- ------------ ------------ ------------ ----------------
rac5 soft 16383 2047 passed
rac4 soft 16383 2047 passed
Result: Soft limits check passed for "maximum user processes"
Checking for Oracle patch "9413827" in home "/opt/app/11.2.0/grid".
Node Name Applied Required Comment
------------ ------------------------ ------------------------ ----------
rac5 9413827 9413827 passed
rac4 9413827 9413827 passed
Result: Check for Oracle patch "9413827" in home "/opt/app/11.2.0/grid" passed
There are no oracle patches required for home "/opt/app/11.2.0/grid3".
Check: System architecture
Node Name Available Required Status
------------ ------------------------ ------------------------ ----------
rac5 x86_64 x86_64 passed
rac4 x86_64 x86_64 passed
Result: System architecture check passed
Check: Kernel version
Node Name Available Required Status
------------ ------------------------ ------------------------ ----------
rac5 2.6.18-194.el5 2.6.18 passed
rac4 2.6.18-194.el5 2.6.18 passed
Result: Kernel version check passed
Check: Kernel parameter for "semmsl"
Node Name Current Configured Required Status Comment
---------------- ------------ ------------ ------------ ------------ ------------
rac5 3010 3010 250 passed
rac4 3010 3010 250 passed
Result: Kernel parameter check passed for "semmsl"
Check: Kernel parameter for "semmns"
Node Name Current Configured Required Status Comment
---------------- ------------ ------------ ------------ ------------ ------------
rac5 385280 385280 32000 passed
rac4 385280 385280 32000 passed
Result: Kernel parameter check passed for "semmns"
Check: Kernel parameter for "semopm"
Node Name Current Configured Required Status Comment
---------------- ------------ ------------ ------------ ------------ ------------
rac5 3010 3010 100 passed
rac4 3010 3010 100 passed
Result: Kernel parameter check passed for "semopm"
Check: Kernel parameter for "semmni"
Node Name Current Configured Required Status Comment
---------------- ------------ ------------ ------------ ------------ ------------
rac5 128 128 128 passed
rac4 128 128 128 passed
Result: Kernel parameter check passed for "semmni"
Check: Kernel parameter for "shmmax"
Node Name Current Configured Required Status Comment
---------------- ------------ ------------ ------------ ------------ ------------
rac5 68719476736 68719476736 1054472192 passed
rac4 68719476736 68719476736 1054472192 passed
Result: Kernel parameter check passed for "shmmax"
Check: Kernel parameter for "shmmni"
Node Name Current Configured Required Status Comment
---------------- ------------ ------------ ------------ ------------ ------------
rac5 4096 4096 4096 passed
rac4 4096 4096 4096 passed
Result: Kernel parameter check passed for "shmmni"
Check: Kernel parameter for "shmall"
Node Name Current Configured Required Status Comment
---------------- ------------ ------------ ------------ ------------ ------------
rac5 4294967296 4294967296 2097152 passed
rac4 4294967296 4294967296 2097152 passed
Result: Kernel parameter check passed for "shmall"
Check: Kernel parameter for "file-max"
Node Name Current Configured Required Status Comment
---------------- ------------ ------------ ------------ ------------ ------------
rac5 6815744 6815744 6815744 passed
rac4 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
---------------- ------------ ------------ ------------ ------------ ------------
rac5 between 9000.0 & 65500.0 between 9000.0 & 65500.0 between 9000.0 & 65500.0 passed
rac4 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
---------------- ------------ ------------ ------------ ------------ ------------
rac5 262144 262144 262144 passed
rac4 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
---------------- ------------ ------------ ------------ ------------ ------------
rac5 4194304 4194304 4194304 passed
rac4 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
---------------- ------------ ------------ ------------ ------------ ------------
rac5 262144 262144 262144 passed
rac4 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
---------------- ------------ ------------ ------------ ------------ ------------
rac5 1048576 1048576 1048576 passed
rac4 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
---------------- ------------ ------------ ------------ ------------ ------------
rac5 1048576 1048576 1048576 passed
rac4 1048576 1048576 1048576 passed
Result: Kernel parameter check passed for "aio-max-nr"
Check: Package existence for "make"
Node Name Available Required Status
------------ ------------------------ ------------------------ ----------
rac5 make-3.81-3.el5 make-3.81 passed
rac4 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
------------ ------------------------ ------------------------ ----------
rac5 binutils-2.17.50.0.6-14.el5 binutils-2.17.50.0.6 passed
rac4 binutils-2.17.50.0.6-14.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
------------ ------------------------ ------------------------ ----------
rac5 gcc(x86_64)-4.1.2-48.el5 gcc(x86_64)-4.1.2 passed
rac4 gcc(x86_64)-4.1.2-48.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
------------ ------------------------ ------------------------ ----------
rac5 libaio(x86_64)-0.3.106-5 libaio(x86_64)-0.3.106 passed
rac4 libaio(x86_64)-0.3.106-5 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
------------ ------------------------ ------------------------ ----------
rac5 glibc(x86_64)-2.5-49 glibc(x86_64)-2.5-24 passed
rac4 glibc(x86_64)-2.5-49 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
------------ ------------------------ ------------------------ ----------
rac5 compat-libstdc++-33(x86_64)-3.2.3-61 compat-libstdc++-33(x86_64)-3.2.3 passed
rac4 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
------------ ------------------------ ------------------------ ----------
rac5 elfutils-libelf(x86_64)-0.137-3.el5 elfutils-libelf(x86_64)-0.125 passed
rac4 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
------------ ------------------------ ------------------------ ----------
rac5 elfutils-libelf-devel-0.137-3.el5 elfutils-libelf-devel-0.125 passed
rac4 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
------------ ------------------------ ------------------------ ----------
rac5 glibc-common-2.5-49 glibc-common-2.5 passed
rac4 glibc-common-2.5-49 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
------------ ------------------------ ------------------------ ----------
rac5 glibc-devel(x86_64)-2.5-49 glibc-devel(x86_64)-2.5 passed
rac4 glibc-devel(x86_64)-2.5-49 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
------------ ------------------------ ------------------------ ----------
rac5 glibc-headers-2.5-49 glibc-headers-2.5 passed
rac4 glibc-headers-2.5-49 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
------------ ------------------------ ------------------------ ----------
rac5 gcc-c++(x86_64)-4.1.2-48.el5 gcc-c++(x86_64)-4.1.2 passed
rac4 gcc-c++(x86_64)-4.1.2-48.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
------------ ------------------------ ------------------------ ----------
rac5 libaio-devel(x86_64)-0.3.106-5 libaio-devel(x86_64)-0.3.106 passed
rac4 libaio-devel(x86_64)-0.3.106-5 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
------------ ------------------------ ------------------------ ----------
rac5 libgcc(x86_64)-4.1.2-48.el5 libgcc(x86_64)-4.1.2 passed
rac4 libgcc(x86_64)-4.1.2-48.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
------------ ------------------------ ------------------------ ----------
rac5 libstdc++(x86_64)-4.1.2-48.el5 libstdc++(x86_64)-4.1.2 passed
rac4 libstdc++(x86_64)-4.1.2-48.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
------------ ------------------------ ------------------------ ----------
rac5 libstdc++-devel(x86_64)-4.1.2-48.el5 libstdc++-devel(x86_64)-4.1.2 passed
rac4 libstdc++-devel(x86_64)-4.1.2-48.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
------------ ------------------------ ------------------------ ----------
rac5 sysstat-7.0.2-3.el5 sysstat-7.0.2 passed
rac4 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
------------ ------------------------ ------------------------ ----------
rac5 ksh-20100202-1.el5 ksh-20060214 passed
rac4 ksh-20100202-1.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
------------------------------------ ------------------------
rac5 passed
rac4 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 "oracle" is not in "root" group
Node Name Status Comment
------------ ------------------------ ------------------------
rac5 passed does not exist
rac4 passed does not exist
Result: User "oracle" is not part of "root" group. Check passed
Check default user file creation mask
Node Name Available Required Comment
------------ ------------------------ ------------------------ ----------
rac5 0022 0022 passed
rac4 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 "domain.net" as found on node "rac5"
All nodes of the cluster have same value for 'search'
Checking DNS response time for an unreachable node
Node Name Status
------------------------------------ ------------------------
rac5 passed
rac4 passed
The DNS response time for an unreachable node is within acceptable limit on all nodes
File "/etc/resolv.conf" is consistent across nodes
UDev attributes check for OCR locations started...
Result: UDev attributes check passed for OCR locations
UDev attributes check for Voting Disk locations started...
Result: UDev attributes check passed for Voting Disk locations
Check: Time zone consistency
Result: Time zone consistency check passed
Checking VIP configuration.
Checking VIP Subnet configuration.
Check for VIP Subnet configuration passed.
Checking VIP reachability
Check for VIP reachability passed.
Checking Oracle Cluster Voting Disk configuration...
ASM Running check passed. ASM is running on all specified nodes
Oracle Cluster Voting Disk configuration check passed
Clusterware version consistency passed
Pre-check for cluster services setup was successful.
Resolve any failed pre-reqs steps before proceeding. Metalink notes at the end and from two earlier posts may help in resolving some of the issues.
As stated on Oracle documentation GI upgrades are rolling upgrades even though all instances are selected. Below is the status of the cluster before the start of software installation.(
crs_stat is depreciated)
crs_stat -t
Name Type Target State Host
------------------------------------------------------------
ora....ERDG.dg ora....up.type ONLINE ONLINE rac4
ora.DATA.dg ora....up.type ONLINE ONLINE rac4
ora.FLASH.dg ora....up.type ONLINE ONLINE rac4
ora....ER.lsnr ora....er.type ONLINE ONLINE rac4
ora....N1.lsnr ora....er.type ONLINE ONLINE rac4
ora.asm ora.asm.type ONLINE ONLINE rac4
ora.eons ora.eons.type ONLINE ONLINE rac4
ora.gsd ora.gsd.type OFFLINE OFFLINE
ora....network ora....rk.type ONLINE ONLINE rac4
ora.oc4j ora.oc4j.type OFFLINE OFFLINE
ora.ons ora.ons.type ONLINE ONLINE rac4
ora.rac11g2.db ora....se.type ONLINE ONLINE rac4
ora....SM1.asm application ONLINE ONLINE rac4
ora....C4.lsnr application ONLINE ONLINE rac4
ora.rac4.gsd application OFFLINE OFFLINE
ora.rac4.ons application ONLINE ONLINE rac4
ora.rac4.vip ora....t1.type ONLINE ONLINE rac4
ora....SM2.asm application ONLINE ONLINE rac5
ora....C5.lsnr application ONLINE ONLINE rac5
ora.rac5.gsd application OFFLINE OFFLINE
ora.rac5.ons application ONLINE ONLINE rac5
ora.rac5.vip ora....t1.type ONLINE ONLINE rac5
ora....ry.acfs ora....fs.type ONLINE ONLINE rac4
ora.scan1.vip ora....ip.type ONLINE ONLINE rac4
Unset Oracle environment variables
$ unset ORACLE_BASE
$ unset ORACLE_HOME
$ unset ORACLE_SID
and run the 11.2.0.3 installer
By default all the nodes are selected but cluster could be upgraded in a rolling fashion.
Select a new location for the out of place upgrade
The rolling upgrade begins with the running of rootupgrade.sh. Up until this point the exisitng cluster was up and running. Running rootupgrade.sh one node at a time will achieve the rolling upgrade.
To illustrate the rolling upgrade one instance is shutdown before the running of rootupgrade.sh (this is not necessary as rootupgrade.sh will shutdown all cluster related resources on the node which rootupgrade.sh is run).
srvctl stop home -o $ORACLE_HOME -s status -n rac4
srvctl status database -d rac11g2
Instance rac11g21 is not running on node rac4
Instance rac11g22 is running on node rac5
Instance rac11g22 will remain open on rac5 while rac4 is being upgraded.
# ./rootupgrade.sh
Performing root user operation for Oracle 11g
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: /opt/app/11.2.0/grid3/crs/install/crsconfig_params
Creating trace directory
ASM upgrade has started on first node.
CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'rac4'
CRS-2673: Attempting to stop 'ora.crsd' on 'rac4'
CRS-2790: Starting shutdown of Cluster Ready Services-managed resources on 'rac4'
CRS-2673: Attempting to stop 'ora.CLUSTERDG.dg' on 'rac4'
CRS-2673: Attempting to stop 'ora.registry.acfs' on 'rac4'
CRS-2673: Attempting to stop 'ora.DATA.dg' on 'rac4'
CRS-2673: Attempting to stop 'ora.FLASH.dg' on 'rac4'
CRS-2673: Attempting to stop 'ora.LISTENER_SCAN1.lsnr' on 'rac4'
CRS-2673: Attempting to stop 'ora.LISTENER.lsnr' on 'rac4'
CRS-2677: Stop of 'ora.registry.acfs' on 'rac4' succeeded
CRS-2677: Stop of 'ora.LISTENER_SCAN1.lsnr' on 'rac4' succeeded
CRS-2673: Attempting to stop 'ora.scan1.vip' on 'rac4'
CRS-2677: Stop of 'ora.LISTENER.lsnr' on 'rac4' succeeded
CRS-2673: Attempting to stop 'ora.rac4.vip' on 'rac4'
CRS-2677: Stop of 'ora.scan1.vip' on 'rac4' succeeded
CRS-2672: Attempting to start 'ora.scan1.vip' on 'rac5'
CRS-2677: Stop of 'ora.rac4.vip' on 'rac4' succeeded
CRS-2672: Attempting to start 'ora.rac4.vip' on 'rac5'
CRS-2676: Start of 'ora.scan1.vip' on 'rac5' succeeded
CRS-2672: Attempting to start 'ora.LISTENER_SCAN1.lsnr' on 'rac5'
CRS-2676: Start of 'ora.rac4.vip' on 'rac5' succeeded
CRS-2676: Start of 'ora.LISTENER_SCAN1.lsnr' on 'rac5' succeeded
CRS-2677: Stop of 'ora.CLUSTERDG.dg' on 'rac4' succeeded
CRS-2677: Stop of 'ora.DATA.dg' on 'rac4' succeeded
CRS-2677: Stop of 'ora.FLASH.dg' on 'rac4' succeeded
CRS-2673: Attempting to stop 'ora.asm' on 'rac4'
CRS-2677: Stop of 'ora.asm' on 'rac4' succeeded
CRS-2673: Attempting to stop 'ora.eons' on 'rac4'
CRS-2673: Attempting to stop 'ora.ons' on 'rac4'
CRS-2677: Stop of 'ora.ons' on 'rac4' succeeded
CRS-2673: Attempting to stop 'ora.net1.network' on 'rac4'
CRS-2677: Stop of 'ora.net1.network' on 'rac4' succeeded
CRS-2677: Stop of 'ora.eons' on 'rac4' succeeded
CRS-2792: Shutdown of Cluster Ready Services-managed resources on 'rac4' has completed
CRS-2677: Stop of 'ora.crsd' on 'rac4' succeeded
CRS-2673: Attempting to stop 'ora.gpnpd' on 'rac4'
CRS-2673: Attempting to stop 'ora.cssdmonitor' on 'rac4'
CRS-2673: Attempting to stop 'ora.ctssd' on 'rac4'
CRS-2673: Attempting to stop 'ora.evmd' on 'rac4'
CRS-2673: Attempting to stop 'ora.asm' on 'rac4'
CRS-2673: Attempting to stop 'ora.mdnsd' on 'rac4'
CRS-2673: Attempting to stop 'ora.drivers.acfs' on 'rac4'
CRS-2677: Stop of 'ora.cssdmonitor' on 'rac4' succeeded
CRS-2677: Stop of 'ora.gpnpd' on 'rac4' succeeded
CRS-2677: Stop of 'ora.evmd' on 'rac4' succeeded
CRS-2677: Stop of 'ora.mdnsd' on 'rac4' succeeded
CRS-2677: Stop of 'ora.ctssd' on 'rac4' succeeded
CRS-2677: Stop of 'ora.drivers.acfs' on 'rac4' succeeded
CRS-2677: Stop of 'ora.asm' on 'rac4' succeeded
CRS-2673: Attempting to stop 'ora.cssd' on 'rac4'
CRS-2677: Stop of 'ora.cssd' on 'rac4' succeeded
CRS-2673: Attempting to stop 'ora.diskmon' on 'rac4'
CRS-2673: Attempting to stop 'ora.gipcd' on 'rac4'
CRS-2677: Stop of 'ora.gipcd' on 'rac4' succeeded
CRS-2677: Stop of 'ora.diskmon' on 'rac4' succeeded
CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'rac4' has completed
CRS-4133: Oracle High Availability Services has been stopped.
OLR initialization - successful
Replacing Clusterware entries in inittab
clscfg: EXISTING configuration version 5 detected.
clscfg: version 5 is 11g Release 2.
Successfully accumulated necessary OCR keys.
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
Preparing packages for installation...
cvuqdisk-1.0.9-1
Configure Oracle Grid Infrastructure for a Cluster ... succeeded
At the end of the upgrade script run the shutdown instance will be up.
srvctl status database -d rac11g2
Instance rac11g21 is running on node rac4
Instance rac11g22 is running on node rac5
Node rac5 is upgraded next.
srvctl stop home -o $ORACLE_HOME -s status -n rac5
srvctl status database -d rac11g2
Instance rac11g21 is running on node rac4
Instance rac11g22 is not running on node rac5
Now rac11g21 on rac4 will remain open while rac5 is upgraded. (shutdown of instance is not necessary)
# ./rootupgrade.sh
Performing root user operation for Oracle 11g
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: /opt/app/11.2.0/grid3/crs/install/crsconfig_params
Creating trace directory
CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'rac5'
CRS-2673: Attempting to stop 'ora.crsd' on 'rac5'
CRS-2790: Starting shutdown of Cluster Ready Services-managed resources on 'rac5'
CRS-2673: Attempting to stop 'ora.LISTENER.lsnr' on 'rac5'
CRS-2673: Attempting to stop 'ora.CLUSTERDG.dg' on 'rac5'
CRS-2673: Attempting to stop 'ora.registry.acfs' on 'rac5'
CRS-2673: Attempting to stop 'ora.DATA.dg' on 'rac5'
CRS-2673: Attempting to stop 'ora.FLASH.dg' on 'rac5'
CRS-2673: Attempting to stop 'ora.LISTENER_SCAN1.lsnr' on 'rac5'
CRS-2677: Stop of 'ora.LISTENER.lsnr' on 'rac5' succeeded
CRS-2673: Attempting to stop 'ora.rac5.vip' on 'rac5'
CRS-2677: Stop of 'ora.rac5.vip' on 'rac5' succeeded
CRS-2672: Attempting to start 'ora.rac5.vip' on 'rac4'
CRS-2677: Stop of 'ora.registry.acfs' on 'rac5' succeeded
CRS-2677: Stop of 'ora.LISTENER_SCAN1.lsnr' on 'rac5' succeeded
CRS-2673: Attempting to stop 'ora.scan1.vip' on 'rac5'
CRS-2676: Start of 'ora.rac5.vip' on 'rac4' succeeded
CRS-2677: Stop of 'ora.scan1.vip' on 'rac5' succeeded
CRS-2672: Attempting to start 'ora.scan1.vip' on 'rac4'
CRS-2676: Start of 'ora.scan1.vip' on 'rac4' succeeded
CRS-2672: Attempting to start 'ora.LISTENER_SCAN1.lsnr' on 'rac4'
CRS-2676: Start of 'ora.LISTENER_SCAN1.lsnr' on 'rac4' succeeded
CRS-2677: Stop of 'ora.CLUSTERDG.dg' on 'rac5' succeeded
CRS-2677: Stop of 'ora.DATA.dg' on 'rac5' succeeded
CRS-2677: Stop of 'ora.FLASH.dg' on 'rac5' succeeded
CRS-2673: Attempting to stop 'ora.asm' on 'rac5'
CRS-2677: Stop of 'ora.asm' on 'rac5' succeeded
CRS-2673: Attempting to stop 'ora.eons' on 'rac5'
CRS-2673: Attempting to stop 'ora.ons' on 'rac5'
CRS-2677: Stop of 'ora.ons' on 'rac5' succeeded
CRS-2673: Attempting to stop 'ora.net1.network' on 'rac5'
CRS-2677: Stop of 'ora.net1.network' on 'rac5' succeeded
CRS-2677: Stop of 'ora.eons' on 'rac5' succeeded
CRS-2792: Shutdown of Cluster Ready Services-managed resources on 'rac5' has completed
CRS-2677: Stop of 'ora.crsd' on 'rac5' succeeded
CRS-2673: Attempting to stop 'ora.cssdmonitor' on 'rac5'
CRS-2673: Attempting to stop 'ora.ctssd' on 'rac5'
CRS-2673: Attempting to stop 'ora.evmd' on 'rac5'
CRS-2673: Attempting to stop 'ora.asm' on 'rac5'
CRS-2673: Attempting to stop 'ora.drivers.acfs' on 'rac5'
CRS-2673: Attempting to stop 'ora.mdnsd' on 'rac5'
CRS-2677: Stop of 'ora.cssdmonitor' on 'rac5' succeeded
CRS-2677: Stop of 'ora.evmd' on 'rac5' succeeded
CRS-2677: Stop of 'ora.mdnsd' on 'rac5' succeeded
CRS-2677: Stop of 'ora.ctssd' on 'rac5' succeeded
CRS-2677: Stop of 'ora.drivers.acfs' on 'rac5' succeeded
CRS-2677: Stop of 'ora.asm' on 'rac5' succeeded
CRS-2673: Attempting to stop 'ora.cssd' on 'rac5'
CRS-2677: Stop of 'ora.cssd' on 'rac5' succeeded
CRS-2673: Attempting to stop 'ora.gpnpd' on 'rac5'
CRS-2673: Attempting to stop 'ora.diskmon' on 'rac5'
CRS-2677: Stop of 'ora.gpnpd' on 'rac5' succeeded
CRS-2673: Attempting to stop 'ora.gipcd' on 'rac5'
CRS-2677: Stop of 'ora.diskmon' on 'rac5' succeeded
CRS-2677: Stop of 'ora.gipcd' on 'rac5' succeeded
CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'rac5' has completed
CRS-4133: Oracle High Availability Services has been stopped.
OLR initialization - successful
Replacing Clusterware entries in inittab
clscfg: EXISTING configuration version 5 detected.
clscfg: version 5 is 11g Release 2.
Successfully accumulated necessary OCR keys.
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
Started to upgrade the Oracle Clusterware. This operation may take a few minutes.
Started to upgrade the CSS.
Started to upgrade the CRS.
The CRS was successfully upgraded.
Oracle Clusterware operating version was successfully set to 11.2.0.3.0
ASM upgrade has finished on last node.
Preparing packages for installation...
cvuqdisk-1.0.9-1
Configure Oracle Grid Infrastructure for a Cluster ... succeeded
After the uprade script run instance is up and running
srvctl status database -d rac11g2
Instance rac11g21 is running on node rac4
Instance rac11g22 is running on node rac5
Click the ok button on the popup window and continue the remaining steps.
Check the clusterware version has changed to 11.2.0.3
crsctl query crs activeversion
Oracle Clusterware active version on the cluster is [11.2.0.3.0]
crsctl query crs softwareversion
Oracle Clusterware version on node [rac5] is [11.2.0.3.0]
crsctl query crs softwareversion rac4
Oracle Clusterware version on node [rac4] is [11.2.0.3.0]
Next step is to upgrade the Oracle database software. In this case it will be done as an in-place upgrade (which is not recommended by Oracle).
Oracle In-place documentation.
Inplace upgrade would require all instances to be shutdown.
srvctl stop home -o $ORACLE_HOME -s status -n `hostname -s` # run on all nodes
Make a backup of following files and folders in the existing Oracle home (11.2.0.1 in this case)
ORACLE_HOME/dbs
ORACLE_HOME/network/admin
ORACLE_HOME/owb/bin/admin
ORACLE_HOME/hostname_dbname
ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_hostname_dbname
Following shell command can speed things up
cd $ORACLE_HOME
tar -cvzf 11.2.tgz ./dbs ./network/admin ./owb/bin/admin ./`hostname`_$ORACLE_SID ./oc4j/j2ee/OC4J_DBConsole_`hostname`_$ORACLE_SID
To install the new software inplace the current oracle home must be detached from the inventory.
cat inventory.xml
...
<HOME NAME="OraDb11g_home1" LOC="/opt/app/oracle/product/11.2.0/db_1" TYPE="O" IDX="2">
<NODE_LIST>
<NODE NAME="rac4"/>
<NODE NAME="rac5"/>
</NODE_LIST>
</HOME>
...
/opt/app/oracle/product/11.2.0/db_1/oui/bin/runInstaller -detachHome ORACLE_HOME="/opt/app/oracle/product/11.2.0/db_1"
Starting Oracle Universal Installer...
Checking swap space: must be greater than 500 MB. Actual 3912 MB Passed
The inventory pointer is located at /etc/oraInst.loc
The inventory is located at /opt/app/oraInventory
'DetachHome' was successful.
If there's space move the existing Oracle home to a temporary location. If not remove it and create an empty directory for the new software.
Run installer from the new Oracle software directory and select software only option.
Specify the same location as the installation path
SCAN IP now must be resolved through DNS. (This could be ignored and continue)
Once the installation is completed copy back the files that were backed up earlier.
Run DBUA from the newly installed Oracle home.
After upgrade
To uninstall old GI
# chmod -R 755 /opt/app/11.2.0/grid
# chown -R oracle /opt/app/11.2.0/grid
# chown oracle /opt/app/11.2.0 (change it back to root after uninstall if not old GI home directory will not be removed)
Use the standalone deinstall tool to remove the old GI home
./deinstall -home /opt/app/11.2.0/grid -local
Location of logs /opt/app/oraInventory/logs/
############ ORACLE DEINSTALL & DECONFIG TOOL START ############
######################### CHECK OPERATION START #########################
## [START] Install check configuration ##
Checking for existence of the Oracle home location /opt/app/11.2.0/grid
Oracle Home type selected for deinstall is: Oracle Grid Infrastructure for a Cluster
Oracle Base selected for deinstall is: /opt/app/oracle
Checking for existence of central inventory location /opt/app/oraInventory
Checking for existence of the Oracle Grid Infrastructure home /opt/app/11.2.0/grid3
The following nodes are part of this cluster: rac4,rac5
Checking for sufficient temp space availability on node(s) : 'rac4,rac5'
## [END] Install check configuration ##
Traces log file: /opt/app/oraInventory/logs//crsdc.log
Network Configuration check config START
Network de-configuration trace file location: /opt/app/oraInventory/logs/netdc_check2012-02-17_06-14-02-PM.log
Network Configuration check config END
Asm Check Configuration START
ASM de-configuration trace file location: /opt/app/oraInventory/logs/asmcadc_check2012-02-17_06-14-03-PM.log
######################### CHECK OPERATION END #########################
####################### CHECK OPERATION SUMMARY #######################
Oracle Grid Infrastructure Home is: /opt/app/11.2.0/grid3
The cluster node(s) on which the Oracle home deinstallation will be performed are:rac4,rac5
Since -local option has been specified, the Oracle home will be deinstalled only on the local node, 'rac4', and the global configuration will be removed.
Oracle Home selected for deinstall is: /opt/app/11.2.0/grid
Inventory Location where the Oracle home registered is: /opt/app/oraInventory
The home being deconfigured is NOT a configured Grid Infrastructure home (/opt/app/11.2.0/grid3)
Option -local will not modify any ASM configuration.
Do you want to continue (y - yes, n - no)? [n]: Y
A log of this session will be written to: '/opt/app/oraInventory/logs/deinstall_deconfig2012-02-17_06-13-57-PM.out'
Any error messages from this session will be written to: '/opt/app/oraInventory/logs/deinstall_deconfig2012-02-17_06-13-57-PM.err'
######################## CLEAN OPERATION START ########################
ASM de-configuration trace file location: /opt/app/oraInventory/logs/asmcadc_clean2012-02-17_06-14-29-PM.log
ASM Clean Configuration END
Network Configuration clean config START
Network de-configuration trace file location: /opt/app/oraInventory/logs/netdc_clean2012-02-17_06-14-29-PM.log
De-configuring Naming Methods configuration file...
Naming Methods configuration file de-configured successfully.
De-configuring backup files...
Backup files de-configured successfully.
The network configuration has been cleaned up successfully.
Network Configuration clean config END
Setting the force flag to false
Setting the force flag to cleanup the Oracle Base
Oracle Universal Installer clean START
Detach Oracle home '/opt/app/11.2.0/grid' from the central inventory on the local node : Done
The Oracle Base directory '/opt/app/oracle' will not be removed on local node. The directory is in use by Oracle Home '/opt/app/11.2.0/grid3'.
Oracle Universal Installer cleanup was successful.
Oracle Universal Installer clean END
## [START] Oracle install clean ##
Clean install operation removing temporary directory '/tmp/deinstall2012-02-17_06-13-56PM' on node 'rac4'
## [END] Oracle install clean ##
######################### CLEAN OPERATION END #########################
####################### CLEAN OPERATION SUMMARY #######################
The home being deconfigured is NOT a configured Grid Infrastructure home (/opt/app/11.2.0/grid3)
Successfully detached Oracle home '/opt/app/11.2.0/grid' from the central inventory on the local node.
Failed to delete directory '/opt/app/11.2.0/grid' on the local node.
Oracle Universal Installer cleanup was successful.
Oracle deinstall tool successfully cleaned up temporary directories.
#######################################################################
############# ORACLE DEINSTALL & DECONFIG TOOL END #############
Useful metalink notes
Oracle Grid Infrastructure 11.2.0.2 Installation or Upgrade may fail due to Multicasting Requirement
[ID 1212703.1]
Pre-requsite for 11.2.0.1 to 11.2.0.2 ASM Rolling Upgrade
[ID 1274629.1]
11.2.0.1 to 11.2.0.2 ASM Rolling Upgrade
[ID 1274629.1]
Things to Consider Before Upgrading to 11.2.0.3 Grid Infrastructure/ASM
[ID 1363369.1]
Oracle Clusterware (CRS or GI) Rolling Upgrades
[ID 338706.1]
More metalink notes