Below are some information related to data guard broker and upgrades from data guard admin guide.
Prior to Release 11.2, the configuration file was restricted to reside only on disks having the same sector size (physical block size) as that upon which the file was initially created. This was not a problem because there was typically a single sector size in use within a given broker configuration. In anticipation of having mixed sector sizes somewhere within a given broker configuration, the 11.2 broker configuration file is now completely insensitive to the underlying sector size, so long as the sector size is 4KB or less.
The DGMGRL command-line interface must also be upgraded to release 11.2 in order to manage and monitor a broker configuration running Oracle Data Guard release 11.2. DGMGRL release 11.2 cannot be used to manage Data Guard releases 10.n or 11.1.
The first time the release 11.2 broker starts, it will detect the existence of the release 10.n and 11.1 broker configuration files and automatically upgrade them to include any new properties that were introduced in release 11.2 (for example, the fast-start failover properties). This automatic conversion is transparent, permanent, and occurs only once.
Mount the physical standby database(s). The standby database(s) should not be opened until the primary database upgrade is completed. If Active Data Guard was being used prior to the upgrade, then reenable it after upgrading.
Many things could be done in parallel to save time. For example upgrade of grid infrastructure could be done parallel at standby site as well as primary site, also the installation of Oracle database software could also be done in parallel. But in this case first the standby site software was upgraded and then primary site software and database was upgraded. This post list the standby site upgrade and part 2 will list the primary site upgrade.
Both primary site's standby site's grid infrastructure (GI) requires patch 12539000. This will be flagged when cluster verification tool is run.
Checking for Oracle patch "12539000" in home "/opt/app/11.2.0/grid". Node Name Applied Required Comment ------------ ------------------------ ------------------------ ---------- rac5 missing 12539000 failed rac4 missing 12539000 failed Result: Check for Oracle patch "12539000" in home "/opt/app/11.2.0/grid" failedPatch's readme.txt is still no good (read the earlier post's patch apply). Use opatch auto to apply patch on GI and Oracle Home.
Create directories on all nodes and set permission as oracle:oinstall
# mkdir -p /opt/app/11.2.0/grid3 # chown oracle:oinstall /opt/app/11.2.0/grid3Check the pre upgrade configuration setup.
./runcluvfy.sh stage -pre crsinst -upgrade -n rac4b,rac5b -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 "rac5b" Destination Node Reachable? ------------------------------------ ------------------------ rac4b yes rac5b yes Result: Node reachability check passed from node "rac5b" Checking user equivalence... Check: User equivalence for user "oracle" Node Name Status ------------------------------------ ------------------------ rac4b passed rac5b 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 ------------------------------------ ------------------------ rac4b passed rac5b passed Verification of the hosts config file successful Interface information for node "rac4b" Name IP Address Subnet Gateway Def. Gateway HW Address MTU ------ --------------- --------------- --------------- --------------- ----------------- ------ eth0 192.168.0.94 192.168.0.0 0.0.0.0 192.168.0.100 08:00:27:C6:3C:75 1500 eth0 192.168.0.98 192.168.0.0 0.0.0.0 192.168.0.100 08:00:27:C6:3C:75 1500 eth1 192.168.0.96 192.168.0.0 0.0.0.0 192.168.0.100 08:00:27:23:78:BB 1500 eth1 169.254.206.202 169.254.0.0 0.0.0.0 192.168.0.100 08:00:27:23:78:BB 1500 Interface information for node "rac5b" Name IP Address Subnet Gateway Def. Gateway HW Address MTU ------ --------------- --------------- --------------- --------------- ----------------- ------ eth0 192.168.0.93 192.168.0.0 0.0.0.0 192.168.0.100 08:00:27:84:50:F5 1500 eth0 192.168.0.97 192.168.0.0 0.0.0.0 192.168.0.100 08:00:27:84:50:F5 1500 eth0 192.168.0.92 192.168.0.0 0.0.0.0 192.168.0.100 08:00:27:84:50:F5 1500 eth1 192.168.0.95 192.168.0.0 0.0.0.0 192.168.0.100 08:00:27:38:44:B3 1500 eth1 169.254.64.99 169.254.0.0 0.0.0.0 192.168.0.100 08:00:27:38:44:B3 1500 Check: Node connectivity for interface "eth0" Source Destination Connected? ------------------------------ ------------------------------ ---------------- rac4b[192.168.0.94] rac4b[192.168.0.98] yes rac4b[192.168.0.94] rac4b[192.168.0.96] yes rac4b[192.168.0.94] rac5b[192.168.0.93] yes rac4b[192.168.0.94] rac5b[192.168.0.97] yes rac4b[192.168.0.94] rac5b[192.168.0.92] yes rac4b[192.168.0.94] rac5b[192.168.0.95] yes rac4b[192.168.0.98] rac4b[192.168.0.96] yes rac4b[192.168.0.98] rac5b[192.168.0.93] yes rac4b[192.168.0.98] rac5b[192.168.0.97] yes rac4b[192.168.0.98] rac5b[192.168.0.92] yes rac4b[192.168.0.98] rac5b[192.168.0.95] yes rac4b[192.168.0.96] rac5b[192.168.0.93] yes rac4b[192.168.0.96] rac5b[192.168.0.97] yes rac4b[192.168.0.96] rac5b[192.168.0.92] yes rac4b[192.168.0.96] rac5b[192.168.0.95] yes rac5b[192.168.0.93] rac5b[192.168.0.97] yes rac5b[192.168.0.93] rac5b[192.168.0.92] yes rac5b[192.168.0.93] rac5b[192.168.0.95] yes rac5b[192.168.0.97] rac5b[192.168.0.92] yes rac5b[192.168.0.97] rac5b[192.168.0.95] yes rac5b[192.168.0.92] rac5b[192.168.0.95] yes Result: Node connectivity passed for interface "eth0" Check: TCP connectivity of subnet "192.168.0.0" Source Destination Connected? ------------------------------ ------------------------------ ---------------- rac5b:192.168.0.93 rac4b:192.168.0.94 passed rac5b:192.168.0.93 rac4b:192.168.0.98 passed rac5b:192.168.0.93 rac4b:192.168.0.96 passed rac5b:192.168.0.93 rac5b:192.168.0.97 passed rac5b:192.168.0.93 rac5b:192.168.0.92 passed rac5b:192.168.0.93 rac5b:192.168.0.95 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 ------------------------------------ ------------------------ rac4b passed rac5b passed Result: Check for ASMLib configuration passed. Check: Total memory Node Name Available Required Status ------------ ------------------------ ------------------------ ---------- rac4b 1.9641GB (2059516.0KB) 1.5GB (1572864.0KB) passed rac5b 1.9641GB (2059516.0KB) 1.5GB (1572864.0KB) passed Result: Total memory check passed Check: Available memory Node Name Available Required Status ------------ ------------------------ ------------------------ ---------- rac4b 1.0329GB (1083124.0KB) 50MB (51200.0KB) passed rac5b 968.2383MB (991476.0KB) 50MB (51200.0KB) passed Result: Available memory check passed Check: Swap space Node Name Available Required Status ------------ ------------------------ ------------------------ ---------- rac4b 3.9987GB (4192956.0KB) 2.9462GB (3089274.0KB) passed rac5b 3.9987GB (4192956.0KB) 2.9462GB (3089274.0KB) passed Result: Swap space check passed Check: Free disk space for "rac4b:/opt/app/11.2.0/grid3,rac4b:/tmp" Path Node Name Mount point Available Required Status ---------------- ------------ ------------ ------------ ------------ ------------ /opt/app/11.2.0/grid3 rac4b / 19.377GB 7.5GB passed /tmp rac4b / 19.377GB 7.5GB passed Result: Free disk space check passed for "rac4b:/opt/app/11.2.0/grid3,rac4b:/tmp" Check: Free disk space for "rac5b:/opt/app/11.2.0/grid3,rac5b:/tmp" Path Node Name Mount point Available Required Status ---------------- ------------ ------------ ------------ ------------ ------------ /opt/app/11.2.0/grid3 rac5b / 18.296GB 7.5GB passed /tmp rac5b / 18.296GB 7.5GB passed Result: Free disk space check passed for "rac5b:/opt/app/11.2.0/grid3,rac5b:/tmp" Check: User existence for "oracle" Node Name Status Comment ------------ ------------------------ ------------------------ rac4b passed exists(500) rac5b 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 ------------ ------------------------ ------------------------ rac4b passed exists rac5b 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 ---------------- ------------ ------------ ------------ ------------ ------------ rac4b yes yes yes yes passed rac5b 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 ------------ ------------------------ ------------------------ ---------- rac4b 3 3,5 passed rac5b 3 3,5 passed Result: Run level check passed Check: Hard limits for "maximum open file descriptors" Node Name Type Available Required Status ---------------- ------------ ------------ ------------ ---------------- rac4b hard 65536 65536 passed rac5b 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 ---------------- ------------ ------------ ------------ ---------------- rac4b soft 1024 1024 passed rac5b 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 ---------------- ------------ ------------ ------------ ---------------- rac4b hard 16384 16384 passed rac5b 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 ---------------- ------------ ------------ ------------ ---------------- rac4b soft 16383 2047 passed rac5b soft 16383 2047 passed Result: Soft limits check passed for "maximum user processes" Checking for Oracle patch "12539000" in home "/opt/app/11.2.0/grid". Node Name Applied Required Comment ------------ ------------------------ ------------------------ ---------- rac4b 12539000 12539000 passed rac5b 12539000 12539000 passed Result: Check for Oracle patch "12539000" 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 ------------ ------------------------ ------------------------ ---------- rac4b x86_64 x86_64 passed rac5b x86_64 x86_64 passed Result: System architecture check passed Check: Kernel version Node Name Available Required Status ------------ ------------------------ ------------------------ ---------- rac4b 2.6.18-194.el5 2.6.18 passed rac5b 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 ---------------- ------------ ------------ ------------ ------------ ------------ rac4b 3010 3010 250 passed rac5b 3010 3010 250 passed Result: Kernel parameter check passed for "semmsl" Check: Kernel parameter for "semmns" Node Name Current Configured Required Status Comment ---------------- ------------ ------------ ------------ ------------ ------------ rac4b 385280 385280 32000 passed rac5b 385280 385280 32000 passed Result: Kernel parameter check passed for "semmns" Check: Kernel parameter for "semopm" Node Name Current Configured Required Status Comment ---------------- ------------ ------------ ------------ ------------ ------------ rac4b 3010 3010 100 passed rac5b 3010 3010 100 passed Result: Kernel parameter check passed for "semopm" Check: Kernel parameter for "semmni" Node Name Current Configured Required Status Comment ---------------- ------------ ------------ ------------ ------------ ------------ rac4b 128 128 128 passed rac5b 128 128 128 passed Result: Kernel parameter check passed for "semmni" Check: Kernel parameter for "shmmax" Node Name Current Configured Required Status Comment ---------------- ------------ ------------ ------------ ------------ ------------ rac4b 68719476736 68719476736 1054472192 passed rac5b 68719476736 68719476736 1054472192 passed Result: Kernel parameter check passed for "shmmax" Check: Kernel parameter for "shmmni" Node Name Current Configured Required Status Comment ---------------- ------------ ------------ ------------ ------------ ------------ rac4b 4096 4096 4096 passed rac5b 4096 4096 4096 passed Result: Kernel parameter check passed for "shmmni" Check: Kernel parameter for "shmall" Node Name Current Configured Required Status Comment ---------------- ------------ ------------ ------------ ------------ ------------ rac4b 4294967296 4294967296 2097152 passed rac5b 4294967296 4294967296 2097152 passed Result: Kernel parameter check passed for "shmall" Check: Kernel parameter for "file-max" Node Name Current Configured Required Status Comment ---------------- ------------ ------------ ------------ ------------ ------------ rac4b 6815744 6815744 6815744 passed rac5b 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 ---------------- ------------ ------------ ------------ ------------ ------------ rac4b between 9000.0 & 65500.0 between 9000.0 & 65500.0 between 9000.0 & 65500.0 passed rac5b 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 ---------------- ------------ ------------ ------------ ------------ ------------ rac4b 262144 262144 262144 passed rac5b 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 ---------------- ------------ ------------ ------------ ------------ ------------ rac4b 4194304 4194304 4194304 passed rac5b 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 ---------------- ------------ ------------ ------------ ------------ ------------ rac4b 262144 262144 262144 passed rac5b 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 ---------------- ------------ ------------ ------------ ------------ ------------ rac4b 1048576 1048576 1048576 passed rac5b 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 ---------------- ------------ ------------ ------------ ------------ ------------ rac4b 1048576 1048576 1048576 passed rac5b 1048576 1048576 1048576 passed Result: Kernel parameter check passed for "aio-max-nr" Check: Package existence for "make" Node Name Available Required Status ------------ ------------------------ ------------------------ ---------- rac4b make-3.81-3.el5 make-3.81 passed rac5b 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 ------------ ------------------------ ------------------------ ---------- rac4b binutils-2.17.50.0.6-14.el5 binutils-2.17.50.0.6 passed rac5b 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 ------------ ------------------------ ------------------------ ---------- rac4b gcc(x86_64)-4.1.2-48.el5 gcc(x86_64)-4.1.2 passed rac5b 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 ------------ ------------------------ ------------------------ ---------- rac4b libaio(x86_64)-0.3.106-5 libaio(x86_64)-0.3.106 passed rac5b 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 ------------ ------------------------ ------------------------ ---------- rac4b glibc(x86_64)-2.5-49 glibc(x86_64)-2.5-24 passed rac5b 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 ------------ ------------------------ ------------------------ ---------- rac4b compat-libstdc++-33(x86_64)-3.2.3-61 compat-libstdc++-33(x86_64)-3.2.3 passed rac5b 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 ------------ ------------------------ ------------------------ ---------- rac4b elfutils-libelf(x86_64)-0.137-3.el5 elfutils-libelf(x86_64)-0.125 passed rac5b 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 ------------ ------------------------ ------------------------ ---------- rac4b elfutils-libelf-devel-0.137-3.el5 elfutils-libelf-devel-0.125 passed rac5b 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 ------------ ------------------------ ------------------------ ---------- rac4b glibc-common-2.5-49 glibc-common-2.5 passed rac5b 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 ------------ ------------------------ ------------------------ ---------- rac4b glibc-devel(x86_64)-2.5-49 glibc-devel(x86_64)-2.5 passed rac5b 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 ------------ ------------------------ ------------------------ ---------- rac4b glibc-headers-2.5-49 glibc-headers-2.5 passed rac5b 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 ------------ ------------------------ ------------------------ ---------- rac4b gcc-c++(x86_64)-4.1.2-48.el5 gcc-c++(x86_64)-4.1.2 passed rac5b 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 ------------ ------------------------ ------------------------ ---------- rac4b libaio-devel(x86_64)-0.3.106-5 libaio-devel(x86_64)-0.3.106 passed rac5b 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 ------------ ------------------------ ------------------------ ---------- rac4b libgcc(x86_64)-4.1.2-48.el5 libgcc(x86_64)-4.1.2 passed rac5b 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 ------------ ------------------------ ------------------------ ---------- rac4b libstdc++(x86_64)-4.1.2-48.el5 libstdc++(x86_64)-4.1.2 passed rac5b 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 ------------ ------------------------ ------------------------ ---------- rac4b libstdc++-devel(x86_64)-4.1.2-48.el5 libstdc++-devel(x86_64)-4.1.2 passed rac5b 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 ------------ ------------------------ ------------------------ ---------- rac4b sysstat-7.0.2-3.el5 sysstat-7.0.2 passed rac5b 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 ------------ ------------------------ ------------------------ ---------- rac4b ksh-20100202-1.el5 ksh-20060214 passed rac5b 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 ------------------------------------ ------------------------ rac4b passed rac5b 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 ------------ ------------------------ ------------------------ rac4b passed does not exist rac5b 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 ------------ ------------------------ ------------------------ ---------- rac4b 0022 0022 passed rac5b 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 "rac4b" All nodes of the cluster have same value for 'search' Checking DNS response time for an unreachable node Node Name Status ------------------------------------ ------------------------ rac4b passed rac5b 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.Current version of clusterware and database configuration
$ crsctl query crs activeversion Oracle Clusterware active version on the cluster is [11.2.0.2.0] $ crsctl query crs softwareversion Oracle Clusterware version on node [rac5b] is [11.2.0.2.0] $ srvctl config database -d rac11g2s Database unique name: rac11g2s Database name: rac11g2 Oracle home: /opt/app/oracle/product/11.2.0/db_1 Oracle user: oracle Spfile: +DATA/rac11g2s/spfilerac11g2s.ora Domain: domain.net Start options: mount Stop options: immediate Database role: PHYSICAL_STANDBY Management policy: AUTOMATIC Server pools: rac11g2s Database instances: rac11g2s1,rac11g2s2 Disk Groups: DATA,FLASH Mount point paths: Services: Type: RAC Database is administrator managedExecute runInstaller and begin the GI upgrade. Select GI and ASM upgrade option.
All nodes are selected by default.
ASM related OS admin groups.
Specify the new location for out of place upgrade.
Summary
When prompted execute the rootupgrade.sh on each node.
Before running the rootupgrade.sh find out the apply instance with
DGMGRL> show database rac11g2s Database - rac11g2s Role: PHYSICAL STANDBY Intended State: APPLY-ON Transport Lag: 0 seconds Apply Lag: 0 seconds Real Time Query: OFF Instance(s): rac11g2s1 rac11g2s2 (apply instance) Database Status: SUCCESSData guard broker is capable of detecting when the apply instance goes down and start the apply process in another surviving instance. For example if rac11g2s2 is the apply instance and if it goes down data guard broker would go through the following process
DGMGRL> show database rac11g2s Database - rac11g2s Role: PHYSICAL STANDBY Intended State: APPLY-ON Transport Lag: 0 seconds Apply Lag: 0 seconds Real Time Query: OFF Instance(s): rac11g2s1 rac11g2s2 (apply instance) Database Status: SUCCESS DGMGRL> show database rac11g2s Database - rac11g2s Role: PHYSICAL STANDBY Intended State: APPLY-ON Transport Lag: 0 seconds Apply Lag: (unknown) Real Time Query: OFF Instance(s): rac11g2s1 rac11g2s2 (apply instance) Database Error(s): ORA-16766: Redo Apply is stopped Database Status: ERROR DGMGRL> show database rac11g2s Database - rac11g2s Role: PHYSICAL STANDBY Intended State: APPLY-ON Transport Lag: 0 seconds Apply Lag: (unknown) Real Time Query: OFF Instance(s): rac11g2s1 Warning: ORA-16813: log apply service not running on apply instance rac11g2s2 recorded by the broker rac11g2s2 (apply instance) Database Status: WARNING DGMGRL> show database rac11g2s Database - rac11g2s Role: PHYSICAL STANDBY Intended State: APPLY-ON Transport Lag: 0 seconds Apply Lag: 41 seconds Real Time Query: OFF Instance(s): rac11g2s1 (apply instance) rac11g2s2 Database Status: SUCCESSEven though this happens in few second it's better to manually failover the apply instance to an instance before running the rootupgrade.sh with (assuming rac11g2s2 is brought down)
DGMGRL> edit database rac11g2s set state ='APPLY-ON' with apply instance = 'rac11g2s1';Once the apply instance is failed over to surviving node run rootupgrade.sh
# /opt/app/11.2.0/grid3/rootupgrade.sh Performing root user operation for Oracle 11g The following environment variables are set as: ORACLE_OWNER= oracle ORACLE_HOME= /opt/app/11.2.0/grid3 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. 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 'rac4b' CRS-2673: Attempting to stop 'ora.crsd' on 'rac4b' CRS-2790: Starting shutdown of Cluster Ready Services-managed resources on 'rac4b' CRS-2673: Attempting to stop 'ora.LISTENER.lsnr' on 'rac4b' CRS-2673: Attempting to stop 'ora.CLUSTERDG.dg' on 'rac4b' CRS-2673: Attempting to stop 'ora.registry.acfs' on 'rac4b' CRS-2673: Attempting to stop 'ora.rac11g2s.db' on 'rac4b' CRS-2677: Stop of 'ora.LISTENER.lsnr' on 'rac4b' succeeded CRS-2673: Attempting to stop 'ora.rac4b.vip' on 'rac4b' CRS-2677: Stop of 'ora.registry.acfs' on 'rac4b' succeeded CRS-2677: Stop of 'ora.rac4b.vip' on 'rac4b' succeeded CRS-2672: Attempting to start 'ora.rac4b.vip' on 'rac5b' CRS-2677: Stop of 'ora.rac11g2s.db' on 'rac4b' succeeded CRS-2673: Attempting to stop 'ora.DATA.dg' on 'rac4b' CRS-2673: Attempting to stop 'ora.FLASH.dg' on 'rac4b' CRS-2676: Start of 'ora.rac4b.vip' on 'rac5b' succeeded CRS-2677: Stop of 'ora.DATA.dg' on 'rac4b' succeeded CRS-2677: Stop of 'ora.FLASH.dg' on 'rac4b' succeeded CRS-2677: Stop of 'ora.CLUSTERDG.dg' on 'rac4b' succeeded CRS-2673: Attempting to stop 'ora.asm' on 'rac4b' CRS-2677: Stop of 'ora.asm' on 'rac4b' succeeded CRS-2673: Attempting to stop 'ora.ons' on 'rac4b' CRS-2677: Stop of 'ora.ons' on 'rac4b' succeeded CRS-2673: Attempting to stop 'ora.net1.network' on 'rac4b' CRS-2677: Stop of 'ora.net1.network' on 'rac4b' succeeded CRS-2792: Shutdown of Cluster Ready Services-managed resources on 'rac4b' has completed CRS-2677: Stop of 'ora.crsd' on 'rac4b' succeeded CRS-2673: Attempting to stop 'ora.ctssd' on 'rac4b' CRS-2673: Attempting to stop 'ora.evmd' on 'rac4b' CRS-2673: Attempting to stop 'ora.asm' on 'rac4b' CRS-2673: Attempting to stop 'ora.mdnsd' on 'rac4b' CRS-2673: Attempting to stop 'ora.drivers.acfs' on 'rac4b' CRS-2677: Stop of 'ora.evmd' on 'rac4b' succeeded CRS-2677: Stop of 'ora.mdnsd' on 'rac4b' succeeded CRS-2677: Stop of 'ora.asm' on 'rac4b' succeeded CRS-2673: Attempting to stop 'ora.cluster_interconnect.haip' on 'rac4b' CRS-2677: Stop of 'ora.cluster_interconnect.haip' on 'rac4b' succeeded CRS-2677: Stop of 'ora.ctssd' on 'rac4b' succeeded CRS-2673: Attempting to stop 'ora.cssd' on 'rac4b' CRS-2677: Stop of 'ora.drivers.acfs' on 'rac4b' succeeded CRS-2677: Stop of 'ora.cssd' on 'rac4b' succeeded CRS-2673: Attempting to stop 'ora.diskmon' on 'rac4b' CRS-2673: Attempting to stop 'ora.crf' on 'rac4b' CRS-2677: Stop of 'ora.diskmon' on 'rac4b' succeeded CRS-2677: Stop of 'ora.crf' on 'rac4b' succeeded CRS-2673: Attempting to stop 'ora.gipcd' on 'rac4b' CRS-2677: Stop of 'ora.gipcd' on 'rac4b' succeeded CRS-2673: Attempting to stop 'ora.gpnpd' on 'rac4b' CRS-2677: Stop of 'ora.gpnpd' on 'rac4b' succeeded CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'rac4b' 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. Configure Oracle Grid Infrastructure for a Cluster ... succeededDuring the upgrade the listener.ora is copied to the new GI home so no need copy it manually.
Failover the apply instance again to surviving node and run rootupgrade.sh on the second node.
# /opt/app/11.2.0/grid3/rootupgrade.sh Performing root user operation for Oracle 11g The following environment variables are set as: ORACLE_OWNER= oracle ORACLE_HOME= /opt/app/11.2.0/grid3 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. 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 'rac5b' CRS-2673: Attempting to stop 'ora.crsd' on 'rac5b' CRS-2790: Starting shutdown of Cluster Ready Services-managed resources on 'rac5b' CRS-2673: Attempting to stop 'ora.LISTENER_SCAN1.lsnr' on 'rac5b' CRS-2673: Attempting to stop 'ora.LISTENER.lsnr' on 'rac5b' CRS-2673: Attempting to stop 'ora.CLUSTERDG.dg' on 'rac5b' CRS-2673: Attempting to stop 'ora.registry.acfs' on 'rac5b' CRS-2673: Attempting to stop 'ora.rac11g2s.db' on 'rac5b' CRS-2677: Stop of 'ora.LISTENER_SCAN1.lsnr' on 'rac5b' succeeded CRS-2673: Attempting to stop 'ora.scan1.vip' on 'rac5b' CRS-2677: Stop of 'ora.scan1.vip' on 'rac5b' succeeded CRS-2672: Attempting to start 'ora.scan1.vip' on 'rac4b' CRS-2677: Stop of 'ora.LISTENER.lsnr' on 'rac5b' succeeded CRS-2673: Attempting to stop 'ora.rac5b.vip' on 'rac5b' CRS-2677: Stop of 'ora.registry.acfs' on 'rac5b' succeeded CRS-2677: Stop of 'ora.rac5b.vip' on 'rac5b' succeeded CRS-2672: Attempting to start 'ora.rac5b.vip' on 'rac4b' CRS-2677: Stop of 'ora.rac11g2s.db' on 'rac5b' succeeded CRS-2673: Attempting to stop 'ora.DATA.dg' on 'rac5b' CRS-2673: Attempting to stop 'ora.FLASH.dg' on 'rac5b' CRS-2676: Start of 'ora.rac5b.vip' on 'rac4b' succeeded CRS-2676: Start of 'ora.scan1.vip' on 'rac4b' succeeded CRS-2672: Attempting to start 'ora.LISTENER_SCAN1.lsnr' on 'rac4b' CRS-2676: Start of 'ora.LISTENER_SCAN1.lsnr' on 'rac4b' succeeded CRS-2677: Stop of 'ora.DATA.dg' on 'rac5b' succeeded CRS-2677: Stop of 'ora.FLASH.dg' on 'rac5b' succeeded CRS-2677: Stop of 'ora.CLUSTERDG.dg' on 'rac5b' succeeded CRS-2673: Attempting to stop 'ora.asm' on 'rac5b' CRS-2677: Stop of 'ora.asm' on 'rac5b' succeeded CRS-2673: Attempting to stop 'ora.ons' on 'rac5b' CRS-2677: Stop of 'ora.ons' on 'rac5b' succeeded CRS-2673: Attempting to stop 'ora.net1.network' on 'rac5b' CRS-2677: Stop of 'ora.net1.network' on 'rac5b' succeeded CRS-2792: Shutdown of Cluster Ready Services-managed resources on 'rac5b' has completed CRS-2677: Stop of 'ora.crsd' on 'rac5b' succeeded CRS-2673: Attempting to stop 'ora.mdnsd' on 'rac5b' CRS-2673: Attempting to stop 'ora.crf' on 'rac5b' CRS-2673: Attempting to stop 'ora.ctssd' on 'rac5b' CRS-2673: Attempting to stop 'ora.evmd' on 'rac5b' CRS-2673: Attempting to stop 'ora.asm' on 'rac5b' CRS-2673: Attempting to stop 'ora.drivers.acfs' on 'rac5b' CRS-2677: Stop of 'ora.crf' on 'rac5b' succeeded CRS-2677: Stop of 'ora.evmd' on 'rac5b' succeeded CRS-2677: Stop of 'ora.ctssd' on 'rac5b' succeeded CRS-2677: Stop of 'ora.mdnsd' on 'rac5b' succeeded CRS-2677: Stop of 'ora.drivers.acfs' on 'rac5b' succeeded CRS-2677: Stop of 'ora.asm' on 'rac5b' succeeded CRS-2673: Attempting to stop 'ora.cluster_interconnect.haip' on 'rac5b' CRS-2677: Stop of 'ora.cluster_interconnect.haip' on 'rac5b' succeeded CRS-2673: Attempting to stop 'ora.cssd' on 'rac5b' CRS-2677: Stop of 'ora.cssd' on 'rac5b' succeeded CRS-2673: Attempting to stop 'ora.gipcd' on 'rac5b' CRS-2673: Attempting to stop 'ora.diskmon' on 'rac5b' CRS-2677: Stop of 'ora.gipcd' on 'rac5b' succeeded CRS-2673: Attempting to stop 'ora.gpnpd' on 'rac5b' CRS-2677: Stop of 'ora.gpnpd' on 'rac5b' succeeded CRS-2677: Stop of 'ora.diskmon' on 'rac5b' succeeded CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'rac5b' 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. The CSS was successfully upgraded. 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. PRKO-2116 : OC4J is already enabled Configure Oracle Grid Infrastructure for a Cluster ... succeededAt the end of the rootupgrade.sh continue rest of the configuration by clicking the OK button on configuration script window.
Verify clusterware version is upgrade with
$ 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 [rac4b] is [11.2.0.3.0]At this strage primary is running on 11.2.0.2 GI and standby is running on 11.2.0.3.
Remove the old GI home with standalone deinstall tool. Set ownership on old home to oracle:oinstall and execute (not all lines shown)
./deinstall -home /opt/app/11.2.0/grid ... 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:rac4b,rac5b 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) ASM was not detected in the Oracle Home 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-03-30_04-55-22-PM.out' Any error messages from this session will be written to: '/opt/app/oraInventory/logs/deinstall_deconfig2012-03-30_04-55-22-PM.err'Manually cleanup any directories not removed.
Next step is to upgrade the Oracle database software.
Create new directory for the out of place upgrade
mkdir -p /opt/app/oracle/product/11.2.0/db_2Verify pre upgrade configuration for DB home with
cluvfy stage -pre dbinst -upgrade -src_dbhome /opt/app/oracle/product/11.2.0/db_1 -dbname rac11g2s -dest_dbhome /opt/app/oracle/product/11.2.0/db_2 -dest_version 11.2.0.3.0 -fixup -fixupdir /home/oracle/fixupscript -verboseExecute the runInstaller for database software.
Select install database software only option
Select all nodes
Specify the new location
Install summary
Execute root.sh and conclude software install.
What remains is to configure the standby database to run out of new (11.2.0.3) oracle home.
Copy the initialization , password and tnsnames.ora files into new oracle home
cp initrac11g2s1.ora orapwrac11g2s1 /opt/app/oracle/product/11.2.0/db_2/dbs cp tnsnames.ora /opt/app/oracle/product/11.2.0/db_2/network/admin/Disbale dg broker configuration and stop dg auto start
DGMGRL> disable configuration ; Disabled. SQL> ALTER SYSTEM SET DG_BROKER_START=FALSE scope=both sid='*'; System altered.Defer log shipping on primary
SQL> alter system set log_archive_dest_state_2='defer' scope=memory sid='*'; System altered.Stop the standby database running out of old (11.2.0.2) home and startup mount on new (11.2.0.3) home. If active data guard is used this will not be available from this point onwards until primary is upgraded.
Modify /etc/oratab and .bash_profile to point to new oracle home location.
Also edit the oracle home value set on listener.ora file in GI_HOME/network/admin used for static listener registration.
Shutdown and start the instance using the new Oracle home, manually one instance at a time.
SQL> startup mount ORACLE instance started. Total System Global Area 630501376 bytes Fixed Size 2230992 bytes Variable Size 247465264 bytes Database Buffers 373293056 bytes Redo Buffers 7512064 bytes Database mounted.and verify instance is mounted from new home with alert.log entries
ORACLE_HOME = /opt/app/oracle/product/11.2.0/db_2 System name: Linux Using parameter settings in server-side pfile /opt/app/oracle/product/11.2.0/db_2/dbs/initrac11g2s1.oraIf all is fine modify the standby database cluster configuration. Trying to modify the existing cluster configuration with new GI Home or Oracle Home srvctl will fail with
$CRS_HOME/bin/srvctl config database -d rac11g2s PRCD-1027 : Failed to retrieve database rac11g2s PRCD-1229 : An attempt to access configuration of database rac11g2s was rejected because its version 11.2.0.2.0 differs from the program version 11.2.0.3.0. Instead run the program from /opt/app/oracle/product/11.2.0/db_1To resolve this issue shutdown all instances and use old oracle home's srvctl to remove the database configuration first
/opt/app/oracle/product/11.2.0/db_1/bin/srvctl remove instance -d rac11g2s -i rac11g2s1 /opt/app/oracle/product/11.2.0/db_1/bin/srvctl remove instance -d rac11g2s -i rac11g2s2 /opt/app/oracle/product/11.2.0/db_1/bin/srvctl remove database -d rac11g2s Remove the database rac11g2s? (y/[n]) yAdd the database back to cluster configuration using the new GI home
$CRS_HOME/bin/srvctl add database -d rac11g2s -o $ORACLE_HOME -m local -p "+DATA/rac11g2s/spfilerac11g2s.ora" -n rac11g2 -r physical_standby -s mount $CRS_HOME/bin/srvctl add instance -d rac11g2s -i rac11g2s1 -n rac4b $CRS_HOME/bin/srvctl add instance -d rac11g2s -i rac11g2s2 -n rac5bVerify the new database configuration
$CRS_HOME/bin/srvctl config database -d rac11g2s Database unique name: rac11g2s Database name: rac11g2 Oracle home: /opt/app/oracle/product/11.2.0/db_2 Oracle user: oracle Spfile: +DATA/rac11g2s/spfilerac11g2s.ora Domain: local Start options: mount Stop options: immediate Database role: PHYSICAL_STANDBY Management policy: AUTOMATIC Server pools: rac11g2s Database instances: rac11g2s1,rac11g2s2 Disk Groups: Mount point paths: Services: Type: RAC Database is administrator managedStart standby database and enable dg broker start (read 2017-09-15 update below)
srvctl start database -d rac11g2s SQL> ALTER SYSTEM SET DG_BROKER_START=true scope=both sid='*';Trying to enable dg broker on standby gave the following error
DGMGRL> enable configuration; ORA-16541: database is not enabledThis was resolved by enable the configuration on primary
DGMGRL> show configuration Configuration - rac11g2_dgb Protection Mode: MaxPerformance Databases: rac11g2 - Primary database rac11g2s - Physical standby database Fast-Start Failover: DISABLED Configuration Status: DISABLED DGMGRL> enable configuration; Enabled.Enable log shipping on primary
SQL> alter system set log_archive_dest_state_2='enable' scope=memory sid='*';This concludes the upgrade on standby site. At this stage standby is on 11.2.0.3 and primary is on 11.2.0.2 and standby will be continue to function as a pre-11g data guard (without active data guard).
Next is to upgrade the primary site.
Update on 2017-09-15
Keeping data guard broker enabled during upgrades seems to cause issue in certain upgrades, though in this case upgrade went through without any issue. As a result of these issues oracle documentation has been updated to clearly state to disable the data guard broker before any upgrade. Also it's better to keep redo shipping deferred until the primary is upgraded.