Atualizando a versão do dbcli para a última versão disponível:
[root@db ~]# cliadm update-dbcli
Job details
----------------------------------------------------------------
ID: 54b4393e-866e-402f-acf6-bd93b808b814
Description: DcsCli patching
Status: Created
Created: May 9, 2021 5:43:51 PM AMT
Message: Dcs cli will be updated
Task Name Start Time End Time Status
------------------------------------------------------------------------ ----------------------------------- ----------------------------------- ----------
[root@db ~]# dbcli describe-job -i 54b4393e-866e-402f-acf6-bd93b808b814
Job details
----------------------------------------------------------------
ID: 54b4393e-866e-402f-acf6-bd93b808b814
Description: DcsCli patching
Status: Success
Created: May 9, 2021 5:43:51 PM AMT
Progress: 100%
Message:
Task Name Start Time End Time Status
------------------------------------------------------------------------ ----------------------------------- ----------------------------------- ----------
Checando a versão atual e a última disponível para o Grid Infrastructure e Database:
[root@db ~]# dbcli describe-component
System Version
---------------
21.1.3.3.0
Component Installed Version Available Version
---------------------------------------- -------------------- --------------------
GI 19.10.0.0.0 19.11.0.0
DB 12.1.0.2.210119 12.1.0.2.210420
Vamos atualizar o DB System (GI) de 19.10 para 19.11.
Utilizamos o comando “update-server” que tem as seguintes opções:
[root@db ~]# dbcli update-server -h
Usage: update-server [options]
Options:
--help, -h
get help
--json, -j
json output
--local, -l
Update Server Components Locally
--node, -n
Node to be updated
--precheck, -p
Only Analyze the patch
--version, -v
Version to be updated
Para atualizar para a última versão disponível (exibida no comando desribe-component), basta executar o comando sem especificar o parâmetro –version. A opção –precheck realiza o procedimento de pré verificação, caso ocorra erro nessa fase, devemos resolver o impasse antes de prosseguir com a atualização.
[root@db ~]# dbcli update-server --precheck
{
"jobId" : "f4ca60c0-53af-405e-a592-5e171b19bbee",
"status" : "Created",
"message" : null,
"reports" : [ ],
"createTimestamp" : "May 09, 2021 18:14:44 PM AMT",
"resourceList" : [ ],
"description" : "Server Patching Prechecks",
"updatedTime" : "May 09, 2021 18:14:44 PM AMT",
"percentageProgress" : "0%",
"cause" : null,
"action" : null
}
Consultando o progresso do JOB:
[root@db ~]# dbcli describe-job -i f4ca60c0-53af-405e-a592-5e171b19bbee
Job details
----------------------------------------------------------------
ID: f4ca60c0-53af-405e-a592-5e171b19bbee
Description: Server Patching Prechecks
Status: Success
Created: May 9, 2021 6:14:44 PM AMT
Progress: 100%
Message:
Task Name Start Time End Time Status
------------------------------------------------------------------------ ----------------------------------- ----------------------------------- ----------
Pre-operations for Server Patching May 9, 2021 6:14:44 PM AMT May 9, 2021 6:15:42 PM AMT Success
Server Patching May 9, 2021 6:15:42 PM AMT May 9, 2021 6:21:47 PM AMT Success
Tendo validado com sucesso, podemos prosseguir com a aplicação do patch:
[root@db ~]# dbcli update-server
{
"jobId" : "70afabe9-9e5f-4cac-afe5-20245a2edee4",
"status" : "Created",
"message" : null,
"reports" : [ ],
"createTimestamp" : "May 09, 2021 18:36:01 PM AMT",
"resourceList" : [ ],
"description" : "Server Patching",
"updatedTime" : "May 09, 2021 18:36:01 PM AMT",
"percentageProgress" : "0%",
"cause" : null,
"action" : null
}
Algum tempo depois (aproximadamente 1h, podendo variar de um DB System para outro):
[root@db ~]# dbcli describe-job -i 70afabe9-9e5f-4cac-afe5-20245a2edee4
Job details
----------------------------------------------------------------
ID: 70afabe9-9e5f-4cac-afe5-20245a2edee4
Description: Server Patching
Status: Success
Created: May 9, 2021 6:36:01 PM AMT
Progress: 100%
Message:
Task Name Start Time End Time Status
------------------------------------------------------------------------ ----------------------------------- ----------------------------------- ----------
Pre-operations for Server Patching May 9, 2021 6:36:01 PM AMT May 9, 2021 6:37:00 PM AMT Success
Server Patching May 9, 2021 6:37:00 PM AMT May 9, 2021 7:35:06 PM AMT Success
Confirmando que a versão do componente GI ficou com status up-to-date:
[root@db ~]# dbcli describe-component
System Version
---------------
21.1.3.3.0
Component Installed Version Available Version
---------------------------------------- -------------------- --------------------
GI 19.11.0.0.0 up-to-date
DB 12.1.0.2.210119 12.1.0.2.210420
Tendo atualizado o Grid Infrastructure, podemos atualizar o Database.
Primeiramente precisamos obter o DbHomeID para usar nos comandos de precheck e apply do patch:
[root@db ~]# dbcli list-databases
ID DB Name DB Type DB Version CDB Class Shape Storage Status DbHomeID
---------------------------------------- ---------- -------- -------------------- ---------- -------- -------- ---------- ------------ ----------------------------------------
3c44c053-2979-468c-85b7-ae195c006298 CDB1 Si 12.1.0.2.210119 true Oltp ASM Configured fd1c586b-6cfd-4d2a-8d86-506100312b07
Então executamos o precheck do apply dos patches no Database Home:
[root@db ~]# dbcli update-dbhome -i fd1c586b-6cfd-4d2a-8d86-506100312b07 --precheck
{
"jobId" : "862acfbc-e823-42c0-8270-908571a6b61a",
"status" : "Created",
"message" : null,
"reports" : [ ],
"createTimestamp" : "May 09, 2021 19:43:29 PM AMT",
"resourceList" : [ ],
"description" : "DBHome Prechecks",
"updatedTime" : "May 09, 2021 19:43:29 PM AMT",
"percentageProgress" : "0%",
"cause" : null,
"action" : null
}
Monitoramento o progresso do JOB até sua conclusão, essa etapa pode levar aproximadamente 20 minutos (não gera downtime).
[root@db ~]# dbcli describe-job -i 862acfbc-e823-42c0-8270-908571a6b61a
Job details
----------------------------------------------------------------
ID: 862acfbc-e823-42c0-8270-908571a6b61a
Description: DBHome Prechecks
Status: Success
Created: May 9, 2021 7:43:29 PM AMT
Progress: 100%
Message:
Task Name Start Time End Time Status
------------------------------------------------------------------------ ----------------------------------- ----------------------------------- ----------
Pre-operations for DBHome patching May 9, 2021 7:43:29 PM AMT May 9, 2021 7:50:40 PM AMT Success
DBHome patching May 9, 2021 7:50:40 PM AMT May 9, 2021 8:01:48 PM AMT Success
Post-operations for DBHome patching May 9, 2021 8:01:48 PM AMT May 9, 2021 8:01:56 PM AMT Success
Tendo validado com sucesso, podemos realizar o apply:
[root@db ~]# dbcli update-dbhome -i fd1c586b-6cfd-4d2a-8d86-506100312b07<br>{<br>"jobId" : "a2acd3cc-cc81-40b9-93b8-bc7aa36fcdcf",<br>"status" : "Created",<br>"message" : null,<br>"reports" : [ ],<br>"createTimestamp" : "May 09, 2021 20:08:34 PM AMT",<br>"resourceList" : [ ],<br>"description" : "DBHome Patching: Home ID is fd1c586b-6cfd-4d2a-8d86-506100312b07",<br>"updatedTime" : "May 09, 2021 20:08:34 PM AMT",<br>"percentageProgress" : "0%",<br>"cause" : null,<br>"action" : null<br>}
Então depois de algum tempo monitorando o progresso do JOB, temos o status de concluído com sucesso:
[root@db ~]# dbcli describe-job -i a2acd3cc-cc81-40b9-93b8-bc7aa36fcdcf
Job details
----------------------------------------------------------------
ID: a2acd3cc-cc81-40b9-93b8-bc7aa36fcdcf
Description: DBHome Patching: Home ID is fd1c586b-6cfd-4d2a-8d86-506100312b07
Status: Success
Created: May 9, 2021 8:08:34 PM AMT
Progress: 100%
Message:
Task Name Start Time End Time Status
------------------------------------------------------------------------ ----------------------------------- ----------------------------------- ----------
Pre-operations for DBHome patching May 9, 2021 8:08:34 PM AMT May 9, 2021 8:15:40 PM AMT Success
DBHome patching May 9, 2021 8:15:40 PM AMT May 9, 2021 9:17:18 PM AMT Success
Post-operations for DBHome patching May 9, 2021 9:17:18 PM AMT May 9, 2021 9:34:41 PM AMT Success
O tempo para apply do database também varia de um DB System para outro, é influenciado pelo Shape e pelo load no servidor no momento da execução.
Checando que o componente DB ficou com status up-to-date:
[root@db ~]# dbcli describe-component
System Version
---------------
21.1.3.3.0
Component Installed Version Available Version
---------------------------------------- -------------------- --------------------
GI 19.11.0.0.0 up-to-date
DB 12.1.0.2.210420 up-to-date
Ao final do processo, a versão apresentada na console pode não ser atualizada automaticamente e o patch aplicado via dbcli ainda ser listado como “disponível” para aplicar via console:

Para forçar a atualização das informações do DB System, iniciamos o o processo de “Apply” pela console, o processo irá detectar que o patch já foi atualizado (uns 2 minutos) e exibirá a versão correta na console, o patch deixará de ser listado como “disponível”.
Note que o processo levou menos de 2 minutos:

E então as informações foram atualizadas corretamente:

Sobre essa atualização das informações na console, não estou seguro se ela não seria atualizada automaticamente após algum tempo, resultado de alguma verificação periódica realizada pelo agente da Cloud.
Apesar de ter feito precheck + apply do Grid Infrastructure seguido por um precheck + apply do Database nessa demonstração, em um ambiente produtivo eu teria feito precheck GI + precheck DB um momento antes da janela de manutenção e faria o apply GI + apply DB dentro da janela de manutenção, reduzindo assim o downtime geral para atualizar todo o DB System.
[…] Steps to apply and rollback patch in OCI console https://docs.oracle.com/en/cloud/paas/base-database/upgrade-dbs/#GUID-479F41AE-EDBA-479F-B648-83F495362712 Aplicando Patch em DB System na OCI via Database CLI (dbcli) […]
[…] Steps to apply and rollback patch in OCI console https://docs.oracle.com/en/cloud/paas/base-database/upgrade-dbs/#GUID-479F41AE-EDBA-479F-B648-83F495362712 Aplicando Patch em DB System na OCI via Database CLI (dbcli) […]