Upgrading Databases in OCI DB Systems

Podemos dizer que realizar o processo de Upgrade de banco de dados no OCI é menos complicado do que em ambientes on-premises, por conta do encapsulamento/automatização de diversas etapas. Neste artigo, vamos explorar como realizar o Upgrade de um banco 12C para 19C.

Validando se nossa versão de S.O é o Oracle Linux 7:

[opc@luxor ~]$ sudo su -
Last login: Mon May 31 08:34:49 UTC 2021
[root@luxor ~]# cat /etc/*release*
Oracle Linux Server release 7.9
NAME="Oracle Linux Server"
VERSION="7.9"
ID="ol"
ID_LIKE="fedora"
VARIANT="Server"
VARIANT_ID="server"
VERSION_ID="7.9"
PRETTY_NAME="Oracle Linux Server 7.9"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:oracle:linux:7:9:server"
HOME_URL="https://linux.oracle.com/"
BUG_REPORT_URL="https://bugzilla.oracle.com/"
 
ORACLE_BUGZILLA_PRODUCT="Oracle Linux 7"
ORACLE_BUGZILLA_PRODUCT_VERSION=7.9
ORACLE_SUPPORT_PRODUCT="Oracle Linux"
ORACLE_SUPPORT_PRODUCT_VERSION=7.9
Red Hat Enterprise Linux Server release 7.9 (Maipo)
Oracle Linux Server release 7.9
cpe:/o:oracle:linux:7:9:server

Confirmando se a versão do nosso GRID é 19C:

[root@luxor ~]# 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.2.0.1.210420       up-to-date

Validando se os PDBs estão abertos, e que o banco de dados está em modo Archivelog:

[root@luxor ~]# exit
logout
[opc@luxor ~]$ sudo su - oracle
Last login: Sat Jun  5 07:25:25 UTC 2021
[oracle@luxor ~]$ sqlplus / as sysdba
 
SQL*Plus: Release 12.2.0.1.0 Production on Sat Jun 5 07:28:08 2021
 
Copyright (c) 1982, 2016, Oracle.  All rights reserved.
 
 
Connected to:
Oracle Database 12c EE Extreme Perf Release 12.2.0.1.0 - 64bit Production
 
SQL> show pdbs;
 
    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 HIPOFISE1                      READ WRITE NO
SQL> ARCHIVE LOG LIST;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     8
Next log sequence to archive   10
Current log sequence           10

Confirmando que o banco possui o recurso de Flashback Database habilitado:

SQL> SELECT NAME,FLASHBACK_ON FROM V$DATABASE;
 
NAME      FLASHBACK_ON
--------- ------------------
CORTEX    YES

O upgrade pode ser realizar de 2 maneiras: OCI Console ou API (ou seja, DB CLI não é possível), além de ser aplicável em ambientes BM ou VM. Aqui, vamo realizar o processo via Console. Em ambientes corporativos, é extremamente indicado realizar um backup de seu ambiente. Caso exista alguma associação de Data Guard, é mister retirá-la. Se houver backups agendados, o ideal é desabilitá-los, para não serem disparados durante o Upgrade. Além disso, é importante realizar o Pré-Check, para validarmos que o ambiente está apto para o Upgrade. E o último detalhe: caso o upgrade fosse de um banco 11G para 19C, o banco de dados não é convertido automaticamente para arquitetura Multitenant (CDB).

Na console do OCI, vamos na página inicial do DB Sytem:

Em Resources, clicamos em “Databases” e clicamos em nosso banco de dados:

Na página principal do Database, vamos em Resource, clicamos em “Updates” e identificamos a versão desejada:

Clicamos no Menu da versão desejada, e vamos na opção de Pré-Check:

Confirmando:

O status do Database é alterado devido esse Pré-Check que disparamos:

Conseguimos acompanhar a evolução do processo na parte de “Work Request”:

Finalizado:

Como o pré-check não reportou nenhuma anomalia em nosso ambiente, podemos proceder com a migração em si. Importante salientar que o Upgrade executa nos bastidores um pré-check, cria um GRP (Guaranteed Restore Point), cria um novo DB Home, e executa o utilitário DBUA (Database Upgrade Assinstant). Clicando em “Upgrade”:

Confirmando:

Status do Banco fica em Upgrading:

Acompanhando evolução da Task:

Depois de pouco mais de 3 horas, o Upgrade é finalizado com sucesso:

Validando nova versão do Banco de Dados:

[oracle@luxor ~]$ exit
logout
[opc@luxor ~]$ sudo su -
Last login: Sat Jun  5 11:59:16 UTC 2021
[root@luxor ~]# 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 {
[ OraDB12201_home1 ]                      12.2.0.1.210420       up-to-date
[ OraDB19000_home2 ]                      19.11.0.0.0           up-to-date
}

Percebemos que o DB Home antigo ainda permanece, e deve ser removido por nós, após o upgrade. Validando os DB Homes existentes:

[root@luxor ~]# dbcli list-dbhomes
 
ID                                       Name                 DB Version                               Home Location                                 Status
---------------------------------------- -------------------- ---------------------------------------- --------------------------------------------- ----------
8bc7f0a5-6230-4b99-b568-b73cf0038525     OraDB12201_home1     12.2.0.1.210420                          /u01/app/oracle/product/12.2.0.1/dbhome_1     Configured
d08b9441-b181-42b1-b6be-11616fa9580c     OraDB19000_home2     19.11.0.0.0                              /u01/app/oracle/product/19.0.0.0/dbhome_2     Configured

Removendo DB Home antigo:

