Neste post demonstro como criar um novo DB Home em um DB System OCI, utilizando o dbcli. O procedimento pode ser utilizado para clonar o DB Home no mesmo ambiente, ou levá-lo para outro DB System (demonstrado neste post).
No DB System de origem, veja se já existe um DB Home compactado no diretório padrão utilizado pelo dbcli:
# ls -l /opt/oracle/oak/pkgrepos/orapkgs/clones/
total 6781164
-rw-r--r-- 1 root root 6943905979 Feb 19 11:10 db121.210119.tar.gz
Caso não exista um DB Home previamente compactado nesse diretório ou caso o diretório não exista, pode criá-lo manualmente:
# mkdir -p /opt/oracle/oak/pkgrepos/orapkgs/clones/
# cd /u01/app/oracle/product/12.1.0.2/dbhome_1/
# tar -czf /opt/oracle/oak/pkgrepos/orapkgs/clones/db121.210119.tar.gz .
Sobre o padrão da nomeclatura do arquivo:
db = Database
121 = Versão 12cR1
210119 = Data de lançamento de Release Update (pode ser consultado com $ORACLE_HOME/OPatch/opatch lspatches)
Feito isso, já podemos clonar o DB Home neste mesmo DB System, mas eu irei copiar esse arquivo para um outro DB System.
No DB System de destino, crie o diretório padrão, caso ele ainda não exista:
# mkdir -p /opt/oracle/oak/pkgrepos/orapkgs/clones/
Copie o DB Home .tar.gz do DB System de Origem para o Destino utilizando qualquer método disponível no seu cenário, aqui estou utilizando um NFS compartilhado entre os 2 servidores.
Na Origem:
# cp /opt/oracle/oak/pkgrepos/orapkgs/clones/db121.210119.tar.gz /nfs_temp/
No Destino, copiando o arquivo do NFS para o local padrão utilizado pelo dbcli:
# cp /nfs_temp/db121.210119.tar.gz /opt/oracle/oak/pkgrepos/orapkgs/clones/
Criando um novo DB Home via dbcli:
# dbcli create-dbhome --version 12.1.0.2.210119
Job details
----------------------------------------------------------------
ID: d8aa0d14-5b6e-4e32-9066-7f2aebbd1378
Description: Database Home creation with Id : 4ff3d010-c1df-4d7a-98a7-24475c71e9cb
Status: Created
Created: June 7, 2021 6:25:40 PM BRT
Progress: 0%
Message: Create Database Home
Task Name Start Time End Time Status
------------------------------------------------------------------------ ----------------------------------- ----------------------------------- ----------
Monitorando o progresso:
# dbcli describe-job -i d8aa0d14-5b6e-4e32-9066-7f2aebbd1378
Job details
----------------------------------------------------------------
ID: d8aa0d14-5b6e-4e32-9066-7f2aebbd1378
Description: Database Home creation with Id : 4ff3d010-c1df-4d7a-98a7-24475c71e9cb
Status: Running
Created: June 7, 2021 6:25:40 PM BRT
Progress: 94%
Message: Create Database Home
Task Name Start Time End Time Status
------------------------------------------------------------------------ ----------------------------------- ----------------------------------- ----------
Database home creation June 7, 2021 6:25:41 PM BRT June 7, 2021 6:25:41 PM BRT Running

Tendo concluído, temos agora um DB Home adicional no DB System:
# dbcli list-dbhomes
ID Name DB Version Home Location Status
---------------------------------------- -------------------- ---------------------------------------- --------------------------------------------- ----------
4fbb3f07-b109-4005-a5d3-fe6dfa3826f4 OraDB12102_home1 12.1.0.2.210119 /u01/app/oracle/product/12.1.0.2/dbhome_1 Configured
4ff3d010-c1df-4d7a-98a7-24475c71e9cb OraDB12102_home3 12.1.0.2.210119 /u01/app/oracle/product/12.1.0.2/dbhome_3 Configured
Neste exemplo fiquei com 2 DB Homes da mesma versão, mas o DB Home adicionado tem alguns Interim Patches a mais que eu queria testar antes de aplicar no DB Home primário do DB System.
Esse procedimento pode ser utilizado para instalar um DB Home de uma versão diferente.
O novo DB Home não é reconhecido pela console OCI (VM DB System).
Manter o banco de dados rodando nesse novo DB Home pode não ser suportado pela Oracle, mas pode ser útil para cenários de testes ou em casos temporários durante a execução de algum projeto de migração.