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.

2 thoughts on “Aplicando Patch em DB System na OCI via Database CLI (dbcli)”

Leave a Reply

Discover more from Blog do Dibiei

Subscribe now to keep reading and get access to the full archive.

Continue reading