Wednesday, March 7, 2012

Upgrading from 11.1.0.7 to 11.2.0.3 with Transient Logical Standby

The KEEP IDENTITY clause introduced in Oracle 11g enables a logical standby to keep its DBID same as the primary. Using this feature a new upgrade strategy has been developed proposed by Oracle which uses a transient logical standby. This blog post shows the step to upgrading from 11.1.0.7 (with Jan 2012 PSU) to 11.2.0.3 for single instance (No ASM) databases that are in a physical standby configuration.

1. It is assume there is an existing physical standby data guard configuration and switchover between the database is working properly. Steps on how to created the data guard (11gR2 RAC Data guard) is not shown here.

2. 11gR2 database software upgrades could be done in-place as well as out of place (which is the recommended way). In this case out of place upgrade is used and to save time install the 11gR2 database software on the new location both on primary and standby database servers and apply the latest patches. Specially with Jan 2012 PSU this could lead to issues (step 11).

3. Copy the listener.ora and tnsnames.ora file from the existing 11gR1 Oracle Home to 11gR2 Oracle home and modify the Oracle Home value in listener.ora to point to 11gR2 home.

4. There are several constraints when using this method of upgrade. More available on the white papers and metalink notes mentioned at the end of the post. These are ...
1. Dataguard broker must be not be configured for the database. If DG Broker is setup then disable it. ALTER SYSTEM SET DG_BROKER_START=FALSE SCOPE=BOTH;

2. Protection mode must be either maximum performance or maximum availability.

3. Log archive destination to standby database must have the optional option.

4. Compatible parameter value must be same on both primary and standby before the upgrade.

5. Prepare to switchover clause cannot be used for the initial switchover.

6. Since this method uses logical standby , identify the unsupported data types. See if Extended Datatype Support (EDS) could be used which allows SQL Apply to replicate changes to tables that contain some data types not natively supported.
5. Enable flashback logging on both primary and standby databases. This requires database to be shutdown cleanly and then in mount mode. This could incur down time and if flash back is not enabled then to create the restore point database need to be shutdown and mounted in 11gR1. Once mounted enable flashback with
SQL> alter database flashback on;
6. Backup both primary DB and standby DB which would be used to recover if the upgrade fails.

7. The primary database is denoted with DBP and standby database with DBS. Data guard configuration is not using DG Broker and there are no stream replications running. If stream replication is used then stop capture process.

8. Both databases are running on maximum performance mode
SQL> SELECT PROTECTION_MODE FROM V$DATABASE;

PROTECTION_MODE
--------------------
MAXIMUM PERFORMANCE
Current log_archive_dest on primary database is
NAME                 TYPE        VALUE
-------------------- ----------- ------------------------------
log_archive_dest_1   string      service=DBSTNS LGWR ASYNC NOAFFIRM max_failure=10 max_connections=5
                                 reopen=180 valid_for=(online_logfiles,primary_role) db_unique_name=dbs
and on standby
SQL> show parameter log_archive_dest_1

NAME                  TYPE        VALUE
--------------------- ----------- ------------------------------
log_archive_dest_1    string      service=DBPTNS LGWR ASYNC NOAFFIRM max_failure=10 max_connections=5
                                  reopen=180 valid_for=(online_logfiles,primary_role) db_unique_name=dbp
Upgrade log_archive_dest on each database to include the OPTIONAL clause.On primary
alter system set log_archive_dest_1= 'service=DBSTNS LGWR ASYNC NOAFFIRM OPTIONAL max_failure=10 
             max_connections=5 reopen=180 valid_for=(online_logfiles,primary_role) db_unique_name=dbs' scope=both;
On standby
alter system set log_archive_dest_1= 'service=DBPTNS LGWR ASYNC NOAFFIRM OPTIONAL max_failure=10 
             max_connections=5 reopen=180 valid_for=(online_logfiles,primary_role) db_unique_name=dbp' scope=both;
9. Create a guarantee restore point on primary DB.
SQL> create restore point before_upgrade_1  guarantee flashback database;

Restore point created.
Optionally restore point could be created in standby DB as well allowing it to be flash backed in case of failures during upgrade.

