Introduction

Oracle Database Appliance has a global patch available each quarter, so all the components can be patched together on a regular basis. Most of the time, applying the patch on your ODA will be OK, but sometimes you will struggle for multiple reasons. If you don’t apply patch frequently for example. Or if your ODA is heavily tuned. Or if your configuration is partially done manually. For those being not able anymore to correctly apply the patch, the only way of patching was to do a complete reimaging of the ODA, but it’s time consuming as all databases need to be restored.

19.15 brought a new feature called “Data Preserving Reprovisioning”: like patching, it does not need a restore of all your databases, and like reimaging, your system is reistalled from scratch. This sounds like the best option for most of us.

Limits

Data Preserving Reprovisioning (DPR) is limited to very old versions: 12.1.2.12, 12.2.1.4, 18.3, 18.5, 18.7, and 18.8. It may get increased compatibility in future versions.

How does it work?

Reimaging normally implies to wipe out the data disks before, but this is not more mandatory. You can keep your databases on disk, extract the metadata of your ODA setup, reimage your appliance and then remap the databases to your fresh install. This is a kind of unplug/plug of your ODA configuration.

My test environment

I’m lucky to have an X8-2M I can play with. And the first thing I did is a reimaging to 18.8. X8 came along 19c, but also supports 18.8.

For sure, I had to do a cleanup deploy before reimaging (this ODA was already using 19.15), and I struggled with reimaging because partition map prevent reimaging at first tries (probably because those partitions were created for Linux 7, and I put back a Linux 6 so the partition manager called by Anaconda didn’t recognize them). I solved the problem by starting a normal Linux 7 setup (with an Oracle Linux ISO not dedicated to ODA) and removing all partitions from the disks.

On this 18.8 environment, I deployed 2 DB homes, 18.8 and 12.1. I created 3 databases on it.

odacli describe-component
System Version
---------------
18.8.0.0.0

Component                                Installed Version    Available Version
---------------------------------------- -------------------- --------------------
OAK                                       18.8.0.0.0            up-to-date
DB {
[ OraDB18000_home1 ]                      18.8.0.0.191015       up-to-date
[ OraDB12102_home1 ]                      12.1.0.2.191015       up-to-date
}
DCSAGENT                                  18.8.0.0.0            up-to-date
ILOM                                      5.0.2.24.r141466      4.0.4.38.a.r132148
BIOS                                      52050300              52020500
OS                                        6.10                  up-to-date
FIRMWARECONTROLLER                        VDV1RL04              vdv1rl02
FIRMWAREDISK                              1132                  1102

odacli list-databases

ID                                       DB Name    DB Type  DB Version           CDB        Class    Shape    Storage    Status        DbHomeID
---------------------------------------- ---------- -------- -------------------- ---------- -------- -------- ---------- ------------ ----------------------------------------
0681df5a-498e-4bb3-8b1e-a5464e891a56     TSTNOC18   Si       18.8.0.0.191015      false      Oltp     Odb6     Acfs       Configured   3eac70f5-6510-4c7c-bf5b-ed938dc60aa1
59ada2fe-cf7d-4fe6-b34b-496f611ab13e     TSTC18     Si       18.8.0.0.191015      true       Oltp     Odb2     Asm        Configured   3eac70f5-6510-4c7c-bf5b-ed938dc60aa1
cc44fae8-e508-4b6d-87ee-257b4c48bed8     TSTNOC12   Si       12.1.0.2.191015      false      Oltp     Odb4     Acfs       Configured   8dbba7de-4348-4c61-a171-f7413d30bc14

I didn’t do further changes on this system.

DPR from 18.8 to 19.15: detach the node

First step is to detach your configuration, this is like unplugging a PDB. You will need this additional tool from MOS:

Patch 33594115: DATA PRESERVING REPROVISIONING: UPLOAD ODA UPGRADE UTILITY ZIP TO ARU

Unzip the files and run the precheck:

cd /opt/dbi/
unzip p33594115_1915000_Linux-x86-64.zip
unzip -d /opt/oracle odaupgradeutil_220530.zip
cd /opt/oracle/odaupgradeutil/
./odaupgradeutil run-prechecks

