{"id":14478,"date":"2020-09-25T15:59:39","date_gmt":"2020-09-25T13:59:39","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/how-to-migrate-high-availability-databases-on-an-oda\/"},"modified":"2020-09-25T15:59:39","modified_gmt":"2020-09-25T13:59:39","slug":"how-to-migrate-high-availability-databases-on-an-oda","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/how-to-migrate-high-availability-databases-on-an-oda\/","title":{"rendered":"How to migrate High Availability databases on an ODA?"},"content":{"rendered":"<p>Through this blog, I would like to show, with a real customer case, how I have been migrating databases in High Availability environment on an ODA. High Availability using Data Guard for Oracle Enterprise Edition or dbvisit for Oracle Standard Edition 2. One of the advantage here would be to use the Standby Database as fallback in case there would be some application issue with new database version. Although, I would expect that for any productive database, customer would have a similar test database on which he would perform a good testing.<\/p>\n<p>In this procedure I have been upgrading database named DB1 from 11.2.0.4 to 12.1.0.2 version. The primary server is named ODA-PRI (running DB1_RZA database) and the standby server is named ODA-STD (running DB1_RZB database).<\/p>\n<p><!--more--><\/p>\n<h3>Steps<\/h3>\n<p>To perform an upgrade in High Availability environment, there would be 16 steps :<\/p>\n<ol>\n<li>Have a good database backup.<\/li>\n<li>Create new 12.1.0.2 dbhomes (or use existing one) on the primary and the standby ODA.<\/li>\n<li>Stop the application.<\/li>\n<li>Make sure the standby database is synchronized with the primary database.<\/li>\n<li>Stop the synchronization between the primary and the standby database.<\/li>\n<li>Stop the standby database.<\/li>\n<li>Upgrade the primary database to 12.1.0.2.<\/li>\n<li>Start the application.<\/li>\n<li>Test the application.\n<ul>\n<li>In case there is a critical issue failover to the standby database and create again old primary as new standby database.<\/li>\n<li>If all is ok, have the standby database upgraded as well by doing the next steps.<\/li>\n<\/ul>\n<\/li>\n<li>Move the standby database to the new home.<\/li>\n<li>Upgrade the standby database in the clusterware.<\/li>\n<li>Set compatible parameter to 12.1.0 on the standby database.<\/li>\n<li>Start the standby database.<\/li>\n<li>Update the registry metadata on the ODA.<\/li>\n<li>Start the log shippment again from the primary to the standby. The standby database will be upgraded through the archive logs.<\/li>\n<li>Test a switchover.<\/li>\n<\/ol>\n<p><strong><em>Note :<\/em><\/strong><\/p>\n<ol>\n<li>It is recommended to take an inc0 backup once the primary database has been upgraded.<\/li>\n<li>Usually we would keep the compatible parameter to the previous release and after a few weeks, change it on the standby first and then the primary. This to allow a possible downgrade of the databases. In my case, customer wanted to immediately have the full 12.1 conditions, and did not intend to restart the database later on. Also there was no intention for a possible downgrade as we would have been using the standby database as a fallback.<\/li>\n<\/ol>\n<h3>1- Check database backup<\/h3>\n<p>On our customer environment we are using our <a href=\"https:\/\/www.dbi-services.com\/offering\/products\/dmk-management-kit\/\">DMK Management Kit<\/a> which is very easy to use and powerfully to administrate the database.<br \/>\nI have then checked dmk_dbbackup logs to ensure I have a good backup.<\/p>\n<p><code>oracle@ODA-PRI:\/home\/oracle\/ [DB1] <strong>cda<\/strong><br \/>\n&nbsp;<br \/>\noracle@ODA-PRI:\/u01\/app\/oracle\/admin\/DB1\/ [DB1] <strong>cd log<\/strong><br \/>\n&nbsp;<br \/>\noracle@ODA-PRI:\/u01\/app\/oracle\/admin\/DB1\/log\/ [DB1] <strong>ls -ltrh *inc0*<\/strong><br \/>\n-rw-r--r-- 1 oracle oinstall 34K Jun 21 21:05 DB1_bck_inc0_no_arc_del_20200621_200002.log<br \/>\n-rw-r--r-- 1 oracle oinstall 33K Jul  1 21:03 DB1_bck_inc0_no_arc_del_20200701_200002.log<br \/>\n-rw-r--r-- 1 oracle oinstall 34K Aug  1 21:06 DB1_bck_inc0_no_arc_del_20200801_200002.log<br \/>\n-rw-r--r-- 1 oracle oinstall 35K Aug 10 08:43 DB1_bck_inc0_no_arc_del_20200810_075712.log<br \/>\n&nbsp;<br \/>\noracle@ODA-PRI:\/u01\/app\/oracle\/admin\/DB1\/log\/ [DB1] <strong>tail DB1_bck_inc0_no_arc_del_20200810_075712.log<\/strong><br \/>\n&nbsp;<br \/>\nRecovery Manager complete.<br \/>\n&nbsp;<br \/>\nRMAN return Code: 0<br \/>\n&nbsp;<br \/>\n#**************************************************************************************************#<br \/>\n#                      END OF: DB1_bck_inc0_no_arc_del_20200810_075712.log                       #<br \/>\n#--------------------------------------------------------------------------------------------------#<br \/>\n#                                  timestamp: 2020-08-10_08:43:52                                  #<br \/>\n#**************************************************************************************************#<br \/>\noracle@ODA-PRI:\/u01\/app\/oracle\/admin\/DB1\/log\/ [DB1]<\/code><\/p>\n<h3>2- Create new 12.1.0.2 dbhomes (or use existing one) on the primary and the standby ODA<\/h3>\n<p>This steps might be similar for the primary and standby ODA. Make sure to use the same version of PSU on both your ODA.<\/p>\n<p>I have been creating a new Oracle Home version 12.1.0.2.<\/p>\n<p>Checking dbhomes, I do not have any 12.1 running on my ODAs :<br \/>\n<code>[root@ODA-PRI ~]# <strong>odacli list-dbhomes<\/strong><br \/>\n&nbsp;<br \/>\nID                                       Name                 DB Version                               Home Location                                 Status<br \/>\n---------------------------------------- -------------------- ---------------------------------------- --------------------------------------------- ----------<br \/>\nd6df9457-e4cd-4c39-b3cb-8d03be3c4598     OraDB11204_home1     11.2.0.4.190115                          \/u01\/app\/oracle\/product\/11.2.0.4\/dbhome_1     Configured<br \/>\n3d92c8ea-2ad5-4565-acd5-1d931cf22b15     OraDB11204_home3     11.2.0.4.190115                          \/u01\/app\/oracle\/product\/11.2.0.4\/dbhome_3     Configured<br \/>\n9d2d92d0-3b98-42ac-9f39-9bd6deeb2e16     OraDB19000_home1     19.7.0.0.200414                          \/u01\/app\/oracle\/product\/19.0.0.0\/dbhome_1     Configured<\/code><\/p>\n<p>I&#8217;m running ODA version 19.7 :<br \/>\n<code>[root@ODA-PRI ~]# <strong>odacli describe-component<\/strong><br \/>\nSystem Version<br \/>\n---------------<br \/>\n19.7.0.0.0<br \/>\n&nbsp;<br \/>\nComponent                                Installed Version    Available Version<br \/>\n---------------------------------------- -------------------- --------------------<br \/>\nOAK                                       19.7.0.0.0            up-to-date<br \/>\nGI                                        19.7.0.0.200414       up-to-date<br \/>\nDB {<br \/>\n[ OraDB11204_home1,OraDB11204_home3 ]     11.2.0.4.190115       11.2.0.4.200414<br \/>\n[ OraDB19000_home1 ]                      19.7.0.0.200414       up-to-date<br \/>\n}<br \/>\nDCSAGENT                                  19.7.0.0.0            up-to-date<br \/>\nILOM                                      4.0.4.52.r133103      up-to-date<br \/>\nBIOS                                      41060700              up-to-date<br \/>\nOS                                        7.8                   up-to-date<br \/>\nFIRMWARECONTROLLER                        QDV1RF30              up-to-date<br \/>\nFIRMWAREDISK                              0121                  up-to-date<br \/>\nHMP                                       2.4.5.0.1             up-to-date<\/code><\/p>\n<p>I have downloaded Patch p23494992 from My Oracle Support and extracted it locally :<br \/>\n<code>[root@ODA-PRI patchs]# <strong>ls -ltrh<\/strong><br \/>\ntotal 5.8G<br \/>\n-rw-r--r-- 1 root root 5.8G Jun 19 09:54 12.1.0.2_p23494992_197000_Linux-x86-64.zip<br \/>\n&nbsp;<br \/>\n[root@ODA-PRI patchs]# <strong>unzip 12.1.0.2_p23494992_197000_Linux-x86-64.zip<\/strong><br \/>\nArchive:  12.1.0.2_p23494992_197000_Linux-x86-64.zip<br \/>\n extracting: odacli-dcs-19.7.0.0.0-200423-DB-12.1.0.2.zip<br \/>\n  inflating: README.txt<br \/>\n&nbsp;<br \/>\n[root@ODA-PRI patchs]# <strong>ls -ltrh<\/strong><br \/>\ntotal 12G<br \/>\n-rw-r--r-- 1 root root 5.8G Apr 23 20:10 odacli-dcs-19.7.0.0.0-200423-DB-12.1.0.2.zip<br \/>\n-rw-r--r-- 1 root root  252 May 23 20:55 README.txt<br \/>\n-rw-r--r-- 1 root root 5.8G Jun 19 09:54 12.1.0.2_p23494992_197000_Linux-x86-64.zip<\/code><\/p>\n<p>I updated the ODA repository with new DB clone :<br \/>\n<code>[root@ODA-PRI patchs]# <strong>odacli update-repository -f \/tmp\/patchs\/odacli-dcs-19.7.0.0.0-200423-DB-12.1.0.2.zip<\/strong><br \/>\n{<br \/>\n  \"jobId\" : \"a9677ae9-93af-43eb-b738-4a74f9686573\",<br \/>\n  \"status\" : \"Created\",<br \/>\n  \"message\" : \"\/tmp\/patchs\/odacli-dcs-19.7.0.0.0-200423-DB-12.1.0.2.zip\",<br \/>\n  \"reports\" : [ ],<br \/>\n  \"createTimestamp\" : \"August 10, 2020 09:51:41 AM CEST\",<br \/>\n  \"resourceList\" : [ ],<br \/>\n  \"description\" : \"Repository Update\",<br \/>\n  \"updatedTime\" : \"August 10, 2020 09:51:41 AM CEST\"<br \/>\n}<br \/>\n&nbsp;<br \/>\n[root@ODA-PRI patchs]# <strong>odacli describe-job -i \"a9677ae9-93af-43eb-b738-4a74f9686573\"<\/strong><br \/>\n&nbsp;<br \/>\nJob details<br \/>\n----------------------------------------------------------------<br \/>\n                     ID:  a9677ae9-93af-43eb-b738-4a74f9686573<br \/>\n            Description:  Repository Update<br \/>\n                 Status:  Success<br \/>\n                Created:  August 10, 2020 9:51:41 AM CEST<br \/>\n                Message:  \/tmp\/patchs\/odacli-dcs-19.7.0.0.0-200423-DB-12.1.0.2.zip<br \/>\n&nbsp;<br \/>\nTask Name                                Start Time                          End Time                            Status<br \/>\n---------------------------------------- ----------------------------------- ----------------------------------- ----------<\/code><\/p>\n<p>I have then created new needed dbhome (on this customer we are using Standard Edition database with dbvisit software) :<br \/>\n<code>[root@ODA-PRI ~]# <strong>odacli create-dbhome -de SE -v 12.1.0.2.200414<\/strong><br \/>\n&nbsp;<br \/>\nJob details<br \/>\n----------------------------------------------------------------<br \/>\n                     ID:  cb35718a-3aeb-4979-acc3-d352b1f541e4<br \/>\n            Description:  Database Home OraDB12102_home1 creation with version :12.1.0.2.200414<br \/>\n                 Status:  Created<br \/>\n                Created:  August 10, 2020 9:57:22 AM CEST<br \/>\n                Message:  Create Database Home<br \/>\n&nbsp;<br \/>\nTask Name                                Start Time                          End Time                            Status<br \/>\n---------------------------------------- ----------------------------------- ----------------------------------- ----------<br \/>\n&nbsp;<br \/>\n[root@ODA-PRI ~]# <strong>odacli describe-job -i cb35718a-3aeb-4979-acc3-d352b1f541e4<\/strong><br \/>\n&nbsp;<br \/>\nJob details<br \/>\n----------------------------------------------------------------<br \/>\n                     ID:  cb35718a-3aeb-4979-acc3-d352b1f541e4<br \/>\n            Description:  Database Home OraDB12102_home1 creation with version :12.1.0.2.200414<br \/>\n                 Status:  Success<br \/>\n                Created:  August 10, 2020 9:57:22 AM CEST<br \/>\n                Message:  Create Database Home<br \/>\n&nbsp;<br \/>\nTask Name                                Start Time                          End Time                            Status<br \/>\n---------------------------------------- ----------------------------------- ----------------------------------- ----------<br \/>\nSetting up ssh equivalance               August 10, 2020 9:57:23 AM CEST     August 10, 2020 9:57:23 AM CEST     Success<br \/>\nValidating dbHome available space        August 10, 2020 9:57:23 AM CEST     August 10, 2020 9:57:23 AM CEST     Success<br \/>\nCreating DbHome Directory                August 10, 2020 9:57:23 AM CEST     August 10, 2020 9:57:23 AM CEST     Success<br \/>\nExtract DB clones                        August 10, 2020 9:57:23 AM CEST     August 10, 2020 9:59:25 AM CEST     Success<br \/>\nClone Db home                            August 10, 2020 9:59:25 AM CEST     August 10, 2020 10:01:19 AM CEST    Success<br \/>\nEnable DB options                        August 10, 2020 10:01:19 AM CEST    August 10, 2020 10:01:30 AM CEST    Success<br \/>\nRun Root DB scripts                      August 10, 2020 10:01:30 AM CEST    August 10, 2020 10:01:30 AM CEST    Success<br \/>\nRemoving ssh keys                        August 10, 2020 10:01:39 AM CEST    August 10, 2020 10:01:39 AM CEST    Success<\/code><\/p>\n<p>Following steps is mandatory if using our DMK Management Kit. We need to create a dummy for the new database home :<br \/>\n<code>oracle@ODA-PRI:\/home\/oracle\/ [rdbms11204_1] <strong>cdd<\/strong><br \/>\noracle@ODA-PRI:\/u01\/app\/oracle\/local\/dmk\/ [rdbms11204_1] <strong>cd etc<\/strong><br \/>\noracle@ODA-PRI:\/u01\/app\/oracle\/local\/dmk\/etc\/ [rdbms11204_1] <strong>cp -p dmk.oratab dmk.oratab.20200810_1003<\/strong><br \/>\noracle@ODA-PRI:\/u01\/app\/oracle\/local\/dmk\/etc\/ [rdbms11204_1] <strong>vi dmk.oratab<\/strong><br \/>\noracle@ODA-PRI:\/u01\/app\/oracle\/local\/dmk\/etc\/ [rdbms11204_1] <strong>diff dmk.oratab dmk.oratab.20200810_1003<\/strong><br \/>\n4d3<br \/>\n---rdbms12102_1:\/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_1:D<br \/>\noracle@ODA-PRI:\/u01\/app\/oracle\/local\/dmk\/etc\/ [rdbms11204_1]<\/code><\/p>\n<p><strong><em>Just a tips :<\/em><\/strong> if you are using passwordless SSH authentication for the oracle user, you will have to create the keys again as any odacli create or delete command will remove them.<\/p>\n<p>Check new Oracle database home :<br \/>\n<code>[root@ODA-PRI ~]# <strong>odacli list-dbhomes<\/strong><br \/>\n&nbsp;<br \/>\nID                                       Name                 DB Version                               Home Location                                 Status<br \/>\n---------------------------------------- -------------------- ---------------------------------------- --------------------------------------------- ----------<br \/>\nd6df9457-e4cd-4c39-b3cb-8d03be3c4598     OraDB11204_home1     11.2.0.4.190115                          \/u01\/app\/oracle\/product\/11.2.0.4\/dbhome_1     Configured<br \/>\n9d2d92d0-3b98-42ac-9f39-9bd6deeb2e16     OraDB19000_home1     19.7.0.0.200414                          \/u01\/app\/oracle\/product\/19.0.0.0\/dbhome_1     Configured<br \/>\n73847823-ae83-4bf0-a630-f8884cf4387a     OraDB12102_home1     12.1.0.2.200414                          \/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_1     Configured<\/code><\/p>\n<h3>3- Stop the application<\/h3>\n<p>Before performing next upgrade steps, it is now time to have the customer stopping the application. You might have your own script to check running session, if not you can use below queries :<br \/>\n<code>SQL&gt; set linesize 300<br \/>\nSQL&gt; set pagesize 500<br \/>\nSQL&gt; col machine format a20<br \/>\nSQL&gt; col service_name format a20<br \/>\nSQL&gt; select SID, serial#, username, machine, process, program, status, service_name, logon_time from v$session where username not in ('SYS', 'PUBLIC') and username is not null order by status, username;<\/code><\/p>\n<p>To kill inactive old sessions, you can use below PL\/SQL commands :<br \/>\n<code>BEGIN<br \/>\n\tfor s in (select SID, serial#, username, machine, process, program, status, service_name, logon_time from v$session where username not in ('SYS', 'PUBLIC') and username is not null and status='INACTIVE' order by status, username)<br \/>\n\tloop<br \/>\n\t\tdbms_output.put_line ('Session : ' || s.sid || ',' ||s.serial#);<br \/>\n\t\tdbms_output.put_line ('');<br \/>\n\t\texecute immediate 'alter system kill session ''' || s.sid || ',' ||s.serial# || ''' immediate';<br \/>\n\tend loop;<br \/>\nend;<br \/>\n\/<\/code><\/p>\n<h3>4- Make sure the standby database is synchronized with the primary database<\/h3>\n<p>The High Availability solution will depend if you are running Enterprise Edition or Standard Edition.<br \/>\nI will consider that you are using Data Guard for Enterprise Edition and dbvisit solution for Standard Edition.<\/p>\n<h4>High availability with Data Guard<\/h4>\n<p>To make sure the standby is synchronized, use show database command on the standby database :<br \/>\n<code>DGMGRL&gt; <strong>show configuration<\/strong><br \/>\n&nbsp;<br \/>\nConfiguration - DB1<br \/>\n&nbsp;<br \/>\n  Protection Mode: MaxAvailability<br \/>\n  Members:<br \/>\n  DB1_RZA - Primary database<br \/>\n    DB1_RZB - Physical standby database<br \/>\n&nbsp;<br \/>\nFast-Start Failover: DISABLED<br \/>\n&nbsp;<br \/>\nConfiguration Status:<br \/>\nSUCCESS   (status updated 19 seconds ago)<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\nDGMGRL&gt; <strong>show database DB1_RZB<\/strong><br \/>\n&nbsp;<br \/>\nDatabase - DB1_RZB<br \/>\n&nbsp;<br \/>\n  Role:               PHYSICAL STANDBY<br \/>\n  Intended State:     APPLY-ON<br \/>\n  Transport Lag:      0 seconds (computed 1 second ago)<br \/>\n  Apply Lag:          0 seconds (computed 1 second ago)<br \/>\n  Average Apply Rate: 4.00 KByte\/s<br \/>\n  Real Time Query:    OFF<br \/>\n  Instance(s):<br \/>\n    DB1<br \/>\n&nbsp;<br \/>\nDatabase Status:<br \/>\nSUCCESS<\/code><\/p>\n<p>What is mandatory is to have no transport lag and no apply lag :<br \/>\n<code>Transport Lag:      0 seconds (computed 1 second ago)<br \/>\nApply Lag:          0 seconds (computed 1 second ago)<\/code><\/p>\n<h4>High availability with dbvisit<\/h4>\n<p>Use dbvctl command with option -i to ensure there is no gap. DB1 would be the name of my DDC configuration file :<br \/>\n<code>oracle@ODA-PRI:\/home\/oracle\/ [DB1] <strong>\/u01\/app\/dbvisit\/standby\/dbvctl -d DB1 -i<\/strong><br \/>\n=============================================================<br \/>\nDbvisit Standby Database Technology (9.0.02_0_gbd40c486) (pid 91009)<br \/>\ndbvctl started on ODA-PRI: Mon Aug 10 09:29:17 2020<br \/>\n=============================================================<br \/>\n&nbsp;<br \/>\nDbvisit Standby log gap report for DB1_RZA at 202008100929:<br \/>\n-------------------------------------------------------------<br \/>\nDescription       | SCN          | Timestamp<br \/>\n-------------------------------------------------------------<br \/>\nSource              13139995191    2020-08-10:09:29:20 +02:00<br \/>\nDestination         13139994931    2020-08-10:09:27:37 +02:00<br \/>\n&nbsp;<br \/>\nStandby database time lag (DAYS-HH:MI:SS): +00:01:43<br \/>\n&nbsp;<br \/>\nReport for Thread 1<br \/>\n-------------------<br \/>\nSOURCE<br \/>\nCurrent Sequence 52863<br \/>\nLast Archived Sequence 52862<br \/>\nLast Transferred Sequence 52862<br \/>\nLast Transferred Timestamp 2020-08-10 09:27:42<br \/>\n&nbsp;<br \/>\nDESTINATION<br \/>\nRecovery Sequence 52863<br \/>\n&nbsp;<br \/>\nTransfer Log Gap 0<br \/>\nApply Log Gap 0<br \/>\n&nbsp;<br \/>\n=============================================================<br \/>\ndbvctl ended on ODA-PRI: Mon Aug 10 09:29:25 2020<br \/>\n=============================================================<\/code><\/p>\n<p>Mandatory is to have no gap :<br \/>\n<code>Transfer Log Gap 0<br \/>\nApply Log Gap 0<\/code><\/p>\n<p>If there is any gap, same command can be run on the primary to ship the archive log and on the standby to apply them :<br \/>\n<code>oracle@ODA-PRI|STD:\/home\/oracle\/ [DB1] <strong>\/u01\/app\/dbvisit\/standby\/dbvctl -d DB1<\/strong><\/code><\/p>\n<h3>5- Stop the synchronization between the primary and the standby database<\/h3>\n<p>You will need to stop the synchronization of the databases to isolate the standby from any new change.<\/p>\n<h4>High availability with Data Guard<\/h4>\n<p>In case FSFO is used, you will need to disable it :<br \/>\n<code>DGMGRL&gt; disable fast_start failover;<br \/>\nDisabled.<\/code><\/p>\n<p>You will need to set the protection mode to maxperformance :<br \/>\n<code>DGMGRL&gt; edit configuration set protection mode as maxperformance;<br \/>\nSucceeded.<\/code><\/p>\n<p>You will need to stop applying the change vector on the standby :<br \/>\n<code>DGMGRL&gt; edit database DB1_RZB set state=apply-off;<br \/>\nSucceeded.<\/code><\/p>\n<p>You will need to stop shipping the change vector on the primary :<br \/>\n<code>DGMGRL&gt; edit database DB1_RZA set state=transport-off;<br \/>\nSucceeded.<\/code><\/p>\n<h4>High availability with dbvisit<\/h4>\n<p>Archive log shippment and apply is done through the linux crontab. Purpose is then to deactivate it on both the primary and the standby database using crontab -e command.<\/p>\n<p>On the primary :<br \/>\n<code>#00,10,20,30,40,50 * * * * \/u01\/app\/dbvisit\/standby\/dbvctl -d DB1 &gt;\/tmp\/dbvisit_apply_logs_DB1.log 2&gt;&amp;1<\/code><\/p>\n<p>On the standby :<br \/>\n<code>#05,15,25,35,45,55 * * * * \/u01\/app\/dbvisit\/standby\/dbvctl -d DB1 &gt;\/tmp\/dbvisit_apply_logs_DB1.log 2&gt;&amp;1<\/code><\/p>\n<h3>6- Stop the standby database<\/h3>\n<p><code>oracle@ODA-STD:\/home\/oracle\/ [DB1] <strong>DB1<\/strong><br \/>\n********* dbi services Ltd. *********<br \/>\nSTATUS                 : MOUNTED<br \/>\nDB_UNIQUE_NAME         : DB1_RZB<br \/>\nOPEN_MODE              : MOUNTED<br \/>\nLOG_MODE               : ARCHIVELOG<br \/>\nDATABASE_ROLE          : PHYSICAL STANDBY<br \/>\nFLASHBACK_ON           : NO<br \/>\nFORCE_LOGGING          : YES<br \/>\n*************************************<br \/>\n&nbsp;<br \/>\noracle@ODA-STD:\/home\/oracle\/ [DB1] <strong>srvctl stop database -d DB1_RZB<\/strong><br \/>\n&nbsp;<br \/>\noracle@ODA-STD:\/home\/oracle\/ [DB1] <strong>DB1<\/strong><br \/>\n********* dbi services Ltd. *********<br \/>\nSTATUS          : STOPPED<br \/>\n*************************************<br \/>\noracle@ODA-STD:\/home\/oracle\/ [DB1]<\/code><\/p>\n<h3>7- Upgrade the primary database to 12.1.0.2<\/h3>\n<h4>7a- Prerequirements<\/h4>\n<p>I first checked if the existing database had any invalid object :<br \/>\n<code>SQL&gt; <strong>set lines 300<\/strong><br \/>\n&nbsp;<br \/>\nSQL&gt; <strong>col status format a20<\/strong><br \/>\n&nbsp;<br \/>\nSQL&gt; <strong>col comp_name format a40<\/strong><br \/>\n&nbsp;<br \/>\nSQL&gt; <strong>select comp_name, status from dba_registry;<\/strong><br \/>\n&nbsp;<br \/>\nCOMP_NAME                                STATUS<br \/>\n---------------------------------------- --------------------<br \/>\nOracle Database Catalog Views            VALID<br \/>\nOracle Database Packages and Types       VALID<br \/>\nOracle Workspace Manager                 VALID<br \/>\n&nbsp;<br \/>\nSQL&gt; <strong>SELECT count(*) FROM dba_invalid_objects;<\/strong><br \/>\n&nbsp;<br \/>\n  COUNT(*)<br \/>\n----------<br \/>\n         0<\/code><\/p>\n<p>I executed preupgrd.sql script :<br \/>\n<code>oracle@ODA-PRI:\/home\/oracle\/ [DB1] <strong>echo $ORACLE_SID<\/strong><br \/>\nDB1<br \/>\n&nbsp;<br \/>\noracle@ODA-PRI:\/home\/oracle\/ [DB1] <strong>echo $ORACLE_HOME<\/strong><br \/>\n\/u01\/app\/oracle\/product\/11.2.0.4\/dbhome_1<br \/>\n&nbsp;<br \/>\noracle@ODA-PRI:\/home\/oracle\/ [DB1] <strong>ls -lthr \/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_1\/rdbms\/admin\/pre*<\/strong><br \/>\n-rw-r--r-- 1 oracle oinstall 14K May 15  2014 \/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_1\/rdbms\/admin\/preupgrd.sql<br \/>\n&nbsp;<br \/>\noracle@ODA-PRI:\/home\/oracle\/ [DB1] <strong>sqh<\/strong><br \/>\n&nbsp;<br \/>\nSQL*Plus: Release 11.2.0.4.0 Production on Mon Aug 10 10:29:32 2020<br \/>\n&nbsp;<br \/>\nCopyright (c) 1982, 2013, Oracle.  All rights reserved.<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\nConnected to:<br \/>\nOracle Database 11g Release 11.2.0.4.0 - 64bit Production<br \/>\nWith the Real Application Clusters option<br \/>\n&nbsp;<br \/>\nSQL&gt; <strong>@\/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_1\/rdbms\/admin\/preupgrd.sql<\/strong><br \/>\n...<br \/>\n...<br \/>\n...<\/code><\/p>\n<p>I checked preupgrade log :<br \/>\n<code>oracle@ODA-PRI:\/home\/oracle\/ [DB1] <strong>more \/u01\/app\/oracle\/cfgtoollogs\/DB1_RZA\/preupgrade\/preupgrade.log<\/strong><br \/>\nOracle Database Pre-Upgrade Information Tool 08-10-2020 10:29:46<br \/>\nScript Version: 12.1.0.2.0 Build: 015<br \/>\n**********************************************************************<br \/>\n    Database Name:  DB1<br \/>\n   Container Name:  Not Applicable in Pre-12.1 database<br \/>\n     Container ID:  Not Applicable in Pre-12.1 database<br \/>\n          Version:  11.2.0.4.0<br \/>\n       Compatible:  11.2.0<br \/>\n        Blocksize:  8192<br \/>\n         Platform:  Linux x86 64-bit<br \/>\n    Timezone file:  V31<br \/>\nDatabase log mode:  ARCHIVELOG<br \/>\n**********************************************************************<br \/>\n                           [Update parameters]<br \/>\n                        [No parameters to update]<br \/>\n...<br \/>\n...<br \/>\n...<\/code><\/p>\n<p>I executed the preupgrade_fixup.sql script :<br \/>\n<code>SQL&gt; <strong>@\/u01\/app\/oracle\/cfgtoollogs\/DB1_RZA\/preupgrade\/preupgrade_fixups.sql<\/strong><br \/>\nPre-Upgrade Fixup Script Generated on 2020-08-10 10:29:45  Version: 12.1.0.2 Build: 015<br \/>\nBeginning Pre-Upgrade Fixups...<br \/>\nExecuting in container DB1<br \/>\n&nbsp;<br \/>\n**********************************************************************<br \/>\nCheck Tag:     NEW_TIME_ZONES_EXIST<br \/>\nCheck Summary: Check for use of newer timezone data file<br \/>\nFix Summary:   Time zone data file must be updated in the new ORACLE_HOME.<br \/>\n**********************************************************************<br \/>\nFixup Returned Information:<br \/>\nERROR: --&gt; New Timezone File in use<br \/>\n&nbsp;<br \/>\n     Database is using a time zone file newer than version 18.<br \/>\n     BEFORE upgrading the database, patch the new<br \/>\n     ORACLE_HOME\/oracore\/zoneinfo\/ with a time zone data file of the<br \/>\n     same version as the one used in the 11.2.0.4.0 release database.<br \/>\n**********************************************************************<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n**********************************************************************<br \/>\nCheck Tag:     PURGE_RECYCLEBIN<br \/>\nCheck Summary: Check that recycle bin is empty prior to upgrade<br \/>\nFix Summary:   The recycle bin will be purged.<br \/>\n**********************************************************************<br \/>\nFixup Succeeded<br \/>\n**********************************************************************<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n**********************************************************************<br \/>\n                      [Pre-Upgrade Recommendations]<br \/>\n**********************************************************************<br \/>\n&nbsp;<br \/>\n                        *****************************************<br \/>\n                        ********* Dictionary Statistics *********<br \/>\n                        *****************************************<br \/>\n&nbsp;<br \/>\nPlease gather dictionary statistics 24 hours prior to<br \/>\nupgrading the database.<br \/>\nTo gather dictionary statistics execute the following command<br \/>\nwhile connected as SYSDBA:<br \/>\n    EXECUTE dbms_stats.gather_dictionary_stats;<br \/>\n&nbsp;<br \/>\n^^^ MANUAL ACTION SUGGESTED ^^^<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n                        *****************************************<br \/>\n                        *********** Hidden Parameters ***********<br \/>\n                        *****************************************<br \/>\n&nbsp;<br \/>\nPlease review and remove any unnecessary hidden\/underscore parameters prior<br \/>\nto upgrading.  It is strongly recommended that these be removed before upgrade<br \/>\nunless your application vendors and\/or Oracle Support state differently.<br \/>\nChanges will need to be made in the init.ora or spfile.<br \/>\n&nbsp;<br \/>\n           ********    Existing Hidden Parameters   ********<br \/>\n&nbsp;<br \/>\n_datafile_write_errors_crash_instance = FALSE<br \/>\n_db_writer_coalesce_area_size = 16777216<br \/>\n_disable_interface_checking = TRUE<br \/>\n_enable_NUMA_support = FALSE<br \/>\n_file_size_increase_increment = 2143289344<br \/>\n_gc_policy_time = 0<br \/>\n_gc_undo_affinity = FALSE<br \/>\n_ktb_debug_flags = 8<br \/>\n&nbsp;<br \/>\n^^^ MANUAL ACTION SUGGESTED ^^^<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n                        *****************************************<br \/>\n                        ************ Existing Events ************<br \/>\n                        *****************************************<br \/>\n&nbsp;<br \/>\nPlease review and remove any unnecessary events prior to upgrading.<br \/>\nIt is strongly recommended that these be removed before upgrade unless<br \/>\nyour application vendors and\/or Oracle Support state differently.<br \/>\nChanges will need to be made in the init.ora or spfile.<br \/>\n&nbsp;<br \/>\n            ********           Existing Events       ********<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n^^^ MANUAL ACTION SUGGESTED ^^^<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n           **************************************************<br \/>\n                ************* Fixup Summary ************<br \/>\n&nbsp;<br \/>\n 1 fixup routine was successful.<br \/>\n 0 fixup routines returned INFORMATIONAL text that should be reviewed.<br \/>\n 1 ERROR LEVEL check returned INFORMATION that must be acted on prior to upgrade.<br \/>\n&nbsp;<br \/>\n      ************************************************************<br \/>\n                   ====&gt;&gt; USER ACTION REQUIRED  &lt;&lt;====<br \/>\n      ************************************************************<br \/>\n&nbsp;<br \/>\n 1) Check Tag:    NEW_TIME_ZONES_EXIST failed.<br \/>\n    Check Summary: Check for use of newer timezone data file<br \/>\n    Fixup Summary:<br \/>\n     &quot;Time zone data file must be updated in the new ORACLE_HOME.&quot;<br \/>\n    ^^^ MANUAL ACTION REQUIRED ^^^<br \/>\n&nbsp;<br \/>\n           **************************************************<br \/>\n            You MUST resolve the above error prior to upgrade<br \/>\n           **************************************************<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n**************** Pre-Upgrade Fixup Script Complete *********************<br \/>\n&nbsp;<br \/>\nPL\/SQL procedure successfully completed.<\/code><\/p>\n<p>The hidden parameters are ODA specific and can be ignored.<\/p>\n<p>I manually purge the recycle_bin :<br \/>\n<code>SQL&gt; <strong>EXECUTE dbms_preup.purge_recyclebin_fixup;<\/strong><br \/>\n&nbsp;<br \/>\nPL\/SQL procedure successfully completed.<br \/>\n&nbsp;<br \/>\nSQL&gt; <strong>PURGE DBA_RECYCLEBIN;<\/strong><br \/>\n&nbsp;<br \/>\nDBA Recyclebin purged.<br \/>\n&nbsp;<br \/>\nSQL&gt;<\/code><\/p>\n<p>I gathered dictionary statistics :<br \/>\n<code>SQL&gt; <strong>EXECUTE dbms_stats.gather_dictionary_stats;<\/strong><br \/>\n&nbsp;<br \/>\nPL\/SQL procedure successfully completed.<\/code><\/p>\n<p>I found out, thanks to <a href=\"https:\/\/community.oracle.com\/thread\/4041871\">MOS community article<\/a>, that there was a bug for the time zone requirements :<br \/>\nBug 17303129 :  UPGRADE DATABASE FROM 11.1.0.7 TO 12.1.0.1, &#8220;OLDER TIMEZONE IN USE&#8221; OCCURRED<br \/>\nand that I did not have to downgrade my time zone :<br \/>\n<code>SQL&gt; <strong>select  version FROM v$timezone_file;<\/strong><br \/>\n&nbsp;<br \/>\n   VERSION<br \/>\n----------<br \/>\n        31<br \/>\n&nbsp;<br \/>\nSQL&gt; <strong>select TZ_VERSION from registry$database;<\/strong><br \/>\n&nbsp;<br \/>\nTZ_VERSION<br \/>\n----------<br \/>\n        31 <\/code><\/p>\n<p>I removed OLAP component :<br \/>\n<code>SQL&gt; <strong>@?\/olap\/admin\/catnoamd.sql<\/strong><br \/>\n...<br \/>\n...<br \/>\n...<br \/>\ndrop type olapsys.olap_sys_aw_access_obj<br \/>\n*<br \/>\nERROR at line 1:<br \/>\nORA-01435: user does not exist<br \/>\n...<br \/>\n...<br \/>\n...<\/code><br \/>\nand could check that OLAP is installed but not used :<br \/>\n<code>SQL&gt; <strong>col c1 heading 'OLAP|Installed' format a20<\/strong><br \/>\nSQL&gt; <strong>select decode(count(*), 0, 'No', 'Yes') c1 from v$option where parameter = 'OLAP';<\/strong><br \/>\n&nbsp;<br \/>\nOLAP<br \/>\nInstalled<br \/>\n--------------------<br \/>\nYes<br \/>\n&nbsp;<br \/>\nSQL&gt; <strong>col c1 heading 'OLAP|Used' format a20<\/strong><br \/>\nSQL&gt; <strong>select decode(count(*), 0, 'No', 'Yes') c1 from dba_feature_usage_statistics where name like '%OLAP%' and first_usage_date is not null;<\/strong><br \/>\n&nbsp;<br \/>\nOLAP<br \/>\nUsed<br \/>\n--------------------<br \/>\nNo<\/code><\/p>\n<h4>7b- Upgrade the primary database to 12.1.0.2 using odacli upgrade-database<\/h4>\n<p>As it should normally be done I wanted to upgrade the database using odacli upgrade-database.<br \/>\n<code>[root@ODA-PRI ~]# <strong>odacli list-databases<\/strong><br \/>\n&nbsp;<br \/>\nID                                       DB Name    DB Type  DB Version           CDB        Class    Shape    Storage    Status        DbHomeID<br \/>\n---------------------------------------- ---------- -------- -------------------- ---------- -------- -------- ---------- ------------ ----------------------------------------<br \/>\nd897e7d6-9e2d-45e4-a0d7-a1e232d47f16     DB1        Si       11.2.0.4.190115      false      Oltp     Odb1     Acfs       Configured   d6df9457-e4cd-4c39-b3cb-8d03be3c4598<br \/>\n&nbsp;<br \/>\n[root@ODA-PRI ~]# <strong>odacli list-dbhomes<\/strong><br \/>\n&nbsp;<br \/>\nID                                       Name                 DB Version                               Home Location                                 Status<br \/>\n---------------------------------------- -------------------- ---------------------------------------- --------------------------------------------- ----------<br \/>\nd6df9457-e4cd-4c39-b3cb-8d03be3c4598     OraDB11204_home1     11.2.0.4.190115                          \/u01\/app\/oracle\/product\/11.2.0.4\/dbhome_1     Configured<br \/>\n9d2d92d0-3b98-42ac-9f39-9bd6deeb2e16     OraDB19000_home1     19.7.0.0.200414                          \/u01\/app\/oracle\/product\/19.0.0.0\/dbhome_1     Configured<br \/>\n73847823-ae83-4bf0-a630-f8884cf4387a     OraDB12102_home1     12.1.0.2.200414                          \/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_1     Configured<br \/>\n&nbsp;<br \/>\n[root@ODA-PRI ~]# <strong>odacli upgrade-database -i d897e7d6-9e2d-45e4-a0d7-a1e232d47f16 -from d6df9457-e4cd-4c39-b3cb-8d03be3c4598 -to 73847823-ae83-4bf0-a630-f8884cf4387a<\/strong><br \/>\n{<br \/>\n  \"jobId\" : \"7c6580a2-3646-4a93-8fcc-582a6f297562\",<br \/>\n  \"status\" : \"Created\",<br \/>\n  \"message\" : null,<br \/>\n  \"reports\" : [ ],<br \/>\n  \"createTimestamp\" : \"August 10, 2020 12:01:44 PM CEST\",<br \/>\n  \"resourceList\" : [ ],<br \/>\n  \"description\" : \"Database service upgrade with db ids: [d897e7d6-9e2d-45e4-a0d7-a1e232d47f16]\",<br \/>\n  \"updatedTime\" : \"August 10, 2020 12:01:44 PM CEST\"<br \/>\n}<br \/>\n&nbsp;<br \/>\n[root@ODA-PRI upgrade1]# <strong>odacli describe-job -i \"7c6580a2-3646-4a93-8fcc-582a6f297562\"<\/strong><br \/>\n&nbsp;<br \/>\nJob details<br \/>\n----------------------------------------------------------------<br \/>\n                     ID:  7c6580a2-3646-4a93-8fcc-582a6f297562<br \/>\n            Description:  Database service upgrade with db ids: [d897e7d6-9e2d-45e4-a0d7-a1e232d47f16]<br \/>\n                 Status:  Failure<br \/>\n                Created:  August 10, 2020 12:01:44 PM CEST<br \/>\n                Message:  DCS-10001:Internal error encountered: Databases failed to upgrade are : [d897e7d6-9e2d-45e4-a0d7-a1e232d47f16].<br \/>\n&nbsp;<br \/>\nTask Name                                Start Time                          End Time                            Status<br \/>\n---------------------------------------- ----------------------------------- ----------------------------------- ----------<br \/>\nDatabase Service Upgradation             August 10, 2020 12:01:44 PM CEST    August 10, 2020 12:05:31 PM CEST    Failure<br \/>\nDatabase Service Upgradation             August 10, 2020 12:01:44 PM CEST    August 10, 2020 12:05:31 PM CEST    Failure<br \/>\nSetting up ssh equivalance               August 10, 2020 12:01:45 PM CEST    August 10, 2020 12:01:45 PM CEST    Success<br \/>\nRun catnoamd.sql                         August 10, 2020 12:01:45 PM CEST    August 10, 2020 12:01:46 PM CEST    Success<br \/>\nDatabase Upgrade                         August 10, 2020 12:01:46 PM CEST    August 10, 2020 12:05:30 PM CEST    Success<br \/>\nDeleting and creating the spfile and pfile August 10, 2020 12:05:30 PM CEST    August 10, 2020 12:05:31 PM CEST    Success<br \/>\nDatabase Upgrade Validation              August 10, 2020 12:05:31 PM CEST    August 10, 2020 12:05:31 PM CEST    Failure<\/code><\/p>\n<p>But upgrade could not be done successfully using odacli upgrade-database command. I have been investigating the logs and tried several times before deciding not to lose more time and to run a manual upgrade. There was no other solution, the maintenance windows was going on.<\/p>\n<h4>7c- Upgrade the primary database to 12.1.0.2 manually<\/h4>\n<p>Upgrading the database manually would cover below steps :<\/p>\n<ol>\n<li>Switching database to new home<\/li>\n<li>Updating oratab<\/li>\n<li>Start database in upgrade mode<\/li>\n<li>Run upgrade<\/li>\n<li>Upgrade database configuration in oracle clusterware<\/li>\n<li>Startup the database<\/li>\n<li>Run catuppst.sql<\/li>\n<li>Check dba registry and invalid objects<\/li>\n<li>Execute utlrp.sql<\/li>\n<li>Run postupgrade_fixups.sql<\/li>\n<li>Gather statistics<\/li>\n<li>Run post upgrade status tool<\/li>\n<li>Check dba registry and invalid objects<\/li>\n<li>Solve invalid objects<\/li>\n<li>Upgrade time zone<\/li>\n<li>Check data patch<\/li>\n<li>Set compatible parameter value to 12.1.0<\/li>\n<li>Restart database with grid<\/li>\n<li>Update registry metadata<\/li>\n<li>Update network (tnsnames.ora and listener.ora for statistcs entries)<\/li>\n<\/ol>\n<h5>Switching database to new home<\/h5>\n<p>Stop database :<br \/>\n<code>oracle@ODA-PRI:\/home\/oracle\/ [DB1] <strong>DB1<\/strong><br \/>\n********* dbi services Ltd. *********<br \/>\nSTATUS                 : OPEN<br \/>\nDB_UNIQUE_NAME         : DB1_RZA<br \/>\nOPEN_MODE              : READ WRITE<br \/>\nLOG_MODE               : ARCHIVELOG<br \/>\nDATABASE_ROLE          : PRIMARY<br \/>\nFLASHBACK_ON           : NO<br \/>\nFORCE_LOGGING          : YES<br \/>\nVERSION                : 11.2.0.4.0<br \/>\n*************************************<br \/>\n&nbsp;<br \/>\noracle@ODA-PRI:\/home\/oracle\/ [DB1] <strong>srvctl stop database -d DB1_RZA<\/strong><br \/>\n&nbsp;<br \/>\noracle@ODA-PRI:\/home\/oracle\/ [DB1] <strong>DB1<\/strong><br \/>\n********* dbi services Ltd. *********<br \/>\nSTATUS          : STOPPED<br \/>\n*************************************<br \/>\n<\/code><\/p>\n<p>Move spfile and password file from 11.2.0.4 home to 12.1.0.2 home :<br \/>\n<code>oracle@ODA-PRI:\/home\/oracle\/ [DB1] <strong>cdh<\/strong><br \/>\noracle@ODA-PRI:\/u01\/app\/oracle\/product\/11.2.0.4\/dbhome_1\/ [DB1] <strong>cd dbs<\/strong><br \/>\noracle@ODA-PRI:\/u01\/app\/oracle\/product\/11.2.0.4\/dbhome_1\/dbs\/ [DB1] <strong>cp -p initDB1.ora \/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_1\/dbs\/<\/strong><br \/>\noracle@ODA-PRI:\/u01\/app\/oracle\/product\/11.2.0.4\/dbhome_1\/dbs\/ [DB1] <strong>cp -p orapwDB1 \/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_1\/dbs\/<\/strong><br \/>\noracle@ODA-PRI:\/u01\/app\/oracle\/product\/11.2.0.4\/dbhome_1\/dbs\/ [DB1] <strong>mv initDB1.ora initDB1.ora.off<\/strong><br \/>\noracle@ODA-PRI:\/u01\/app\/oracle\/product\/11.2.0.4\/dbhome_1\/dbs\/ [DB1] <strong>mv orapwDB1 orapwDB1.off<\/strong><\/code><\/p>\n<h5>Updating oratab<\/h5>\n<p><code>oracle@ODA-PRI:\/u01\/app\/oracle\/product\/11.2.0.4\/dbhome_1\/dbs\/ [DB1] <strong>cp -p \/etc\/oratab ~\/oratab.20200810_1243<\/strong><br \/>\noracle@ODA-PRI:\/u01\/app\/oracle\/product\/11.2.0.4\/dbhome_1\/dbs\/ [DB1] <strong>vio<\/strong><br \/>\noracle@ODA-PRI:\/u01\/app\/oracle\/product\/11.2.0.4\/dbhome_1\/dbs\/ [DB1] <strong>diff \/etc\/oratab ~\/oratab.20200810_1243<\/strong><br \/>\n33c33<br \/>\n DB1:\/u01\/app\/oracle\/product\/11.2.0.4\/dbhome_1:N             # line added by Agent<br \/>\noracle@ODA-PRI:\/u01\/app\/oracle\/product\/11.2.0.4\/dbhome_1\/dbs\/ [DB1] <strong>dmk<\/strong><br \/>\n<\/code><\/p>\n<h5>Start database in upgrade mode<\/h5>\n<p>Trying to start the database in upgrade mode I got following error :<br \/>\n<code>ORA-00723: Initialization parameter COMPATIBLE must be explicitly set<\/code><br \/>\nSurprising, but it seems that the compatible parameter was not initally set for this database. I had to set it to 11g :<br \/>\n<code>SQL&gt; <strong>show parameter compatible<\/strong><br \/>\n&nbsp;<br \/>\nNAME                                 TYPE        VALUE<br \/>\n------------------------------------ ----------- ------------------------------<br \/>\ncompatible                           string      12.0.0<br \/>\nnoncdb_compatible                    boolean     FALSE<br \/>\n&nbsp;<br \/>\nSQL&gt; <strong>show spparameter compatible<\/strong><br \/>\n&nbsp;<br \/>\nSID      NAME                          TYPE        VALUE<br \/>\n-------- ----------------------------- ----------- ----------------------------<br \/>\n*        compatible                    string<br \/>\n*        noncdb_compatible             boolean<br \/>\n&nbsp;<br \/>\nSQL&gt; <strong>alter system set compatible='11.2.0.0.0' scope=spfile;<\/strong><br \/>\n&nbsp;<br \/>\nSystem altered.<br \/>\n<\/code><br \/>\nStarting the database in upgrade mode was then successful :<br \/>\n<code>SQL&gt;<strong> startup upgrade<\/strong><br \/>\nORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance<br \/>\nORACLE instance started.<br \/>\n&nbsp;<br \/>\nTotal System Global Area 4.5097E+10 bytes<br \/>\nFixed Size                  2936480 bytes<br \/>\nVariable Size            6710886752 bytes<br \/>\nDatabase Buffers         3.8252E+10 bytes<br \/>\nRedo Buffers              131280896 bytes<br \/>\nDatabase mounted.<br \/>\nDatabase opened.<\/code><\/p>\n<h5>Run upgrade<\/h5>\n<p><code>oracle@ODA-PRI:\/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_1\/ [DB1] <strong>cd $ORACLE_HOME\/rdbms\/admin<\/strong><br \/>\noracle@ODA-PRI:\/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_1\/rdbms\/admin\/ [DB1] <strong>$ORACLE_HOME\/perl\/bin\/perl catctl.pl -n  4 -l $ORACLE_HOME\/diagnostics catupgrd.sql<\/strong><br \/>\n&nbsp;<br \/>\nArgument list for [catctl.pl]<br \/>\nSQL Process Count     n = 4<br \/>\nSQL PDB Process Count N = 0<br \/>\nInput Directory       d = 0<br \/>\nPhase Logging Table   t = 0<br \/>\nLog Dir               l = \/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_1\/diagnostics<br \/>\nScript                s = 0<br \/>\nSerial Run            S = 0<br \/>\nUpgrade Mode active   M = 0<br \/>\nStart Phase           p = 0<br \/>\nEnd Phase             P = 0<br \/>\nLog Id                i = 0<br \/>\nRun in                c = 0<br \/>\nDo not run in         C = 0<br \/>\nEcho OFF              e = 1<br \/>\nNo Post Upgrade       x = 0<br \/>\nReverse Order         r = 0<br \/>\nOpen Mode Normal      o = 0<br \/>\nDebug catcon.pm       z = 0<br \/>\nDebug catctl.pl       Z = 0<br \/>\nDisplay Phases        y = 0<br \/>\nChild Process         I = 0<br \/>\n&nbsp;<br \/>\ncatctl.pl version: 12.1.0.2.0<br \/>\nOracle Base           = \/u01\/app\/oracle<br \/>\n&nbsp;<br \/>\nAnalyzing file catupgrd.sql<br \/>\nLog files in \/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_1\/diagnostics<br \/>\ncatcon: ALL catcon-related output will be written to \/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_1\/diagnostics\/catupgrd_catcon_10444.lst<br \/>\ncatcon: See \/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_1\/diagnostics\/catupgrd*.log files for output generated by scripts<br \/>\ncatcon: See \/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_1\/diagnostics\/catupgrd_*.lst files for spool files, if any<br \/>\nNumber of Cpus        = 4<br \/>\nSQL Process Count     = 4<br \/>\n&nbsp;<br \/>\n------------------------------------------------------<br \/>\nPhases [0-73]         Start Time:[2020_08_10 12:59:54]<br \/>\n------------------------------------------------------<br \/>\nSerial   Phase #: 0      Files: 1     Time: 33s<br \/>\nSerial   Phase #: 1      Files: 5     Time: 17s<br \/>\nRestart  Phase #: 2      Files: 1     Time: 1s<br \/>\nParallel Phase #: 3      Files: 18    Time: 3s<br \/>\nRestart  Phase #: 4      Files: 1     Time: 0s<br \/>\nSerial   Phase #: 5      Files: 5     Time: 8s<br \/>\n...<br \/>\n...<br \/>\n...<br \/>\nSerial   Phase #:71      Files: 1     Time: 0s<br \/>\nSerial   Phase #:72      Files: 1     Time: 0s<br \/>\nSerial   Phase #:73      Files: 1     Time: 23s<br \/>\n&nbsp;<br \/>\n------------------------------------------------------<br \/>\nPhases [0-73]         End Time:[2020_08_10 13:09:13]<br \/>\n------------------------------------------------------<br \/>\n...<br \/>\n...<br \/>\n...<\/code><\/p>\n<h5>Upgrade database configuration in oracle clusterware<\/h5>\n<p>Clusterware needs to be updated to have database configured on new oracle home :<br \/>\n<code>oracle@ODA-PRI:\/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_1\/diagnostics\/ [DB1] <strong>srvctl upgrade database -db DB1_RZA -oraclehome \/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_1<\/strong><br \/>\n&nbsp;<br \/>\noracle@ODA-PRI:\/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_1\/diagnostics\/ [DB1] <strong>srvctl config database -db DB1_RZA<\/strong><br \/>\nDatabase unique name: DB1_RZA<br \/>\nDatabase name: DB1<br \/>\nOracle home: \/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_1<br \/>\nOracle user: oracle<br \/>\nSpfile: \/u02\/app\/oracle\/oradata\/DB1_RZA\/dbs\/spfileDB1.ora<br \/>\nPassword file:<br \/>\nDomain:<br \/>\nStart options: open<br \/>\nStop options: immediate<br \/>\nDatabase role: PRIMARY<br \/>\nManagement policy: AUTOMATIC<br \/>\nServer pools:<br \/>\nDisk Groups:<br \/>\nMount point paths: \/u02\/app\/oracle\/oradata\/DB1_RZA,\/u03\/app\/oracle\/<br \/>\nServices:<br \/>\nType: SINGLE<br \/>\nOSDBA group: dba<br \/>\nOSOPER group: dbaoper<br \/>\nDatabase instance: DB1<br \/>\nConfigured nodes: oda-pri<br \/>\nDatabase is administrator managed<\/code><\/p>\n<p>\/etc\/oratab should be checked to ensure it&#8217;s reflect the same.<\/p>\n<h5>Startup the database<\/h5>\n<p><code>oracle@ODA-PRI:\/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_1\/diagnostics\/ [DB1] <strong>DB1<\/strong><br \/>\n********* dbi services Ltd. *********<br \/>\nSTATUS          : STOPPED<br \/>\n*************************************<br \/>\n&nbsp;<br \/>\noracle@ODA-PRI:\/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_1\/diagnostics\/ [DB1] <strong>srvctl start database -d DB1_RZA<\/strong><br \/>\n&nbsp;<br \/>\noracle@ODA-PRI:\/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_1\/diagnostics\/ [DB1] <strong>DB1<\/strong><br \/>\n********* dbi services Ltd. *********<br \/>\nSTATUS                 : OPEN<br \/>\nDB_UNIQUE_NAME         : DB1_RZA<br \/>\nOPEN_MODE              : READ WRITE<br \/>\nLOG_MODE               : ARCHIVELOG<br \/>\nDATABASE_ROLE          : PRIMARY<br \/>\nFLASHBACK_ON           : NO<br \/>\nFORCE_LOGGING          : YES<br \/>\nVERSION                : 12.1.0.2.0<br \/>\nCDB Enabled            : NO<br \/>\n*************************************<\/code><\/p>\n<h5>Run catuppst.sql<\/h5>\n<p><code>oracle@ODA-PRI:\/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_1\/diagnostics\/ [DB1] <strong>echo $ORACLE_HOME<\/strong><br \/>\n\/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_1<br \/>\n&nbsp;<br \/>\noracle@ODA-PRI:\/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_1\/diagnostics\/ [DB1] <strong>sqh<\/strong><br \/>\n&nbsp;<br \/>\nSQL*Plus: Release 12.1.0.2.0 Production on Mon Aug 10 13:27:33 2020<br \/>\n&nbsp;<br \/>\nCopyright (c) 1982, 2014, Oracle.  All rights reserved.<br \/>\n&nbsp;<br \/>\nConnected to:<br \/>\nOracle Database 12c Standard Edition Release 12.1.0.2.0 - 64bit Production<br \/>\nWith the Real Application Clusters option<br \/>\n&nbsp;<br \/>\nSQL&gt; <strong>@?\/rdbms\/admin\/catuppst.sql<\/strong><br \/>\n...<br \/>\n...<br \/>\n...<br \/>\nPL\/SQL procedure successfully completed.<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\nPL\/SQL procedure successfully completed.<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\nPL\/SQL procedure successfully completed.<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\nTIMESTAMP<br \/>\n--------------------------------------------------------------------------------<br \/>\nCOMP_TIMESTAMP POSTUP_END 2020-08-10 13:27:44<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\nSession altered.<br \/>\n&nbsp;<br \/>\nSQL&gt;<\/code><\/p>\n<h5>Check dba registry and invalid objects<\/h5>\n<p><code>SQL&gt; <strong>set line 300<\/strong><br \/>\nSQL&gt; <strong>col comp_name format a50<\/strong><br \/>\n&nbsp;<br \/>\nSQL&gt; <strong>select comp_name, status from dba_registry;<\/strong><br \/>\n&nbsp;<br \/>\nCOMP_NAME                                          STATUS<br \/>\n-------------------------------------------------- -----------<br \/>\nOracle Database Catalog Views                      UPGRADED<br \/>\nOracle Database Packages and Types                 UPGRADED<br \/>\nOracle Workspace Manager                           VALID<br \/>\nOracle XML Database                                VALID<br \/>\n&nbsp;<br \/>\nSQL&gt; <strong>SELECT count(*) FROM dba_invalid_objects;<\/strong><br \/>\n&nbsp;<br \/>\n  COUNT(*)<br \/>\n----------<br \/>\n      7768<\/code><\/p>\n<h5>Execute utlrp.sql<\/h5>\n<p>Execute utlrp.sql to recompile all objects :<br \/>\n<code>SQL&gt; <strong>@?\/rdbms\/admin\/utlrp.sql<\/strong><br \/>\n...<br \/>\n...<br \/>\n...<br \/>\nERRORS DURING RECOMPILATION<br \/>\n---------------------------<br \/>\n                          2<br \/>\n&nbsp;<br \/>\nFunction created.<br \/>\n&nbsp;<br \/>\nPL\/SQL procedure successfully completed.<br \/>\n&nbsp;<br \/>\nFunction dropped.<br \/>\n&nbsp;<br \/>\nPL\/SQL procedure successfully completed.<br \/>\n&nbsp;<br \/>\nSQL&gt; <strong>SELECT count(*) FROM dba_invalid_objects;<\/strong><br \/>\n&nbsp;<br \/>\n  COUNT(*)<br \/>\n----------<br \/>\n         2<br \/>\n&nbsp;<br \/>\nSQL&gt;<\/code><\/p>\n<h5>Run postupgrade_fixups.sql<\/h5>\n<p><code>SQL&gt; @\/u01\/app\/oracle\/cfgtoollogs\/DB1_RZA\/preupgrade\/postupgrade_fixups.sql<\/code><\/p>\n<h5>Gather statistics<\/h5>\n<p><code>SQL&gt; EXECUTE DBMS_STATS.GATHER_FIXED_OBJECTS_STATS;<\/code><\/p>\n<h5>Run post upgrade status tool<\/h5>\n<p><code>SQL&gt; @?\/rdbms\/admin\/utlu121s.sql<\/code><\/p>\n<h5>Solve invalid objects<\/h5>\n<p><code>SQL&gt; <strong>SELECT distinct object_name FROM dba_invalid_objects order by OBJECT_NAME;<\/strong><br \/>\n&nbsp;<br \/>\nOBJECT_NAME<br \/>\n--------------------------------------------------------------------------------------------------------------------------------<br \/>\nVIP_START_TRIGGER<br \/>\nVIP_STOP_TRIGGER<br \/>\n&nbsp;<br \/>\nSQL&gt; <strong>select owner,object_name, object_type, status from dba_objects where object_name in ('VIP_START_TRIGGER','VIP_STOP_TRIGGER')<\/strong>;<br \/>\n&nbsp;<br \/>\nOWNER                                                                                                                            OBJECT_NAME                                                   OBJECT_TYPE              STATUS<br \/>\n-------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------- ----------------------- -------<br \/>\nDBISERVICES                                                                                                                      VIP_START_TRIGGER                                             TRIGGER                  INVALID<br \/>\nDBISERVICES                                                                                                                      VIP_STOP_TRIGGER                                              TRIGGER                  INVALID<\/code><\/p>\n<p>Both triggers have been created again.<\/p>\n<h5>Check dba registry and invalid objects<\/h5>\n<p><code>SQL&gt; <strong>set line 300<\/strong><br \/>\nSQL&gt; <strong>col comp_name format a50<\/strong><br \/>\nSQL&gt; <strong>select comp_name, version, status from dba_registry;<\/strong><br \/>\n&nbsp;<br \/>\nCOMP_NAME                                          VERSION                        STATUS<br \/>\n-------------------------------------------------- ------------------------------ -----------<br \/>\nOracle Database Catalog Views                      12.1.0.2.0                     VALID<br \/>\nOracle Database Packages and Types                 12.1.0.2.0                     VALID<br \/>\nOracle Workspace Manager                           12.1.0.2.0                     VALID<br \/>\nOracle XML Database                                12.1.0.2.0                     VALID<br \/>\n&nbsp;<br \/>\nSQL&gt; <strong>SELECT count(*) FROM dba_invalid_objects;<\/strong><br \/>\n&nbsp;<br \/>\n  COUNT(*)<br \/>\n----------<br \/>\n         0<br \/>\n&nbsp;<br \/>\nSQL&gt; <strong>@?\/rdbms\/admin\/utluiobj.sql<\/strong><br \/>\n.<br \/>\nOracle Database 12.1 Post-Upgrade Invalid Objects Tool 08-10-2020 13:39:45<br \/>\n.<br \/>\nThis tool lists post-upgrade invalid objects that were not invalid<br \/>\nprior to upgrade (it ignores pre-existing pre-upgrade invalid objects).<br \/>\n.<br \/>\nOwner                     Object Name                     Object Type<br \/>\n.<br \/>\n&nbsp;<br \/>\nPL\/SQL procedure successfully completed.<br \/>\n&nbsp;<br \/>\nSQL&gt;<\/code><\/p>\n<h5>Upgrade time zone<\/h5>\n<p>Time zones have been upgraded with oracle script : upg_tzv_check.sql and upg_tzv_apply.sql<br \/>\n<code>SQL&gt; <strong>select version from v$timezone_file;<\/strong><br \/>\n&nbsp;<br \/>\n   VERSION<br \/>\n----------<br \/>\n        34<\/code><\/p>\n<h5>Check data patch<\/h5>\n<p><code>SQL&gt; <strong>select PATCH_ID, VERSION from DBA_REGISTRY_SQLPATCH;<\/strong><br \/>\n&nbsp;<br \/>\n  PATCH_ID VERSION<br \/>\n---------- --------------------<br \/>\n  30691015 12.1.0.2<br \/>\n  30805558 12.1.0.2<\/code><\/p>\n<h5>Set compatible parameter value to 12.1.0<\/h5>\n<p><code>SQL&gt; <strong>show parameter compatible<\/strong><br \/>\n&nbsp;<br \/>\nNAME                                 TYPE        VALUE<br \/>\n------------------------------------ ----------- ------------------------------<br \/>\ncompatible                           string      11.2.0.0.0<br \/>\nnoncdb_compatible                    boolean     FALSE<br \/>\n&nbsp;<br \/>\nSQL&gt; <strong>show spparameter compatibl<\/strong>e<br \/>\n&nbsp;<br \/>\nSID      NAME                          TYPE        VALUE<br \/>\n-------- ----------------------------- ----------- ----------------------------<br \/>\n*        compatible                    string      11.2.0.0.0<br \/>\n*        noncdb_compatible             boolean<br \/>\n&nbsp;<br \/>\nSQL&gt; <strong>alter system set compatible='12.1.0' scope=spfile;<\/strong><br \/>\n&nbsp;<br \/>\nSystem altered.<\/code><\/p>\n<h5>Restart database with grid<\/h5>\n<p><code>oracle@ODA-PRI:\/home\/oracle\/mwagner\/upgrade_TZ\/ [DB1] <strong>srvctl stop database -d DB1_RZA<\/strong><br \/>\n&nbsp;<br \/>\noracle@ODA-PRI:\/home\/oracle\/mwagner\/upgrade_TZ\/ [DB1] <strong>DB1<\/strong><br \/>\n********* dbi services Ltd. *********<br \/>\nSTATUS          : STOPPED<br \/>\n*************************************<br \/>\n&nbsp;<br \/>\noracle@ODA-PRI:\/home\/oracle\/mwagner\/upgrade_TZ\/ [DB1] <strong>srvctl start database -d DB1_RZA<\/strong><br \/>\n&nbsp;<br \/>\noracle@ODA-PRI:\/home\/oracle\/mwagner\/upgrade_TZ\/ [DB1] <strong>DB1<\/strong><br \/>\n********* dbi services Ltd. *********<br \/>\nSTATUS                 : OPEN<br \/>\nDB_UNIQUE_NAME         : DB1_RZA<br \/>\nOPEN_MODE              : READ WRITE<br \/>\nLOG_MODE               : ARCHIVELOG<br \/>\nDATABASE_ROLE          : PRIMARY<br \/>\nFLASHBACK_ON           : NO<br \/>\nFORCE_LOGGING          : YES<br \/>\nVERSION                : 12.1.0.2.0<br \/>\nCDB Enabled            : NO<br \/>\n*************************************<\/code><\/p>\n<h5>Update registry metadata<\/h5>\n<p>To get the primary ODA registry metadata updated with the manual upgrade, I used odacli update-registry command. See my other <a href=\"https:\/\/www.dbi-services.com\/blog\/how-to-synchronize-the-appliance-registry-metadata-on-an-oda\/\">blog <\/a>for more details.<\/p>\n<p><code>[root@ODA-PRI upgrade3]# <strong>odacli list-dbhomes<\/strong><br \/>\n&nbsp;<br \/>\nID                                       Name                 DB Version                               Home Location                                 Status<br \/>\n---------------------------------------- -------------------- ---------------------------------------- --------------------------------------------- ----------<br \/>\nd6df9457-e4cd-4c39-b3cb-8d03be3c4598     OraDB11204_home1     11.2.0.4.190115                          \/u01\/app\/oracle\/product\/11.2.0.4\/dbhome_1     Configured<br \/>\n9d2d92d0-3b98-42ac-9f39-9bd6deeb2e16     OraDB19000_home1     19.7.0.0.200414                          \/u01\/app\/oracle\/product\/19.0.0.0\/dbhome_1     Configured<br \/>\n73847823-ae83-4bf0-a630-f8884cf4387a     OraDB12102_home1     12.1.0.2.200414                          \/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_1     Configured<br \/>\n&nbsp;<br \/>\n[root@ODA-PRI upgrade3]# <strong>odacli list-databases<\/strong><br \/>\n&nbsp;<br \/>\nID                                       DB Name    DB Type  DB Version           CDB        Class    Shape    Storage    Status        DbHomeID<br \/>\n---------------------------------------- ---------- -------- -------------------- ---------- -------- -------- ---------- ------------ ----------------------------------------<br \/>\nd897e7d6-9e2d-45e4-a0d7-a1e232d47f16     DB1        Si       11.2.0.4.190115      false      Oltp     Odb1     Acfs       Configured   d6df9457-e4cd-4c39-b3cb-8d03be3c4598<br \/>\n&nbsp;<br \/>\n[root@ODA-PRI log]# <strong>odacli update-registry -n db -f<\/strong><br \/>\n&nbsp;<br \/>\nJob details<br \/>\n----------------------------------------------------------------<br \/>\n                     ID:  2dbada8a-f76d-44bb-bb6e-c507d52e5ae3<br \/>\n            Description:  Discover Components : db<br \/>\n                 Status:  Created<br \/>\n                Created:  August 10, 2020 1:58:37 PM CEST<br \/>\n                Message:<br \/>\n&nbsp;<br \/>\nTask Name                                Start Time                          End Time                            Status<br \/>\n---------------------------------------- ----------------------------------- ----------------------------------- ----------<br \/>\n&nbsp;<br \/>\n[root@ODA-PRI log]# <strong>odacli describe-job -i 2dbada8a-f76d-44bb-bb6e-c507d52e5ae3<\/strong><br \/>\n&nbsp;<br \/>\nJob details<br \/>\n----------------------------------------------------------------<br \/>\n                     ID:  2dbada8a-f76d-44bb-bb6e-c507d52e5ae3<br \/>\n            Description:  Discover Components : db<br \/>\n                 Status:  Success<br \/>\n                Created:  August 10, 2020 1:58:37 PM CEST<br \/>\n                Message:<br \/>\n&nbsp;<br \/>\nTask Name                                Start Time                          End Time                            Status<br \/>\n---------------------------------------- ----------------------------------- ----------------------------------- ----------<br \/>\nRediscover DBHome                        August 10, 2020 1:58:37 PM CEST     August 10, 2020 1:58:39 PM CEST     Success<br \/>\nRediscover DBHome                        August 10, 2020 1:58:39 PM CEST     August 10, 2020 1:58:41 PM CEST     Success<br \/>\nRediscover DBHome                        August 10, 2020 1:58:41 PM CEST     August 10, 2020 1:58:48 PM CEST     Success<br \/>\nDiscover DBHome                          August 10, 2020 1:58:48 PM CEST     August 10, 2020 1:58:48 PM CEST     Success<br \/>\nRediscover DB: DB1_RZA                 August 10, 2020 1:59:41 PM CEST     August 10, 2020 1:59:51 PM CEST     Success<br \/>\n&nbsp;<br \/>\n[root@ODA-PRI log]# <strong>odacli list-databases<\/strong><br \/>\n&nbsp;<br \/>\nID                                       DB Name    DB Type  DB Version           CDB        Class    Shape    Storage    Status        DbHomeID<br \/>\n---------------------------------------- ---------- -------- -------------------- ---------- -------- -------- ---------- ------------ ----------------------------------------<br \/>\nd897e7d6-9e2d-45e4-a0d7-a1e232d47f16     DB1        Si       12.1.0.2.200414      false      Oltp     Odb1     Acfs       Configured   73847823-ae83-4bf0-a630-f8884cf4387a<\/code><\/p>\n<h5>Update network (tnsnames.ora and listener.ora for statistcs entries)<\/h5>\n<p>tnsnames.ora file is specific to each Oracle home. Therefore it is needed to copy previous 11.2.0.4 tnsnames.ora file to new 12.1.0.2 home (if any).<br \/>\nlistener.ora file needs to be updated with new home for each static entries.<\/p>\n<h3>8- Start the application<\/h3>\n<p>The application can now be started. The session can be listed using same commands as in the part 3-Stop the application.<\/p>\n<h3>9- Test the application<\/h3>\n<p>The application needs to be tested. In case there is any critical issue and rollback of the operation is needed, we can use the standby and do a failover. Later the old upgraded primary will have to be deleted in order to create it again as standby. If all is ok, we can move forward and get the standby on the same stand.<\/p>\n<h3>10- Move the standby database to the new home<\/h3>\n<p>I checked homes :<br \/>\n<code>[root@ODA-STD patchs]# <strong>odacli list-dbhomes<\/strong><br \/>\n&nbsp;<br \/>\nID                                       Name                 DB Version                               Home Location                                 Status<br \/>\n---------------------------------------- -------------------- ---------------------------------------- --------------------------------------------- ----------<br \/>\nc58cdcfd-e5b2-4041-b993-8df5a5d5ada4     OraDB11204_home1     11.2.0.4.190115                          \/u01\/app\/oracle\/product\/11.2.0.4\/dbhome_1     Configured<br \/>\nb45cfba8-f891-469e-9b45-be1e3e2e010c     OraDB12201_home1     12.2.0.1.190115                          \/u01\/app\/oracle\/product\/12.2.0.1\/dbhome_1     Configured<br \/>\n60c9afb9-4bfe-4a11-bb96-ea43adf74f3d     OraDB12102_home2     12.1.0.2.200414                          \/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_2     Configured<\/code><\/p>\n<p>Standby database has been stopped at the beginning of the process and is still stopped. I moved init and password file from 11.2.0.4 to 12.1.0.2 home :<br \/>\n<code>oracle@ODA-STD:\/home\/oracle\/ [DB1] <strong>cdh<\/strong><br \/>\noracle@ODA-STD:\/u01\/app\/oracle\/product\/11.2.0.4\/dbhome_1\/ [DB1]<strong> cd dbs<\/strong><br \/>\noracle@ODA-STD:\/u01\/app\/oracle\/product\/11.2.0.4\/dbhome_1\/dbs\/ [DB1] <strong>ls *DB1*<\/strong><br \/>\nhc_DB1.dat  initDB1.ora  initDB1.ora.old  orapwDB1<br \/>\noracle@ODA-STD:\/u01\/app\/oracle\/product\/11.2.0.4\/dbhome_1\/dbs\/ [DB1] <strong>cp -p initDB1.ora \/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_2\/dbs<\/strong><br \/>\noracle@ODA-STD:\/u01\/app\/oracle\/product\/11.2.0.4\/dbhome_1\/dbs\/ [DB1] <strong>cp -p orapwDB1 \/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_2\/dbs<\/strong><br \/>\noracle@ODA-STD:\/u01\/app\/oracle\/product\/11.2.0.4\/dbhome_1\/dbs\/ [DB1] <strong>mv initDB1.ora initDB1.ora.off<\/strong><br \/>\noracle@ODA-STD:\/u01\/app\/oracle\/product\/11.2.0.4\/dbhome_1\/dbs\/ [DB1] <strong>mv orapwDB1 orapwDB1.off<\/strong><\/code><\/p>\n<p>Of course tnsnames.ora file will have to be moved as well if any is used. The listener.ora will have to be updated for any static entries if used. This was not my case.<\/p>\n<h3>11- Upgrade the standby database in the clusterware<\/h3>\n<p>I upgraded the database in the clusterware :<br \/>\n<code>oracle@ODA-STD:\/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_2\/network\/admin\/ [DB1] <strong>which srvctl<\/strong><br \/>\n\/u01\/app\/oracle\/product\/11.2.0.4\/dbhome_1\/bin\/srvctl<br \/>\n&nbsp;<br \/>\noracle@ODA-STD:\/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_2\/network\/admin\/ [DB1] <strong>\/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_2\/bin\/srvctl upgrade database -db DB1_RZB -oraclehome \/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_2<\/strong><br \/>\n&nbsp;<br \/>\noracle@ODA-STD:\/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_2\/ [DB1] <strong>srvctl config database -d DB1_RZB<\/strong><br \/>\nDatabase unique name: DB1_RZB<br \/>\nDatabase name: DB1<br \/>\nOracle home: \/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_2<br \/>\nOracle user: oracle<br \/>\nSpfile: \/u02\/app\/oracle\/oradata\/DB1_RZB\/dbs\/spfileDB1.ora<br \/>\nPassword file:<br \/>\nDomain:<br \/>\nStart options: mount<br \/>\nStop options: abort<br \/>\nDatabase role: PHYSICAL_STANDBY<br \/>\nManagement policy: AUTOMATIC<br \/>\nServer pools:<br \/>\nDisk Groups:<br \/>\nMount point paths: \/u02\/app\/oracle\/oradata\/DB1_RZB,\/u03\/app\/oracle\/<br \/>\nServices:<br \/>\nType: SINGLE<br \/>\nOSDBA group: dba<br \/>\nOSOPER group: dbaoper<br \/>\nDatabase instance: DB1<br \/>\nConfigured nodes: oda-std<br \/>\nDatabase is administrator managed<\/code><\/p>\n<p>I updated \/etc\/oratab accordingly as it was not done by srvctl :<br \/>\n<code>oracle@ODA-STD:\/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_2\/network\/admin\/ [DB1] <strong>grep DB1 \/etc\/oratab<\/strong><br \/>\nDB1:\/u01\/app\/oracle\/product\/11.2.0.4\/dbhome_1:N               # line added by Agent<br \/>\noracle@ODA-STD:\/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_2\/network\/admin\/ [DB1] <strong>vi \/etc\/oratab<\/strong><br \/>\noracle@ODA-STD:\/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_2\/network\/admin\/ [DB1] <strong>grep DB1 \/etc\/oratab<\/strong><br \/>\nDB1:\/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_2:N               # line added by Agent<\/code><\/p>\n<h3>12- Set compatible parameter to 12.1.0 on the standby database<\/h3>\n<p><code>SQL&gt; <strong>alter system set compatible='12.1.0' scope=spfile;<\/strong><br \/>\n&nbsp;<br \/>\nSystem altered.<\/code><\/p>\n<h3>13- Start the standby database<\/h3>\n<p><code>oracle@ODA-STD:\/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_2\/ [DB1] <strong>srvctl status database -d DB1_RZB<\/strong><br \/>\nInstance DB1 is not running on node rzb-oda02<br \/>\n&nbsp;<br \/>\noracle@ODA-STD:\/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_2\/ [DB1] <strong>srvctl start database -d DB1_RZB<\/strong><br \/>\n&nbsp;<br \/>\noracle@ODA-STD:\/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_2\/ [DB1] <strong>srvctl status database -d DB1_RZB<\/strong><br \/>\nInstance DB1 is running on node rzb-oda02<br \/>\n&nbsp;<br \/>\noracle@ODA-STD:\/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_2\/ [DB1] <strong>DB1<\/strong><br \/>\n********* dbi services Ltd. *********<br \/>\nSTATUS                 : MOUNTED<br \/>\nDB_UNIQUE_NAME         : DB1_RZB<br \/>\nOPEN_MODE              : MOUNTED<br \/>\nLOG_MODE               : ARCHIVELOG<br \/>\nDATABASE_ROLE          : PHYSICAL STANDBY<br \/>\nFLASHBACK_ON           : NO<br \/>\nFORCE_LOGGING          : YES<br \/>\nCDB Enabled            : NO<br \/>\n*************************************<\/code><\/p>\n<h3>14- Update the registry metadata on the ODA<\/h3>\n<p>I used odacli update-registry command to update the ODA registry metadata :<br \/>\n<code>[root@ODA-STD patchs]# <strong>odacli list-dbhomes<\/strong><br \/>\n&nbsp;<br \/>\nID                                       Name                 DB Version                               Home Location                                 Status<br \/>\n---------------------------------------- -------------------- ---------------------------------------- --------------------------------------------- ----------<br \/>\nc58cdcfd-e5b2-4041-b993-8df5a5d5ada4     OraDB11204_home1     11.2.0.4.190115                          \/u01\/app\/oracle\/product\/11.2.0.4\/dbhome_1     Configured<br \/>\nb45cfba8-f891-469e-9b45-be1e3e2e010c     OraDB12201_home1     12.2.0.1.190115                          \/u01\/app\/oracle\/product\/12.2.0.1\/dbhome_1     Configured<br \/>\n60c9afb9-4bfe-4a11-bb96-ea43adf74f3d     OraDB12102_home2     12.1.0.2.200414                          \/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_2     Configured<br \/>\n&nbsp;<br \/>\n[root@ODA-STD patchs]# <strong>odacli list-databases<\/strong><br \/>\n&nbsp;<br \/>\nID                                       DB Name    DB Type  DB Version           CDB        Class    Shape    Storage    Status        DbHomeID<br \/>\n---------------------------------------- ---------- -------- -------------------- ---------- -------- -------- ---------- ------------ ----------------------------------------<br \/>\nb15def96-a259-4d3a-a26d-71381142c0bc     DB1        Si       11.2.0.4.190115      false      Oltp     Odb1     Acfs       Configured   c58cdcfd-e5b2-4041-b993-8df5a5d5ada4<br \/>\n&nbsp;<br \/>\n[root@ODA-STD patchs]# <strong>odacli update-registry -n db -f<\/strong><br \/>\n&nbsp;<br \/>\nJob details<br \/>\n----------------------------------------------------------------<br \/>\n                     ID:  f7f9c86b-2a2f-46bc-8195-9f6a76a42cde<br \/>\n            Description:  Discover Components : db<br \/>\n                 Status:  Created<br \/>\n                Created:  August 10, 2020 3:46:41 PM CEST<br \/>\n                Message:<br \/>\n&nbsp;<br \/>\nTask Name                                Start Time                          End Time                            Status<br \/>\n---------------------------------------- ----------------------------------- ----------------------------------- ----------<br \/>\n&nbsp;<br \/>\n[root@ODA-STD patchs]# <strong>odacli describe-job -i f7f9c86b-2a2f-46bc-8195-9f6a76a42cde<\/strong><br \/>\n&nbsp;<br \/>\nJob details<br \/>\n----------------------------------------------------------------<br \/>\n                     ID:  f7f9c86b-2a2f-46bc-8195-9f6a76a42cde<br \/>\n            Description:  Discover Components : db<br \/>\n                 Status:  Success<br \/>\n                Created:  August 10, 2020 3:46:41 PM CEST<br \/>\n                Message:<br \/>\n&nbsp;<br \/>\nTask Name                                Start Time                          End Time                            Status<br \/>\n---------------------------------------- ----------------------------------- ----------------------------------- ----------<br \/>\nRediscover DBHome                        August 10, 2020 3:46:41 PM CEST     August 10, 2020 3:46:43 PM CEST     Success<br \/>\nRediscover DBHome                        August 10, 2020 3:46:43 PM CEST     August 10, 2020 3:46:45 PM CEST     Success<br \/>\nRediscover DBHome                        August 10, 2020 3:46:45 PM CEST     August 10, 2020 3:46:48 PM CEST     Success<br \/>\nRediscover DB: DB1_RZB                   August 10, 2020 3:47:15 PM CEST     August 10, 2020 3:47:21 PM CEST     Success<br \/>\n&nbsp;<br \/>\n[root@ODA-STD patchs]#<strong> odacli list-databases<\/strong><br \/>\n&nbsp;<br \/>\nID                                       DB Name    DB Type  DB Version           CDB        Class    Shape    Storage    Status        DbHomeID<br \/>\n---------------------------------------- ---------- -------- -------------------- ---------- -------- -------- ---------- ------------ ----------------------------------------<br \/>\nb15def96-a259-4d3a-a26d-71381142c0bc     DB1        Si       12.1.0.2.200414      false      Oltp     Odb1     Acfs       Configured   60c9afb9-4bfe-4a11-bb96-ea43adf74f3d<\/code><\/p>\n<h3>15- Start the log shippment again from the primary to the standby<\/h3>\n<h4>High availability with Data Guard<\/h4>\n<p>In case FSFO is used, you will need to enable it again :<br \/>\n<code>DGMGRL&gt; enable fast_start failover<br \/>\nDisabled.<\/code><\/p>\n<p>You will need to set the protection mode back to the previous one (example maxavailability) :<br \/>\n<code>DGMGRL&gt; edit configuration set protection mode as maxavailability;<br \/>\nSucceeded.<\/code><\/p>\n<p>You will need to start applying the change vector on the standby :<br \/>\n<code>DGMGRL&gt; edit database DB1_RZB set state=apply-on;<br \/>\nSucceeded.<\/code><\/p>\n<p>You will need to start shipping the change vector on the primary :<br \/>\n<code>DGMGRL&gt; edit database DB1_RZA set state=transport-on;<br \/>\nSucceeded.<\/code><\/p>\n<p>Check that there is no gap on the standby :<br \/>\n<code>DGMGRL&gt; <strong>show database DB1_RZB<\/strong><br \/>\n&nbsp;<br \/>\nDatabase - DB1_RZB<br \/>\n&nbsp;<br \/>\n  Role:               PHYSICAL STANDBY<br \/>\n  Intended State:     APPLY-ON<br \/>\n  Transport Lag:      0 seconds (computed 1 second ago)<br \/>\n  Apply Lag:          0 seconds (computed 1 second ago)<br \/>\n  Average Apply Rate: 4.00 KByte\/s<br \/>\n  Real Time Query:    OFF<br \/>\n  Instance(s):<br \/>\n    DB1<br \/>\n&nbsp;<br \/>\nDatabase Status:<br \/>\nSUCCESS<\/code><\/p>\n<p>What is mandatory is to have no transport lag and no apply lag :<br \/>\n<code>Transport Lag:      0 seconds (computed 1 second ago)<br \/>\nApply Lag:          0 seconds (computed 1 second ago)<\/code><\/p>\n<h4>High availability with dbvisit<\/h4>\n<p>First of all the ORACLE_HOME and ORACLE_HOME_DR variables of the dbvisit DDC configuration file need to be updated with new and appropriate ORACLE_HOME. This is done on the primary side. In my case \/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_1 (variable ORACLE_HOME) for the primary and \/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_2 for the standby (variable ORACLE_HOME_DR). The option -C from dbvctl can be used to synchronized the standby DDC configuration file afterwards :<br \/>\n<code>oracle@ODA_PRI:\/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_1\/ [KLIPOLYP] cd \/u01\/app\/dbvisit\/standby\/conf\/<br \/>\n&nbsp;<br \/>\noracle@ODA_PRI:\/u01\/app\/dbvisit\/standby\/conf\/ [KLIPOLYP] cp -p dbv_DB1.env dbv_DB1.env.20201021<br \/>\n&nbsp;<br \/>\noracle@ODA_PRI:\/u01\/app\/dbvisit\/standby\/conf\/ [DB1] vi dbv_DB1.env<br \/>\n&nbsp;<br \/>\noracle@ODA_PRI:\/u01\/app\/dbvisit\/standby\/conf\/ [DB1] diff dbv_DB1.env dbv_DB1.env.20201021<br \/>\n56c56<br \/>\n ORACLE_HOME = \/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_1<br \/>\n---<br \/>\n ORACLE_HOME = \/u01\/app\/oracle\/product\/11.2.0.4\/dbhome_1<br \/>\n95c95<br \/>\n ORACLE_HOME_DR = \/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_2<br \/>\n---<br \/>\n ORACLE_HOME_DR = \/u01\/app\/oracle\/product\/11.2.0.4\/dbhome_1<br \/>\n&nbsp;<br \/>\noracle@ODA_PRI:\/u01\/app\/dbvisit\/standby\/conf\/ [DB1] \/u01\/app\/dbvisit\/standby\/dbvctl -d DB1 -C<br \/>\n=============================================================<br \/>\nDbvisit Standby Database Technology (9.0.02_0_gbd40c486) (pid 88389)<br \/>\ndbvctl started on ODA_PRI: Wed Oct 21 11:15:35 2020<br \/>\n=============================================================<br \/>\n&nbsp;<br \/>\n&gt;&gt;&gt; Dbvisit Standby configurational differences found between ODA_PRI and ODA_STD.<br \/>\n    Synchronised.<br \/>\n&nbsp;<br \/>\n=============================================================<br \/>\ndbvctl ended on ODA_PRI: Wed Oct 21 11:15:38 2020<br \/>\n=============================================================<\/code><\/p>\n<p>Archive log shippment is done through the linux crontab. Purpose is then to activate again it on both the primary and the standby database using crontab -e command.<\/p>\n<p>On the primary :<br \/>\n<code>00,10,20,30,40,50 * * * * \/u01\/app\/dbvisit\/standby\/dbvctl -d DB1 &gt;\/tmp\/dbvisit_apply_logs_DB1.log 2&gt;&amp;1<\/code><\/p>\n<p>On the standby :<br \/>\n<code>05,15,25,35,45,55 * * * * \/u01\/app\/dbvisit\/standby\/dbvctl -d DB1 &gt;\/tmp\/dbvisit_apply_logs_DB1.log 2&gt;&amp;1<\/code><\/p>\n<p>Use dbvctl command with option -i to ensure there is no gap. DB1 would be the name of my DDC configuration file :<br \/>\n<code>oracle@ODA-PRI:\/home\/oracle\/ [DB1] <strong>\/u01\/app\/dbvisit\/standby\/dbvctl -d DB1 -i<\/strong><br \/>\n=============================================================<br \/>\nDbvisit Standby Database Technology (9.0.02_0_gbd40c486) (pid 84500)<br \/>\ndbvctl started on ODA-PRI: Mon Aug 10 17:26:53 2020<br \/>\n=============================================================<br \/>\n&nbsp;<br \/>\nDbvisit Standby log gap report for DB1_RZA at 202008101726:<br \/>\n-------------------------------------------------------------<br \/>\nDescription       | SCN          | Timestamp<br \/>\n-------------------------------------------------------------<br \/>\nSource              13140834499    2020-08-10:17:26:55 +02:00<br \/>\nDestination         13140828019    2020-08-10:16:59:35 +02:00<br \/>\n&nbsp;<br \/>\nStandby database time lag (DAYS-HH:MI:SS): +00:27:20<br \/>\n&nbsp;<br \/>\nReport for Thread 1<br \/>\n-------------------<br \/>\nSOURCE<br \/>\nCurrent Sequence 52884<br \/>\nLast Archived Sequence 52883<br \/>\nLast Transferred Sequence 52883<br \/>\nLast Transferred Timestamp 2020-08-10 17:22:56<br \/>\n&nbsp;<br \/>\nDESTINATION<br \/>\nRecovery Sequence 52884<br \/>\n&nbsp;<br \/>\nTransfer Log Gap 0<br \/>\nApply Log Gap 0<br \/>\n&nbsp;<br \/>\n=============================================================<br \/>\ndbvctl ended on ODA-PRI: Mon Aug 10 17:26:59 2020<br \/>\n=============================================================<\/code><\/p>\n<p>Mandatory is to have no gap :<br \/>\n<code>Transfer Log Gap 0<br \/>\nApply Log Gap 0<\/code><\/p>\n<h3>16- Test a switchover<\/h3>\n<p>A switchover can be later tested to ensure everything is working properly.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Through this blog, I would like to show, with a real customer case, how I have been migrating databases in High Availability environment on an ODA. High Availability using Data Guard for Oracle Enterprise Edition or dbvisit for Oracle Standard Edition 2. One of the advantage here would be to use the Standby Database as [&hellip;]<\/p>\n","protected":false},"author":48,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[59],"tags":[221,2058,372,871,79],"type_dbi":[],"class_list":["post-14478","post","type-post","status-publish","format-standard","hentry","category-oracle","tag-data-guard","tag-database-migration","tag-dbvisit","tag-ha","tag-oda"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>How to migrate High Availability databases on an ODA? - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/how-to-migrate-high-availability-databases-on-an-oda\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to migrate High Availability databases on an ODA?\" \/>\n<meta property=\"og:description\" content=\"Through this blog, I would like to show, with a real customer case, how I have been migrating databases in High Availability environment on an ODA. High Availability using Data Guard for Oracle Enterprise Edition or dbvisit for Oracle Standard Edition 2. One of the advantage here would be to use the Standby Database as [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/how-to-migrate-high-availability-databases-on-an-oda\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-09-25T13:59:39+00:00\" \/>\n<meta name=\"author\" content=\"Marc Wagner\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Marc Wagner\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"36 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/how-to-migrate-high-availability-databases-on-an-oda\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/how-to-migrate-high-availability-databases-on-an-oda\/\"},\"author\":{\"name\":\"Marc Wagner\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/225d9884b8467ead9a872823acb14628\"},\"headline\":\"How to migrate High Availability databases on an ODA?\",\"datePublished\":\"2020-09-25T13:59:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/how-to-migrate-high-availability-databases-on-an-oda\/\"},\"wordCount\":1905,\"commentCount\":0,\"keywords\":[\"Data Guard\",\"database migration\",\"dbvisit\",\"HA\",\"ODA\"],\"articleSection\":[\"Oracle\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/how-to-migrate-high-availability-databases-on-an-oda\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/how-to-migrate-high-availability-databases-on-an-oda\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/how-to-migrate-high-availability-databases-on-an-oda\/\",\"name\":\"How to migrate High Availability databases on an ODA? - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2020-09-25T13:59:39+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/225d9884b8467ead9a872823acb14628\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/how-to-migrate-high-availability-databases-on-an-oda\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/how-to-migrate-high-availability-databases-on-an-oda\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/how-to-migrate-high-availability-databases-on-an-oda\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to migrate High Availability databases on an ODA?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/225d9884b8467ead9a872823acb14628\",\"name\":\"Marc Wagner\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/a873cc6e7fbdbbcbdbcaf5dbded14ad9a77b2ec2c3e03b4d724ed33d35d5f328?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a873cc6e7fbdbbcbdbcaf5dbded14ad9a77b2ec2c3e03b4d724ed33d35d5f328?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a873cc6e7fbdbbcbdbcaf5dbded14ad9a77b2ec2c3e03b4d724ed33d35d5f328?s=96&d=mm&r=g\",\"caption\":\"Marc Wagner\"},\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/marc-wagner\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How to migrate High Availability databases on an ODA? - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/how-to-migrate-high-availability-databases-on-an-oda\/","og_locale":"en_US","og_type":"article","og_title":"How to migrate High Availability databases on an ODA?","og_description":"Through this blog, I would like to show, with a real customer case, how I have been migrating databases in High Availability environment on an ODA. High Availability using Data Guard for Oracle Enterprise Edition or dbvisit for Oracle Standard Edition 2. One of the advantage here would be to use the Standby Database as [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/how-to-migrate-high-availability-databases-on-an-oda\/","og_site_name":"dbi Blog","article_published_time":"2020-09-25T13:59:39+00:00","author":"Marc Wagner","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Marc Wagner","Est. reading time":"36 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/how-to-migrate-high-availability-databases-on-an-oda\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/how-to-migrate-high-availability-databases-on-an-oda\/"},"author":{"name":"Marc Wagner","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/225d9884b8467ead9a872823acb14628"},"headline":"How to migrate High Availability databases on an ODA?","datePublished":"2020-09-25T13:59:39+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/how-to-migrate-high-availability-databases-on-an-oda\/"},"wordCount":1905,"commentCount":0,"keywords":["Data Guard","database migration","dbvisit","HA","ODA"],"articleSection":["Oracle"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/how-to-migrate-high-availability-databases-on-an-oda\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/how-to-migrate-high-availability-databases-on-an-oda\/","url":"https:\/\/www.dbi-services.com\/blog\/how-to-migrate-high-availability-databases-on-an-oda\/","name":"How to migrate High Availability databases on an ODA? - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2020-09-25T13:59:39+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/225d9884b8467ead9a872823acb14628"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/how-to-migrate-high-availability-databases-on-an-oda\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/how-to-migrate-high-availability-databases-on-an-oda\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/how-to-migrate-high-availability-databases-on-an-oda\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to migrate High Availability databases on an ODA?"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/225d9884b8467ead9a872823acb14628","name":"Marc Wagner","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/a873cc6e7fbdbbcbdbcaf5dbded14ad9a77b2ec2c3e03b4d724ed33d35d5f328?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a873cc6e7fbdbbcbdbcaf5dbded14ad9a77b2ec2c3e03b4d724ed33d35d5f328?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a873cc6e7fbdbbcbdbcaf5dbded14ad9a77b2ec2c3e03b4d724ed33d35d5f328?s=96&d=mm&r=g","caption":"Marc Wagner"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/marc-wagner\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/14478","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/48"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=14478"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/14478\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=14478"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=14478"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=14478"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=14478"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}