10. Next step is the main step in the upgrade, that is converting the physical standby to logical standby with keep identity clause. Cancel log apply on standby
SQL> alter database recover managed standby database cancel;
Create the log miner dictionary in primary DB
SQL> EXECUTE DBMS_LOGSTDBY.BUILD;

PL/SQL procedure successfully completed.
Convert the physical standby to logical standby with by running the following on the standby DB
SQL> alter database recover to logical standby keep identity;

SQL> alter database open;

SQL> alter database start logical standby apply immediate;

SQL> execute dbms_logstdby.apply_set( 'log_auto_delete', 'false');

PL/SQL procedure successfully completed.
Check state and wait until state becomes idle
SQL> SELECT SESSION_ID, STATE FROM V$LOGSTDBY_STATE;

SESSION_ID STATE
---------- -------------------
         1 LOADING DICTIONARY

SQL> /

SESSION_ID STATE
---------- ------------------
         1 IDLE
11. To carry out the upgrade defer log shipping on primary
SQL> alter system set log_archive_dest_state_1='defer' scope=memory
On standby
SQL> ALTER DATABASE STOP LOGICAL STANDBY APPLY;
Create a restore point on standby to be used in case of upgrade failures
SQL> CREATE RESTORE POINT before_upgrade_standby_1 GUARANTEE FLASHBACK DATABASE;
12. Set the oracle home to new version (11gR2) and upgrade the logical standby (DBS). Set environment variables to 11gR2 home
export ORACLE_HOME=/opt/app/oracle/product/11.2.0/db_1
export PATH=$ORACLE_HOME/bin:$PATH
To confirm it's the 11gR2 binaries that are used
which sqlplus
/opt/app/oracle/product/11.2.0/db_1/bin/sqlplus
Stop the listener running out of 11gR1 home and start the listener on 11gR2.
Upgrade the logical standby db from 11.1. to 11.2 either using DBUA or manually with scripts. While upgrade is happening primary is open for use and there's no down time.
When running DBUA following warning may appear, make sure there's enough space for log archive location(s).

Although it is the standby that is upgrade DB Name will show the primary DB name. This is expected as in standby only db unique name is different between primary and standby.




13. Once the upgrade is finished enable log archive destination on primary DB
SQL> alter system set log_archive_dest_state_1='enable' scope=memory;
and start SQL apply on standby
SQL> ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;
14. This is only step where a down time happens ( not counting the downtime needed for enabling flashback logging and according to oracle this is less than 1 minute). Carry out a switchover by making the newly upgraded logical standby (DBS) the new primary.
On current primary (DBP)
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

SWITCHOVER_STATUS
--------------------
TO STANDBY

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO LOGICAL STANDBY;

Database altered.
On current standby (DBS)
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

SWITCHOVER_STATUS
--------------------
TO PRIMARY

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO LOGICAL PRIMARY;

Database altered.
15. At this point there's no disaster recovery as the old primary which is new standby(DBP) is running in a lower version (11.1). To enable disaster recovery this must be flash backed and converted to physical standby.
On new primary (DBS) defer the log archive destination
SQL> alter system set log_archive_dest_state_1='defer' scope=memory;
On new standby (old primary DBP)
SQL> shutdown immediate;
SQL> startup mount

SQL> FLASHBACK DATABASE TO RESTORE POINT before_upgrade_1;

Flashback complete.
16. Convert the new standby (DBP) to physical standby by mounting on the new oracle home (11gR2). Copy the listener.ora and tnsnames.ora files to new oracle home (if not done already) and start the listener from new home. Also copy the spfile and orapwd to new oracle home. Then run the convert command
shutdown immediate;
startup mount;
SQL> ALTER DATABASE CONVERT TO PHYSICAL STANDBY;

Database altered.
Above command will unmount the DB therefore mount it and start the redo apply.
shutdown immeidate;
startup mount;

SQL> RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;
Media recovery complete.
On the new primary (DBS) enable the log_archive_dest
SQL> alter system set log_archive_dest_state_1='enable' scope=memory;
when redo apply starts it will register a new incarnation on the new physical standby (DBP) from the primary database (DBS). Following could be seen from the standby db (DBP) alert log.
Wed Mar 07 13:13:53 2012
ALTER DATABASE RECOVER  MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT
Attempt to start background Managed Standby Recovery process (dbp)
Wed Mar 07 13:13:53 2012
MRP0 started with pid=31, OS id=13047
MRP0: Background Managed Standby Recovery process started (dbp)
 started logmerger process