Initializing...
########################## ODAUPGRADEUTIL - INIT - BEGIN ##########################
Please check /opt/oracle/oak/restore/log/odaupgradeutil_init_22-07-2022_11:06:55.log for details.
Get System Version...BEGIN
System Version is: 18.8.0.0.0
Get System Version...DONE
Get Hardware Info...BEGIN
Hardware Model: X8-2, Hardware Platform: M
Get Hardware Info...DONE
Get Grid home...BEGIN
Grid Home is: /u01/app/18.0.0.0/grid
Get Grid home...DONE
Get system configuration details...BEGIN
Grid user is: grid
Oracle user is: oracle
Get system configuration details...DONE
########################## ODAUPGRADEUTIL - INIT - END ##########################
*********
IMPORTANT
*********
odaupgradeutil will bring down the databases and grid services on the system.
The files that belong to the databases, which are stored on ASM or ACFS,
are left intact on the storage. The databases will be started up back after
re-imaging the ODA system using 'odacli restore-node' commands.
As a good precautionary measure, please backup all the databases on the
system before you start this process. Do not store the backup on this ODA
machine since the local file system will be wiped out as part of the re-image.
*********
IMPORTANT
*********
########################## ODAUPGRADEUTIL - PRECHECKS - BEGIN ##########################
Please check /opt/oracle/oak/restore/log/odaupgradeutil_prechecks_22-07-2022_11:07:15.log for details.
System version precheck...BEGIN
System version precheck...PASSED
System config precheck...BEGIN
System config precheck...PASSED
Required Files precheck...BEGIN
Required Files precheck...PASSED
Need to discover DB homes
Get Database homes...BEGIN
Get Database homes...SUCCESS
Disk space precheck...BEGIN
Get Quorum Disks...BEGIN
Get Quorum Disks...SUCCESS
Disk space precheck...PASSED
DCS Agent status precheck...BEGIN
DCS Agent status precheck...PASSED
OAK precheck...BEGIN
OAK precheck...PASSED
ASM precheck...BEGIN
ASM precheck...PASSED
Database precheck...BEGIN
Get databases...BEGIN
  Database Name: TSTNOC18
  Oracle Home: /u01/app/oracle/product/18.0.0.0/dbhome_1
  Database Name: TSTC18
  Oracle Home: /u01/app/oracle/product/18.0.0.0/dbhome_1
  Database Name: TSTNOC12
  Oracle Home: /u01/app/oracle/product/12.1.0.2/dbhome_1
Get databases...SUCCESS
Database precheck...PASSED
Audit Files precheck...BEGIN
Audit Files precheck...WARNING
Custom RPMs precheck...BEGIN
Custom RPMs precheck...PASSED
########################## ODAUPGRADEUTIL - PRECHECKS - END ##########################
Use 'odaupgradeutil describe-precheck-report [-j]' to view the precheck report.

If something is wrong, you can probably try to solve the problem and do a precheck again.

Once precheck is OK, you can detach:

./odaupgradeutil detach-node
*********
IMPORTANT
*********
odaupgradeutil will bring down the databases and grid services on the system.
The files that belong to the databases, which are stored on ASM or ACFS,
are left intact on the storage. The databases will be started up back after
re-imaging the ODA system using 'odacli restore-node' commands.
As a good precautionary measure, please backup all the databases on the
system before you start this process. Do not store the backup on this ODA
machine since the local file system will be wiped out as part of the re-image.
*********
IMPORTANT
*********
Do you want to continue? [y/n]: y
########################## ODAUPGRADEUTIL - SAVECONF - BEGIN ##########################
Please check /opt/oracle/oak/restore/log/odaupgradeutil_saveconf_22-07-2022_11:13:47.log for details.
Backup files to /opt/oracle/oak/restore/bkp...BEGIN
Backup files to /opt/oracle/oak/restore/bkp...SUCCESS
Get provision instance...BEGIN
Get provision instance...SUCCESS
Get network configuration...BEGIN
Get network configuration...SUCCESS
Get databases...BEGIN
  Database Name: TSTNOC18
  Oracle Home: /u01/app/oracle/product/18.0.0.0/dbhome_1
  Database Name: TSTC18
  Oracle Home: /u01/app/oracle/product/18.0.0.0/dbhome_1
  Database Name: TSTNOC12
  Oracle Home: /u01/app/oracle/product/12.1.0.2/dbhome_1
Get databases...SUCCESS
Get Database homes...BEGIN
  Checking Unified Auditing for dbhome '/u01/app/oracle/product/18.0.0.0/dbhome_1'
  Unified Auditing is set to TRUE
  Checking Unified Auditing for dbhome '/u01/app/oracle/product/12.1.0.2/dbhome_1'
  Unified Auditing is set to TRUE
Get Database homes...SUCCESS
Get Database storages...BEGIN
  Database Name: TSTNOC18
    DATA destination: /u02/app/oracle/oradata/TSTNOC18/
    RECO destination: /u03/app/oracle/fast_recovery_area/
    REDO destination: /u04/app/oracle/redo/TSTNOC18/
    Flash Cache destination:
  Database Name: TSTC18
    DATA destination: +DATA
    RECO destination: +RECO
    REDO destination: +RECO
    Flash Cache destination:
  Database Name: TSTNOC12
    DATA destination: /u02/app/oracle/oradata/TSTNOC12
    RECO destination: /u03/app/oracle/fast_recovery_area/
    REDO destination: /u04/app/oracle/redo/TSTNOC12/
    Flash Cache destination:
Get Database storages...SUCCESS
Get Volumes...BEGIN
Get Volumes...SUCCESS
Get Filesystems...BEGIN
Get Filesystems...SUCCESS
Get Quorum Disks...BEGIN
Get Quorum Disks...SUCCESS
SAVECONF: SUCCESS
########################## ODAUPGRADEUTIL - SAVECONF - END ##########################
########################## ODAUPGRADEUTIL - DETACHNODE - BEGIN ##########################
Please check /opt/oracle/oak/restore/log/odaupgradeutil_detachnode_22-07-2022_11:15:01.log for details.
Deconfigure databases...BEGIN
  Database Name: TSTNOC18
  Local Instance: TSTNOC18
  Local Instance Status: RUNNING
  Stopping database 'TSTNOC18'...
  Removing database 'TSTNOC18' from CRS...
  Database Name: TSTC18
  Local Instance: TSTC18
  Local Instance Status: RUNNING
  Stopping database 'TSTC18'...
  Removing database 'TSTC18' from CRS...
  Database Name: TSTNOC12
  Local Instance: TSTNOC12
  Local Instance Status: RUNNING
  Stopping database 'TSTNOC12'...
  Removing database 'TSTNOC12' from CRS...
Deconfigure databases...SUCCESS
Get DB backup metadata...BEGIN
No backupconfigs found
No backupreports found
Quorum Disks were found
  Quorum disk '/dev/SSD_QRMDSK_p1' is 1024 MB in size, no resizing needed
  Quorum disk '/dev/SSD_QRMDSK_p2' is 1024 MB in size, no resizing needed
Deconfigure Grid Infrastructure...BEGIN
Deconfigure Grid Infrastructure...SUCCESS
Backup quorum disks...
  Backing up quorum disk '/dev/SSD_QRMDSK_p1'
  Backing up quorum disk '/dev/SSD_QRMDSK_p2'
Create serverarchives...BEGIN
  Serverarchive '/opt/oracle/oak/restore/out/serverarchive_dbi-oda-x8.zip' created
  Size = 365741 bytes
  SHA256 checksum = a272187c6dfd248d4c03a6e793154e3d0ba3a2b002430e9ad0b7adf4b2c19598
Create serverarchives...DONE
DETACHNODE: SUCCESS
[CRITICAL] Server data archive file(s) generated at /opt/oracle/oak/restore/out . Please ensure the file(s) are copied outside the ODA system and preserved.
########################## ODAUPGRADEUTIL - DETACHNODE - END ##########################

Backup the generated files on a secure place outside the appliance. Basically there is 1 file for a lite ODA, 3 files for an HA ODA.

ls -lrt /opt/oracle/oak/restore/out/
total 368
-rw------- 1 root root     65 Jul 22 11:21 serverarchive_dbi-oda-x8.zip.sha256
-rw-r--r-- 1 root root 365741 Jul 22 11:21 serverarchive_dbi-oda-x8.zip

cp /opt/oracle/oak/restore/out/serverarchive* /backup/oda-dpr

DPR from 18.8 to 19.15: reimage the node

You won’t do a cleanup.pl prior reimaging as for normal reimaging.

Reimaging is very easy, first you need to connect the 19.15 ISO from the ILOM console, then choose CDROM for next boot, then do a power cycle. You will need to do that on each node for an HA ODA.

Reimaging takes about 50 minutes to complete.

Once done, your ODA is no more reachable on the network, because no network configuration exists on your system.

DPR from 18.8 to 19.15: configure firstnet

After reimaging is finished, you can connect through ILOM console with root/welcome1. First step after a normal reimaging is the configure firstnet, this is the same here. If you don’t remember your network settings, you can find them in the backup files:

unzip serverarchive_dbi-oda-x8.zip
cd restore/
ls
bkp			configure-firstnet.rsp	init.params		log			metadata		prechecks
cat configure-firstnet.rsp
# To be used for configure-firstnet post reimage
HOSTNAME=dbi-oda-x8
INTERFACE_NAME=btbond1
VLAN=NO
IP_ADDR=10.36.0.241
SUBNET_MASK=255.255.255.0
GATEWAY=10.36.0.1

DPR from 18.8 to 19.15: patch the microcodes