[root@luxor ~]# dbcli delete-dbhome -i 8bc7f0a5-6230-4b99-b568-b73cf0038525
 
Job details
----------------------------------------------------------------
                     ID:  342f6cb1-295f-4fee-8b6e-4974f8584a92
            Description:  Database Home OraDB12201_home1 Deletion with id 8bc7f0a5-6230-4b99-b568-b73cf0038525
                 Status:  Running
                Created:  June 5, 2021 12:43:51 PM UTC
               Progress:  0%
                Message:
 
Task Name                                                                Start Time                          End Time                            Status
------------------------------------------------------------------------ ----------------------------------- ----------------------------------- ----------

Acompanhando processo de remoção:

[root@luxor ~]# dbcli describe-job -i 342f6cb1-295f-4fee-8b6e-4974f8584a92
 
Job details
----------------------------------------------------------------
                     ID:  342f6cb1-295f-4fee-8b6e-4974f8584a92
            Description:  Database Home OraDB12201_home1 Deletion with id 8bc7f0a5-6230-4b99-b568-b73cf0038525
                 Status:  Running
                Created:  June 5, 2021 12:43:51 PM UTC
               Progress:  5%
                Message:
 
Task Name                                                                Start Time                          End Time                            Status
------------------------------------------------------------------------ ----------------------------------- ----------------------------------- ----------
Delete dbhome with ID: 8bc7f0a5-6230-4b99-b568-b73cf0038525              June 5, 2021 12:43:54 PM UTC        June 5, 2021 12:43:54 PM UTC        Running

Sucesso:

[root@luxor ~]# dbcli describe-job -i 342f6cb1-295f-4fee-8b6e-4974f8584a92
 
Job details
----------------------------------------------------------------
                     ID:  342f6cb1-295f-4fee-8b6e-4974f8584a92
            Description:  Database Home OraDB12201_home1 Deletion with id 8bc7f0a5-6230-4b99-b568-b73cf0038525
                 Status:  Success
                Created:  June 5, 2021 12:43:51 PM UTC
               Progress:  100%
                Message:
 
Task Name                                                                Start Time                          End Time                            Status
------------------------------------------------------------------------ ----------------------------------- ----------------------------------- ----------
Delete dbhome with ID: 8bc7f0a5-6230-4b99-b568-b73cf0038525              June 5, 2021 12:43:54 PM UTC        June 5, 2021 12:46:13 PM UTC        Success
[root@luxor ~]# dbcli list-dbhomes
 
ID                                       Name                 DB Version                               Home Location                                 Status
---------------------------------------- -------------------- ---------------------------------------- --------------------------------------------- ----------
d08b9441-b181-42b1-b6be-11616fa9580c     OraDB19000_home2     19.11.0.0.0                              /u01/app/oracle/product/19.0.0.0/dbhome_2     Configured

Além disso, é bom validarmos também o parâmetro COMPATIBLE, conforme abaixo:

[root@luxor ~]# exit
logout
[opc@luxor ~]$ sudo su - oracle
Last login: Sat Jun  5 12:46:15 UTC 2021
[oracle@luxor ~]$ sqlplus / as sysdba
 
SQL*Plus: Release 19.0.0.0.0 - Production on Sat Jun 5 12:47:36 2021
Version 19.11.0.0.0
 
Copyright (c) 1982, 2020, Oracle.  All rights reserved.
 
 
Connected to:
Oracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production
Version 19.11.0.0.0
 
SQL> show parameter COMPATIBLE
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
compatible                           string      12.2.0.0
noncdb_compatible                    boolean     FALSE

Alterando o seu valor para 19.0.0:

SQL> ALTER SYSTEM SET COMPATIBLE='19.0.0.0' SCOPE=SPFILE;
 
System altered.
 
SQL> exit
Disconnected from Oracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production
Version 19.11.0.0.0
[oracle@luxor ~]$ srvctl stop database -db $ORACLE_UNQNAME -stopoption immediate -verbose
[oracle@luxor ~]$ srvctl start database -db $ORACLE_UNQNAME
[oracle@luxor ~]$ sqlplus / as sysdba
 
SQL*Plus: Release 19.0.0.0.0 - Production on Sat Jun 5 12:50:43 2021
Version 19.11.0.0.0
 
Copyright (c) 1982, 2020, Oracle.  All rights reserved.
 
 
Connected to:
Oracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production
Version 19.11.0.0.0
 
SQL> SHO PARAMETER COMPATIBLE
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
compatible                           string      19.0.0.0
noncdb_compatible                    boolean     FALSE

Por último, é bom confirmarmos se o .bashrc está com as variáveis exportadas para o novo DB Home:

[oracle@luxor ~]$ cat .bashrc
# .bashrc
 
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
 
# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=
 
# User specific aliases and functions
## WARNING!! Modifying this file can cause failures in API/CLI provided by Cloud Tooling!!
ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_2; export ORACLE_HOME
PATH=$PATH:/u01/app/oracle/product/19.0.0.0/dbhome_2/bin; export PATH
LD_LIBRARY_PATH=/u01/app/oracle/product/19.0.0.0/dbhome_2/lib; export LD_LIBRARY_PATH
ORACLE_UNQNAME=CORTEX_phx1hb;export ORACLE_UNQNAME
ORACLE_SID=CORTEX; export ORACLE_SID
[oracle@luxor ~]$

Obs: Este procedimento foi criado pelo senhor Ahmed Baraka (www.ahmedbaraka.com) e foi apenas reproduzido por mim em um laboratório pessoal para fins de aprendizado.

Leave a Comment

Your email address will not be published.