Wed Mar 07 13:13:58 2012
Managed Standby Recovery starting Real Time Apply
MRP0: Background Media Recovery waiting for new incarnation during transient logical upgrade procedure
Errors in file /opt/app/oracle/diag/rdbms/dbp/dbp/trace/dbp_pr00_13049.trc:
ORA-19906: recovery target incarnation changed during recovery
Managed Standby Recovery not using Real Time Apply
Slave exiting with ORA-19906 exception
Errors in file /opt/app/oracle/diag/rdbms/dbp/dbp/trace/dbp_pr00_13049.trc:
ORA-19906: recovery target incarnation changed during recovery
Completed: ALTER DATABASE RECOVER  MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT
Recovery Slave PR00 previously exited with exception 19906
Wed Mar 07 13:14:09 2012
 started logmerger process
Wed Mar 07 13:14:09 2012
Managed Standby Recovery starting Real Time Apply
MRP0: Background Media Recovery waiting for new incarnation during transient logical upgrade procedure
Errors in file /opt/app/oracle/diag/rdbms/dbp/dbp/trace/dbp_pr00_13051.trc:
ORA-19906: recovery target incarnation changed during recovery
Managed Standby Recovery not using Real Time Apply
Slave exiting with ORA-19906 exception
Errors in file /opt/app/oracle/diag/rdbms/dbp/dbp/trace/dbp_pr00_13051.trc:
ORA-19906: recovery target incarnation changed during recovery
Recovery Slave PR00 previously exited with exception 19906
Wed Mar 07 13:14:12 2012
Using STANDBY_ARCHIVE_DEST parameter default value as USE_DB_RECOVERY_FILE_DEST
Wed Mar 07 13:14:13 2012
RFS[1]: Assigned to RFS process 13055
...
...
RFS[1]: New Archival REDO Branch(resetlogs_id): 777303881  Prior: 776883134
RFS[1]: Archival Activation ID: 0x6c441934 Current: 0x0
RFS[1]: Effect of primary database OPEN RESETLOGS
RFS[1]: Managed Standby Recovery process is active
RFS[1]: Incarnation entry added for Branch(resetlogs_id): 777303881 (dbp)
Wed Mar 07 13:14:19 2012
Setting recovery target incarnation to 2
Archived Log entry 78 added for thread 1 sequence 1 rlc 777303881 ID 0x6c441934 dest 1:
Wed Mar 07 13:14:19 2012
RFS[4]: Assigned to RFS process 13063
RFS[4]: Opened log for thread 1 sequence 3 dbid 1815985854 branch 777303881
Archived Log entry 79 added for thread 1 sequence 3 rlc 777303881 ID 0x6c441934 dest 1:
Wed Mar 07 13:14:20 2012
RFS[5]: Assigned to RFS process 13065
RFS[5]: Opened log for thread 1 sequence 4 dbid 1815985854 branch 777303881
Wed Mar 07 13:14:20 2012
RFS[6]: Assigned to RFS process 13067
RFS[6]: Opened log for thread 1 sequence 5 dbid 1815985854 branch 777303881
...
...
Clearing online redo logfile 1 complete
Clearing online redo logfile 2 /opt/app/oracle/oradata/DBP/onlinelog/o1_mf_2_7odd8b6c_.log
Clearing online log 2 of thread 1 sequence number 70
Clearing online redo logfile 2 complete
Clearing online redo logfile 3 /opt/app/oracle/oradata/DBP/onlinelog/o1_mf_3_7odd8bn4_.log
Clearing online log 3 of thread 1 sequence number 60
Clearing online redo logfile 3 complete
Media Recovery Log /opt/app/oracle/flash_recovery_area/DBP/archivelog/2012_03_07/o1_mf_1_61_7ogncljf_.arc
Media Recovery Log /opt/app/oracle/flash_recovery_area/DBP/archivelog/2012_03_07/o1_mf_1_62_7ogncndv_.arc
RFS[6]: Opened log for thread 1 sequence 7 dbid 1815985854 branch 777303881
Media Recovery Log /opt/app/oracle/flash_recovery_area/DBP/archivelog/2012_03_07/o1_mf_1_63_7ogncpqb_.arc
Media Recovery Log /opt/app/oracle/flash_recovery_area/DBP/archivelog/2012_03_07/o1_mf_1_1_7ogqs53q_.arc
Wed Mar 07 13:14:32 2012
Media Recovery Log /opt/app/oracle/flash_recovery_area/DBP/archivelog/2012_03_07/o1_mf_1_2_7ogqs6r2_.arc
Wed Mar 07 13:14:32 2012
Archived Log entry 83 added for thread 1 sequence 6 rlc 777303881 ID 0x6c441934 dest 1:
17. Do a switchover so the database configuraiton is as before the upgrade (DBP is primary and DBS standby). This would add another down time, if the systems are identical the upgrade process could be concluded here incuring only one down time.
On new primary (DBS)
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