This is not my case in this particular example, but if you come from 18.8 or older versions, your microcodes are probably old and never had an update. Do the check, and if some microcodes need an update, you should apply the server and/or storage patch on top of your fresh reimaging. Download the 19.15 patch, register it and apply the patch on both server and storage:

Patch 34069644: ORACLE DATABASE APPLIANCE 19.15.0.0.0 SERVER PATCH FOR ALL ODACLI/DCS STACK

odacli describe-component | grep -v ^$
...
unzip p34069644_1915000_Linux-x86-64.zip
odacli update-repository -f /opt/dbi/oda-sm-19.15.0.0.0-220530-server.zip

odacli create-prepatchreport -v 19.15.0.0.0 -s
odacli update-server -v 19.15.0.0.0
odacli update-storage -v 19.15.0.0.0
odacli describe-component | grep -v ^$
...

DPR from 18.8 to 19.15: reprovision the appliance

Now the interesting part is coming. Put back the backup files and register them in the ODA repository, unzip and register the GI clone 19.15, and do a restore node with the -g (grid) option:

odacli update-repository -f /opt/dbi/serverarchive_dbi-oda-x8.zip
cd /opt/dbi
unzip p30403673_1915000_Linux-x86-64.zip
odacli update-repository -f /opt/dbi/odacli-dcs-19.15.0.0.0-220425-GI-19.15.0.0.zip

odacli list-jobs

ID                                       Description                                                                 Created                             Status
---------------------------------------- --------------------------------------------------------------------------- ----------------------------------- ----------
82782a81-d8a2-4266-9074-9160f3f1b7bb     Repository Update                                                           July 22, 2022 12:00:43 PM UTC       Success
8e60a4ef-04d2-4985-a69b-1ef768da16f9     Repository Update                                                           July 22, 2022 12:10:43 PM UTC       Success

odacli restore-node -g
Enter new system password:
Retype new system password:
Enter an initial password for Web Console account (oda-admin):
Retype the password for Web Console account (oda-admin):
User 'oda-admin' created successfully...
{
  "jobId" : "2f7a5cdc-9de7-412a-8107-552fd4980909",
  "status" : "Created",
  "message" : "The system will reboot, if required, to enable the licensed number of CPU cores",
  "reports" : [ ],
  "createTimestamp" : "July 22, 2022 12:14:19 PM UTC",
  "resourceList" : [ ],
  "description" : "Restore node service - GI",
  "updatedTime" : "July 22, 2022 12:14:19 PM UTC"
}

odacli describe-job -i 2f7a5cdc-9de7-412a-8107-552fd4980909

Job details
----------------------------------------------------------------
                     ID:  2f7a5cdc-9de7-412a-8107-552fd4980909
            Description:  Restore node service - GI
                 Status:  Success
                Created:  July 22, 2022 12:14:19 PM CEST
                Message:  The system will reboot, if required, to enable the licensed number of CPU cores