SWITCHOVER_STATUS
--------------------
TO STANDBY

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO STANDBY;

Database altered.
On new standby (DBP)
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

SWITCHOVER_STATUS
--------------------
TO PRIMARY

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;

Database altered.
Start redo apply on DBS
shutdown immediate;
startup mount
SQL> alter database RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;
18. Drop the restore points to save some space
SQL> SELECT NAME FROM V$RESTORE_POINT WHERE GUARANTEE_FLASHBACK_DATABASE ='YES';

NAME
-----------------
BEFORE_UPGRADE_1
On standby
SQL> drop restore point BEFORE_UPGRADE_1;

SQL> SELECT NAME FROM V$RESTORE_POINT WHERE GUARANTEE_FLASHBACK_DATABASE ='YES';

NAME
------------------------
BEFORE_UPGRADE_STANDBY_1

SQL> drop restore point BEFORE_UPGRADE_STANDBY_1;
19. If DG Broker was enable before configure again.

20. If all is in order then upgrade the compatible parameter value. This conclude the upgrade processes.

Useful metalink notes
Extended Datatype Support (EDS) for SQL Apply [ID 559353.1]
Oracle11g Data Guard: Database Rolling Upgrade Shell Script [ID 949322.1]

White Papers
1. Database Rolling Upgrade Using Transient Logical Standby:
Oracle Data Guard 11g Oracle Maximum Availability Architecture White Paper January 2012
2. Database Rolling Upgrades Made Easy by Using a Data Guard Physical Standby Database
Oracle Maximum Availability Architecture White Paper October 2011

Best Practices for Zero Risk, Zero Downtime Database Maintenance

Saturday, February 25, 2012

Upgrading from 10.2.0.4 to 10.2.0.5 (Clusterware, RAC, ASM)

Two node cluster (node names rac1 and rac2) running 10.2.0.4 on RHEL 4 (kernel 2.6.9-89). The 10.2.0.4 has PSU January 2012 applied on the Oracle homes. The accompanying patch set note describe the steps needed to apply the patch set (unlike 11gR2 where information has to found from multiple sources).

One of the pre-reqs is time zone value
SQL> SELECT version FROM v$timezone_file;
   VERSION
----------
         4
If this query reports version 4 (as in this case), no action is required. If this reports a version lower or higher than 4, see 1086400.1 for more information.
Current clusterware version
$ crsctl query crs activeversion
CRS active version on the cluster is [10.2.0.4.0]
$ crsctl query crs softwareversion
CRS software version on node [rac1] is [10.2.0.4.0]
10gR2 clusterware could be upgraded in a rolling manner even though it's an in-place upgrade but as the Oracle home in-place upgrades does requires database to be shutdown. If not following warning will be shown.

1. Before the start of the clusterware upgrade all cluster applications are online.
crs_stat -t
Name           Type           Target    State     Host
------------------------------------------------------------
ora....SM1.asm application    ONLINE    ONLINE    rac1
ora....C1.lsnr application    ONLINE    ONLINE    rac1
ora.rac1.gsd   application    ONLINE    ONLINE    rac1
ora.rac1.ons   application    ONLINE    ONLINE    rac1
ora.rac1.vip   application    ONLINE    ONLINE    rac1
ora.rac10g2.db application    ONLINE    ONLINE    rac2
ora....21.inst application    ONLINE    ONLINE    rac1
ora....22.inst application    ONLINE    ONLINE    rac2
ora....SM2.asm application    ONLINE    ONLINE    rac2
ora....C2.lsnr application    ONLINE    ONLINE    rac2
ora.rac2.gsd   application    ONLINE    ONLINE    rac2
ora.rac2.ons   application    ONLINE    ONLINE    rac2
ora.rac2.vip   application    ONLINE    ONLINE    rac2
2. Start the clusterware upgrade by executing runInstaller
Even though it is a rolling upgrade all nodes are selected by default.