Task Name                                Start Time                          End Time                            Status
---------------------------------------- ----------------------------------- ----------------------------------- ----------
Restore node service creation            July 22, 2022 12:14:28 PM CEST      July 22, 2022 12:38:26 PM CEST      Success
Setting up Network                       July 22, 2022 12:14:29 PM CEST      July 22, 2022 12:14:29 PM CEST      Success
Setting up Vlan                          July 22, 2022 12:14:48 PM CEST      July 22, 2022 12:14:48 PM CEST      Success
Setting up Network                       July 22, 2022 12:15:08 PM CEST      July 22, 2022 12:15:08 PM CEST      Success
network update                           July 22, 2022 12:15:32 PM CEST      July 22, 2022 12:15:51 PM CEST      Success
updating network                         July 22, 2022 12:15:32 PM CEST      July 22, 2022 12:15:51 PM CEST      Success
Setting up Network                       July 22, 2022 12:15:32 PM CEST      July 22, 2022 12:15:32 PM CEST      Success
OS usergroup 'asmdba'creation            July 22, 2022 12:15:52 PM CEST      July 22, 2022 12:15:52 PM CEST      Success
OS usergroup 'asmoper'creation           July 22, 2022 12:15:52 PM CEST      July 22, 2022 12:15:52 PM CEST      Success
OS usergroup 'asmadmin'creation          July 22, 2022 12:15:52 PM CEST      July 22, 2022 12:15:52 PM CEST      Success
OS usergroup 'dba'creation               July 22, 2022 12:15:52 PM CEST      July 22, 2022 12:15:52 PM CEST      Success
OS usergroup 'dbaoper'creation           July 22, 2022 12:15:52 PM CEST      July 22, 2022 12:15:52 PM CEST      Success
OS usergroup 'oinstall'creation          July 22, 2022 12:15:52 PM CEST      July 22, 2022 12:15:52 PM CEST      Success
OS user 'grid'creation                   July 22, 2022 12:15:52 PM CEST      July 22, 2022 12:15:52 PM CEST      Success
OS user 'oracle'creation                 July 22, 2022 12:15:52 PM CEST      July 22, 2022 12:15:52 PM CEST      Success
Default backup policy creation           July 22, 2022 12:15:52 PM CEST      July 22, 2022 12:15:52 PM CEST      Success
Backup config metadata persist           July 22, 2022 12:15:52 PM CEST      July 22, 2022 12:15:52 PM CEST      Success
Grant permission to RHP files            July 22, 2022 12:15:52 PM CEST      July 22, 2022 12:15:52 PM CEST      Success
Add SYSNAME in Env                       July 22, 2022 12:15:52 PM CEST      July 22, 2022 12:15:52 PM CEST      Success
Install oracle-ahf                       July 22, 2022 12:15:52 PM CEST      July 22, 2022 12:16:53 PM CEST      Success
Stop DCS Admin                           July 22, 2022 12:16:55 PM CEST      July 22, 2022 12:16:55 PM CEST      Success
Generate mTLS certificates               July 22, 2022 12:16:55 PM CEST      July 22, 2022 12:16:56 PM CEST      Success
Exporting Public Keys                    July 22, 2022 12:16:56 PM CEST      July 22, 2022 12:16:58 PM CEST      Success
Creating Trust Store                     July 22, 2022 12:16:58 PM CEST      July 22, 2022 12:16:59 PM CEST      Success
Update config files                      July 22, 2022 12:16:59 PM CEST      July 22, 2022 12:17:00 PM CEST      Success
Restart DCS Admin                        July 22, 2022 12:17:00 PM CEST      July 22, 2022 12:17:20 PM CEST      Success
Unzipping storage configuration files    July 22, 2022 12:17:20 PM CEST      July 22, 2022 12:17:20 PM CEST      Success
Reloading multipath devices              July 22, 2022 12:17:20 PM CEST      July 22, 2022 12:17:20 PM CEST      Success
restart oakd                             July 22, 2022 12:17:20 PM CEST      July 22, 2022 12:17:31 PM CEST      Success
Reloading multipath devices              July 22, 2022 12:18:32 PM CEST      July 22, 2022 12:18:32 PM CEST      Success
restart oakd                             July 22, 2022 12:18:32 PM CEST      July 22, 2022 12:18:42 PM CEST      Success
Restore Quorum Disks                     July 22, 2022 12:18:42 PM CEST      July 22, 2022 12:18:43 PM CEST      Success
Creating GI home directories             July 22, 2022 12:18:43 PM CEST      July 22, 2022 12:18:43 PM CEST      Success
Extract GI clone                         July 22, 2022 12:18:43 PM CEST      July 22, 2022 12:20:15 PM CEST      Success
Creating wallet for Root User            July 22, 2022 12:20:15 PM CEST      July 22, 2022 12:20:20 PM CEST      Success
Creating wallet for ASM Client           July 22, 2022 12:20:20 PM CEST      July 22, 2022 12:20:23 PM CEST      Success
Grid stack creation                      July 22, 2022 12:20:24 PM CEST      July 22, 2022 12:31:53 PM CEST      Success
GI Restore with RHP                      July 22, 2022 12:20:24 PM CEST      July 22, 2022 12:28:32 PM CEST      Success
Updating GIHome version                  July 22, 2022 12:28:33 PM CEST      July 22, 2022 12:28:36 PM CEST      Success
Post cluster OAKD configuration          July 22, 2022 12:31:53 PM CEST      July 22, 2022 12:34:16 PM CEST      Success
Mounting disk group DATA                 July 22, 2022 12:34:16 PM CEST      July 22, 2022 12:34:17 PM CEST      Success
Mounting disk group RECO                 July 22, 2022 12:34:25 PM CEST      July 22, 2022 12:34:33 PM CEST      Success
Setting ACL for disk groups              July 22, 2022 12:34:40 PM CEST      July 22, 2022 12:34:44 PM CEST      Success
Register Scan and Vips to Public Network July 22, 2022 12:34:44 PM CEST      July 22, 2022 12:34:46 PM CEST      Success
Configure export clones resource         July 22, 2022 12:35:40 PM CEST      July 22, 2022 12:35:41 PM CEST      Success
Adding Volume COMMONSTORE to Clusterware July 22, 2022 12:35:43 PM CEST      July 22, 2022 12:35:47 PM CEST      Success
Adding Volume DATTSTNOC12 to Clusterware July 22, 2022 12:35:47 PM CEST      July 22, 2022 12:35:50 PM CEST      Success
Adding Volume DATTSTNOC18 to Clusterware July 22, 2022 12:35:50 PM CEST      July 22, 2022 12:35:54 PM CEST      Success
Adding Volume RDOTSTNOC12 to Clusterware July 22, 2022 12:35:54 PM CEST      July 22, 2022 12:35:57 PM CEST      Success
Adding Volume RDOTSTNOC18 to Clusterware July 22, 2022 12:35:57 PM CEST      July 22, 2022 12:36:01 PM CEST      Success
Adding Volume RECO to Clusterware        July 22, 2022 12:36:01 PM CEST      July 22, 2022 12:36:04 PM CEST      Success
Enabling Volume(s)                       July 22, 2022 12:36:04 PM CEST      July 22, 2022 12:37:16 PM CEST      Success
Provisioning service creation            July 22, 2022 12:38:25 PM CEST      July 22, 2022 12:38:25 PM CEST      Success
persist new agent state entry            July 22, 2022 12:38:25 PM CEST      July 22, 2022 12:38:25 PM CEST      Success
persist new agent state entry            July 22, 2022 12:38:25 PM CEST      July 22, 2022 12:38:25 PM CEST      Success
Restart Zookeeper and DCS Agent          July 22, 2022 12:38:25 PM CEST      July 22, 2022 12:38:26 PM CEST      Success