When the installation has finished it will ask to run the root script on each node. This is where the rolling upgrade happens.

3. Stop the clusterware stack on first node
stop on first node
crsctl stop crs
Stopping resources. This could take several minutes.
Successfully stopped CRS resources.
Stopping CSSD.
Shutting down CSS daemon.
Shutdown request successfully issued.
Cluster stack is running on other node(s) and could be used by applications.
rac2 ~]$ crs_stat -t
Name           Type           Target    State     Host
------------------------------------------------------------
ora....SM1.asm application    ONLINE    OFFLINE
ora....C1.lsnr application    ONLINE    OFFLINE
ora.rac1.gsd   application    ONLINE    OFFLINE
ora.rac1.ons   application    ONLINE    OFFLINE
ora.rac1.vip   application    ONLINE    ONLINE    rac2
ora.rac10g2.db application    ONLINE    ONLINE    rac2
ora....21.inst application    ONLINE    OFFLINE
ora....22.inst application    ONLINE    ONLINE    rac2
ora....SM2.asm application    ONLINE    ONLINE    rac2
ora....C2.lsnr application    ONLINE    ONLINE    rac2
ora.rac2.gsd   application    ONLINE    ONLINE    rac2
ora.rac2.ons   application    ONLINE    ONLINE    rac2
ora.rac2.vip   application    ONLINE    ONLINE    rac2
4. Run the root102.sh on first node
# /opt/crs/oracle/product/10.2.0/crs/install/root102.sh
Creating pre-patch directory for saving pre-patch clusterware files
Completed patching clusterware files to /opt/crs/oracle/product/10.2.0/crs
Relinking some shared libraries.
Relinking of patched files is complete.
Preparing to recopy patched init and RC scripts.
Recopying init and RC scripts.
Startup will be queued to init within 30 seconds.
Starting up the CRS daemons.
Waiting for the patched CRS daemons to start.
  This may take a while on some systems.
.
10205 patch successfully applied.
clscfg: EXISTING configuration version 3 detected.
clscfg: version 3 is 10G Release 2.
Successfully deleted 1 values from OCR.
Successfully deleted 1 keys from OCR.
Successfully accumulated necessary OCR keys.
Using ports: CSS=49895 CRS=49896 EVMC=49898 and EVMR=49897.
node :   
node 1: rac1 rac1-pvt rac1
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
clscfg -upgrade completed successfully
Creating '/opt/crs/oracle/product/10.2.0/crs/install/paramfile.crs' with data used for CRS configuration
Setting CRS configuration values in /opt/crs/oracle/product/10.2.0/crs/install/paramfile.crs
At the end of this clusterware stack will be up and running on this node (rac1) and will be available for use while root script is run on other nodes.
rac1 oracle]# crs_stat -t
Name           Type           Target    State     Host
------------------------------------------------------------
ora....SM1.asm application    ONLINE    ONLINE    rac1
ora....C1.lsnr application    ONLINE    ONLINE    rac1
ora.rac1.gsd   application    ONLINE    ONLINE    rac1
ora.rac1.ons   application    ONLINE    ONLINE    rac1
ora.rac1.vip   application    ONLINE    ONLINE    rac1
ora.rac10g2.db application    ONLINE    ONLINE    rac2
ora....21.inst application    ONLINE    ONLINE    rac1
ora....22.inst application    ONLINE    ONLINE    rac2
ora....SM2.asm application    ONLINE    ONLINE    rac2
ora....C2.lsnr application    ONLINE    ONLINE    rac2
ora.rac2.gsd   application    ONLINE    ONLINE    rac2
ora.rac2.ons   application    ONLINE    ONLINE    rac2
ora.rac2.vip   application    ONLINE    ONLINE    rac2
5. Carry out the same steps on other node(s) (rac2)
$ crsctl stop crs
Stopping resources. This could take several minutes.
Successfully stopped CRS resources.
Stopping CSSD.
Shutting down CSS daemon.
Shutdown request successfully issued.
Run root102.sh
[root@rac2 oracle]# /opt/crs/oracle/product/10.2.0/crs/install/root102.sh
Creating pre-patch directory for saving pre-patch clusterware files
Completed patching clusterware files to /opt/crs/oracle/product/10.2.0/crs
Relinking some shared libraries.
Relinking of patched files is complete.
Preparing to recopy patched init and RC scripts.
Recopying init and RC scripts.
Startup will be queued to init within 30 seconds.
Starting up the CRS daemons.
Waiting for the patched CRS daemons to start.
  This may take a while on some systems.
.
10205 patch successfully applied.
clscfg: EXISTING configuration version 3 detected.
clscfg: version 3 is 10G Release 2.
Successfully deleted 1 values from OCR.
Successfully deleted 1 keys from OCR.
Successfully accumulated necessary OCR keys.
Using ports: CSS=49895 CRS=49896 EVMC=49898 and EVMR=49897.
node :   
node 2: rac2 rac2-pvt rac2
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
clscfg -upgrade completed successfully
Creating '/opt/crs/oracle/product/10.2.0/crs/install/paramfile.crs' with data used for CRS configuration
Setting CRS configuration values in /opt/crs/oracle/product/10.2.0/crs/install/paramfile.crs
6. Verify clusterware is upgraded
$ crsctl query crs activeversion
CRS active version on the cluster is [10.2.0.5.0]
$ crsctl query crs softwareversion
CRS software version on node [rac2] is [10.2.0.5.0]
7. After the upgrade opatch exhbit an error which could be resolved by installing the latest version of opatch.



8. Create a pfile of the database before the Oracle Home is upgraded. Shutdown all applications running out of the Oracle home before Oracle home ugprades
[oracle@rac1 ~]$ srvctl stop database -d rac10g2
[oracle@rac1 ~]$ srvctl stop asm -n rac1
[oracle@rac1 ~]$ srvctl stop asm -n rac2
[oracle@rac1 ~]$ srvctl stop nodeapps -n rac2
[oracle@rac1 ~]$ srvctl stop nodeapps -n rac1
9. Execute runInstaller and upgrade Oracle Home across the cluster


10. From the 10g Upgrade guide
The DBUA provides support for Real Application Clusters (RAC) and Automatic Storage Management (ASM). Support for Real Application Clusters In a Real Application Clusters (RAC) environment, the DBUA upgrades all the database and configuration files on all nodes in the cluster.

Support for Automatic Storage Management The DBUA supports upgrades of databases that use Automatic Storage Management (ASM). If an ASM instance is detected, you have the choice of updating both the database and ASM or only the ASM instance.


In this ASM is upgrade is not necessary.

11. Database upgrade could be done manually or using DBUA. If database upgrade is done manually then set cluster_database=false before starting the database in upgrade mode. If DBUA is used setting cluster_database=false will be done by DBUA itself.

Since the 10.2.0.4 database and Oracle home had the PSU Jan 2012 applied and a new initialization parameter (_external_scn_rejection_threshold_hours) was introduced.

As the newly upgrade 10.2.0.5 home doesn't have this patch (PSU Jan 2012) yet trying to start the database for upgrade could be a problem.
SQL> startup nomount
ORA-01078: failure in processing system parameters
LRM-00101: unknown parameter name '_external_scn_rejection_threshold_hours'
This could be resolved with either by starting the database with the pfile created earlier (step 8) or applying the PSU Jan 2012 on the new 10.2.0.5 homes before running the DBUA.

In this case the latter option was selected. After the PSU Jan 2012 was applied on 10.2.0.5 DBUA ran without an issue.



12. After the upgrade has finished apply the post installation script of the PSU. This concludes the 10.2.0.4 to 10.2.0.5 upgrade.

Useful metalink notes
Oracle Clusterware (CRS or GI) Rolling Upgrades [ID 338706.1]

Tuesday, February 21, 2012

Upgrading from 11.2.0.1 to 11.2.0.3 with in-place upgrade for RAC

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