df -h /dev/asm/*
Filesystem                Size  Used Avail Use% Mounted on
/dev/asm/acfsclone-207    150G  7.0G  144G   5% /opt/oracle/oak/pkgrepos/orapkgs/clones
/dev/asm/commonstore-207  5.0G  319M  4.7G   7% /opt/oracle/dcs/commonstore
/dev/asm/dattstnoc12-207  100G  2.2G   98G   3% /u02/app/oracle/oradata/TSTNOC12
/dev/asm/dattstnoc18-207  100G  2.1G   98G   3% /u02/app/oracle/oradata/TSTNOC18
/dev/asm/rdotstnoc12-158   14G   13G  1.7G  88% /u04/app/oracle/redo/TSTNOC12
/dev/asm/rdotstnoc18-158   29G   25G  4.7G  84% /u04/app/oracle/redo/TSTNOC18
/dev/asm/reco-158         297G  976M  297G   1% /u03/app/oracle

su - grid
asmcmd ls +data/TSTC18/datafile/*
SYSAUX.271.1110706283
SYSTEM.270.1110706247
UNDOTBS1.272.1110706299
USERS.283.1110707033

exit

My ACFS and ASM files are there.

DPR from 18.8 to 19.15: reprovision the DB homes and remap the databases

I now need the DB clones files to be deployed. If you remember, I had 2x 18.8 databases, and 1x 12.1 database. Required clone files can be found in a list:

cat /opt/oracle/oak/restore/metadata/dbVersions.list
# List of all db versions found, to be used for downloading required clones before DB restore
18.8.0.0.191015
12.1.0.2.191015

I will use DB clones coming from my 18.8.

I first need to create the dbhome storage:

odacli configure-dbhome-storage -dg DATA -s 80

And add the DB clones to the repository:

unzip p23494992_188000_Linux-x86-64.zip
odacli update-repository -f /opt/dbi/odacli-dcs-18.8.0.0.0-191226-DB-12.1.0.2.zip

unzip p27604558_188000_Linux-x86-64.zip
odacli update-repository -f /opt/dbi/odacli-dcs-18.8.0.0.0-191226-DB-18.0.0.0.zip

Now it’s possible to remap the database to the DB homes with the restore-node -d (database):

odacli restore-node -d

odacli describe-job -i 4b579397-2c93-420a-846b-5a2aebe71d32

Job details
----------------------------------------------------------------
                     ID:  4b579397-2c93-420a-846b-5a2aebe71d32
            Description:  Restore node service - Database
                 Status:  Success
                Created:  July 22, 2022 4:36:29 PM CEST
                Message:

Task Name                                Start Time                          End Time                            Status
---------------------------------------- ----------------------------------- ----------------------------------- ----------
Setting up ssh equivalance               July 22, 2022 4:36:49 PM CEST       July 22, 2022 4:36:49 PM CEST       Success
DB home creation: OraDB18000_home1       July 22, 2022 4:36:50 PM CEST       July 22, 2022 4:39:31 PM CEST       Success
Validating dbHome available space        July 22, 2022 4:36:50 PM CEST       July 22, 2022 4:36:50 PM CEST       Success
Creating DbHome Directory                July 22, 2022 4:36:50 PM CEST       July 22, 2022 4:36:50 PM CEST       Success
Create required directories              July 22, 2022 4:36:50 PM CEST       July 22, 2022 4:36:50 PM CEST       Success
Extract DB clone                         July 22, 2022 4:36:50 PM CEST       July 22, 2022 4:38:15 PM CEST       Success
ProvDbHome by using RHP                  July 22, 2022 4:38:15 PM CEST       July 22, 2022 4:39:12 PM CEST       Success
Enable DB options                        July 22, 2022 4:39:13 PM CEST       July 22, 2022 4:39:29 PM CEST       Success
Creating wallet for DB Client            July 22, 2022 4:39:31 PM CEST       July 22, 2022 4:39:31 PM CEST       Success
DB home creation: OraDB12102_home1       July 22, 2022 4:39:31 PM CEST       July 22, 2022 4:42:47 PM CEST       Success
Validating dbHome available space        July 22, 2022 4:39:31 PM CEST       July 22, 2022 4:39:31 PM CEST       Success
Creating DbHome Directory                July 22, 2022 4:39:31 PM CEST       July 22, 2022 4:39:31 PM CEST       Success
Create required directories              July 22, 2022 4:39:31 PM CEST       July 22, 2022 4:39:31 PM CEST       Success
Extract DB clone                         July 22, 2022 4:39:31 PM CEST       July 22, 2022 4:41:02 PM CEST       Success
ProvDbHome by using RHP                  July 22, 2022 4:41:02 PM CEST       July 22, 2022 4:42:30 PM CEST       Success
Enable DB options                        July 22, 2022 4:42:30 PM CEST       July 22, 2022 4:42:40 PM CEST       Success
Creating wallet for DB Client            July 22, 2022 4:42:46 PM CEST       July 22, 2022 4:42:47 PM CEST       Success
Persist database storage locations       July 22, 2022 4:42:47 PM CEST       July 22, 2022 4:42:47 PM CEST       Success
  Save metadata for TSTNOC18             July 22, 2022 4:42:47 PM CEST       July 22, 2022 4:42:47 PM CEST       Success
  Save metadata for TSTC18               July 22, 2022 4:42:47 PM CEST       July 22, 2022 4:42:47 PM CEST       Success
  Save metadata for TSTNOC12             July 22, 2022 4:42:47 PM CEST       July 22, 2022 4:42:47 PM CEST       Success
Persist database storages                July 22, 2022 4:42:47 PM CEST       July 22, 2022 4:42:47 PM CEST       Success
  Save metadata for TSTNOC18             July 22, 2022 4:42:47 PM CEST       July 22, 2022 4:42:47 PM CEST       Success
  Save metadata for TSTC18               July 22, 2022 4:42:47 PM CEST       July 22, 2022 4:42:47 PM CEST       Success
  Save metadata for TSTNOC12             July 22, 2022 4:42:47 PM CEST       July 22, 2022 4:42:47 PM CEST       Success
Restore database: TSTNOC18               July 22, 2022 4:42:47 PM CEST       July 22, 2022 4:44:11 PM CEST       Success
  Adding database TSTNOC18 to GI         July 22, 2022 4:42:47 PM CEST       July 22, 2022 4:42:49 PM CEST       Success
  Adding database instance(s) to GI      July 22, 2022 4:42:49 PM CEST       July 22, 2022 4:42:49 PM CEST       Success
  Modifying SPFILE for database          July 22, 2022 4:42:49 PM CEST       July 22, 2022 4:43:33 PM CEST       Success
  Restore password file for database     July 22, 2022 4:43:33 PM CEST       July 22, 2022 4:43:34 PM CEST       Success
  Start instance(s) for database         July 22, 2022 4:43:34 PM CEST       July 22, 2022 4:43:52 PM CEST       Success
  Persist metadata for database          July 22, 2022 4:43:52 PM CEST       July 22, 2022 4:43:52 PM CEST       Success
  Clear all listeners from Database      July 22, 2022 4:43:52 PM CEST       July 22, 2022 4:43:53 PM CEST       Success
  Run SqlPatch                           July 22, 2022 4:43:56 PM CEST       July 22, 2022 4:44:11 PM CEST       Success
Restore database: TSTC18                 July 22, 2022 4:44:11 PM CEST       July 22, 2022 4:46:05 PM CEST       Success
  Adding database TSTC18 to GI           July 22, 2022 4:44:11 PM CEST       July 22, 2022 4:44:13 PM CEST       Success
  Adding database instance(s) to GI      July 22, 2022 4:44:13 PM CEST       July 22, 2022 4:44:13 PM CEST       Success
  Modifying SPFILE for database          July 22, 2022 4:44:13 PM CEST       July 22, 2022 4:45:05 PM CEST       Success
  Restore password file for database     July 22, 2022 4:45:05 PM CEST       July 22, 2022 4:45:05 PM CEST       Success
  Start instance(s) for database         July 22, 2022 4:45:05 PM CEST       July 22, 2022 4:45:28 PM CEST       Success
  Persist metadata for database          July 22, 2022 4:45:28 PM CEST       July 22, 2022 4:45:28 PM CEST       Success
  Clear all listeners from Database      July 22, 2022 4:45:28 PM CEST       July 22, 2022 4:45:29 PM CEST       Success
  Run SqlPatch                           July 22, 2022 4:45:32 PM CEST       July 22, 2022 4:46:05 PM CEST       Success
Restore database: TSTNOC12               July 22, 2022 4:46:05 PM CEST       July 22, 2022 4:47:38 PM CEST       Success
  Adding database TSTNOC12 to GI         July 22, 2022 4:46:05 PM CEST       July 22, 2022 4:46:07 PM CEST       Success
  Adding database instance(s) to GI      July 22, 2022 4:46:07 PM CEST       July 22, 2022 4:46:07 PM CEST       Success
  Modifying SPFILE for database          July 22, 2022 4:46:07 PM CEST       July 22, 2022 4:46:40 PM CEST       Success
  Restore password file for database     July 22, 2022 4:46:40 PM CEST       July 22, 2022 4:46:41 PM CEST       Success
  Start instance(s) for database         July 22, 2022 4:46:41 PM CEST       July 22, 2022 4:46:59 PM CEST       Success
  Persist metadata for database          July 22, 2022 4:46:59 PM CEST       July 22, 2022 4:46:59 PM CEST       Success
  Clear all listeners from Database      July 22, 2022 4:46:59 PM CEST       July 22, 2022 4:47:00 PM CEST       Success
  Run SqlPatch                           July 22, 2022 4:47:03 PM CEST       July 22, 2022 4:47:38 PM CEST       Success
Restore Object Stores                    July 22, 2022 4:47:38 PM CEST       July 22, 2022 4:47:38 PM CEST       Success
Remount NFS backups                      July 22, 2022 4:47:38 PM CEST       July 22, 2022 4:47:38 PM CEST       Success
Restore BackupConfigs                    July 22, 2022 4:47:38 PM CEST       July 22, 2022 4:47:38 PM CEST       Success
Reattach backupconfigs to DBs            July 22, 2022 4:47:38 PM CEST       July 22, 2022 4:47:39 PM CEST       Success
Restore backup reports                   July 22, 2022 4:47:39 PM CEST       July 22, 2022 4:47:39 PM CEST       Success

Everything looks OK.

Let’s check databases and pmons:

odacli list-databases

ID                                       DB Name    DB Type  DB Version           CDB        Class    Shape    Storage    Status        DbHomeID
---------------------------------------- ---------- -------- -------------------- ---------- -------- -------- ---------- ------------ ----------------------------------------
0a06b4a6-29a4-41e9-bd38-f1f2984f3590     TSTNOC18   SI       18.8.0.0.191015      false      OLTP     odb6     ACFS       CONFIGURED   3514b78c-a1c8-42dd-a9b7-ff13d5a496fe
35895ff7-f485-43d9-8877-bdc0a872a4bf     TSTC18     SI       18.8.0.0.191015      true       OLTP     odb2     ASM        CONFIGURED   3514b78c-a1c8-42dd-a9b7-ff13d5a496fe
9c18400f-403c-4a6b-b0f7-7ec8bd7d4c87     TSTNOC12   SI       12.1.0.2.191015      false      OLTP     odb4     ACFS       CONFIGURED   3b00a7ce-bdb4-4d4c-8153-9dac8dff6e61

ps -ef | grep pmon | grep -v grep
oracle     547     1  0 16:45 ?        00:00:00 ora_pmon_TSTC18
grid      6986     1  0 14:30 ?        00:00:00 asm_pmon_+ASM1
oracle   13404     1  0 16:46 ?        00:00:00 ora_pmon_TSTNOC12
grid     31490     1  0 14:35 ?        00:00:00 apx_pmon_+APX1
oracle   87126     1  0 16:43 ?        00:00:00 ora_pmon_TSTNOC18

Perfect!

I would recommend deploying newest DB homes and migrating your databases to get rid of these old versions.

Conclusion

This feature is really convenient, and it works. It’s definitely cleaner than patching, and faster than a complete reimaging. I just hope this will be possible for all starting version in the next releases. For now, I’ve no plan to use it because most of the ODAs I work on are now already using 19.x. Those using old versions are also running on old hardware.