Oracle Database 12c: Atualizando para Oracle 12.2 com o utilitário dbupgrade.

Por Skant Gupta, Joel Pérez ,David Siqueira  Publicado em Março 2018,
Revisado por Marcus Vinicius Miguel Pedro

Oracle Database 12c release 1 (12.1) introduziu o utilitário Parallel Upgrade, catctl.pl. Este utilitério reduz o tempo total de atualização do dicionário da base de dados em paralelo, usando multiplos processos SQL par aatualização do banco de dados. Utilizando a atualização em paralelo é possivel obter as vantagens do uso da capacidade de CPU. A Oracle continua fazendo melhorias no processso de atualziação, simplificando tanto o modo manual de atualziação quanto o modo que usa o Database Upgrade Assistant (DBUA). DBUA e a atualização manual produzem vantagens para o novo Parallel Upgrade Utility. Agora no  Oracle Database 12c release 2, você pode executar commandos shell, dbupgrade, executando a inicialização com o catctl.pl através da linha de comando, no lugar de executar isto direto do Perl.

O commando  dbupgrade está localizado no camninho $ORACLE_HOME/rdbms/bin em LINUX ou UNIX, e %ORACLE_HOME%\rdbms\bin no Windows. Você pode executar qualquer argument do commando que são válidos para o shell catctl.pl.  Execute o commando diretamente da nova Oracle HOME , ou defina as váriaveis d eambiente para o arquivo. No Oracle 12.1 catcpl.pl execute o comando da seguinte forma


  
$ORACLE_HOME/perl/bin/perl catctl.pl -n 8 -l /home/oracle catupgrd.log
 
 

Começando com o  Oracle 12.2, nós podemos usar o utilitário dbupgrade que começa com  up catctl.pl em vez de executa-lo através do perl.

Passo 1: Configure as váriaveis de ambiente e execute os arquivos jar necessarios


  
[oracle@DATA-REDACTION  ~]$ export ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1
[oracle@DATA-REDACTION  ~]$ export ORACLE_BASE=/u01/app/oracle
[oracle@DATA-REDACTION  ~]$ export ORACLE_SID=ORCL
[oracle@DATA-REDACTION  ~]$ export PATH=.:$ORACLE_HOME/bin:$PATH
 
 

O arquivo preupgrade.jar está localizado no Oracle 12.2 $ORACLE_HOME/rdbms/admin. Podemos executar isso usando o  TERMINAL ou opções do arquivoAs opções do TERMINAL emitirção uma saida no terminal e com o arquivo nos teremos a saida em um arquivo.


  
[oracle@DATA-Redaction test]$ $ORACLE_HOME/jdk/bin/java -jar 
/home/oracle/test/preupgrade.jar TERMINAL TEXT
Report generated by Oracle Database Pre-Upgrade Information Tool Version
12.2.0.1.0
Upgrade-To version: 12.2.0.1.0

=======================================
Status of the database prior to upgrade
=======================================

Database Name: ORCL
Container Name: CDB$ROOT
Container ID: 1
Version: 12.1.0.2.0
Compatible: 12.1.0.2.0
Blocksize: 8192
Platform: Linux x86 64-bit
Timezone File: 18
Database log mode: ARCHIVELOG
Readonly: FALSE
Edition: EE

Oracle Component Upgrade Action Current Status
---------------- -------------- --------------
Oracle Server [to be upgraded] VALID
JServer JAVA Virtual Machine [to be upgraded] VALID
Oracle XDK for Java [to be upgraded] VALID
Real Application Clusters [to be upgraded] OPTION OFF
Oracle Workspace Manager [to be upgraded] VALID
OLAP Analytic Workspace [to be upgraded] VALID
Oracle Label Security [to be upgraded] VALID
Oracle Database Vault [to be upgraded] VALID
Oracle Text [to be upgraded] VALID
Oracle XML Database [to be upgraded] VALID
Oracle Java Packages [to be upgraded] VALID
Oracle Multimedia [to be upgraded] VALID
Oracle Spatial [to be upgraded] VALID
Oracle OLAP API [to be upgraded] VALID
.........

Preupgrade generated files:
/u01/app/oracle/cfgtoollogs/ORCL/preupgrade/preupgrade_fixups.sql
/u01/app/oracle/cfgtoollogs/ORCL/preupgrade/postupgrade_fixups.sql
 
 

Como especificado se nós quisermos uma saida no arquivo, nós podemos também usar a opção FILE no lugar do TERMINAL. O diretório de saida é $ORACLE_BASE/cfgtoollogs/$ORACLE_SID


  
[oracle@DATA-Redaction test]$ $ORACLE_HOME/jdk/bin/java -jar 
/home/oracle/test/preupgrade.jar FILE TEXT
Preupgrade generated files:
/u01/app/oracle/cfgtoollogs/ORCL/preupgrade/preupgrade.log
/u01/app/oracle/cfgtoollogs/ORCL/preupgrade/preupgrade_fixups.sql
/u01/app/oracle/cfgtoollogs/ORCL/preupgrade/postupgrade_fixups.sql
 
 

Passo 2: Executando o preupgrade_fixups.sql no Oracle 12.1


  
[oracle@DATA-Redaction test]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Thu Aug 10 18:08:45 2017

Copyright (c) 1982, 2014, Oracle. All rights reserved.

Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP, Advanced Analytics
and Real Application Testing options

SQL> @/u01/app/oracle/cfgtoollogs/ORCL/preupgrade/preupgrade_fixups.sql
Executing Oracle PRE-Upgrade Fixup Script

Auto-Generated by: Oracle Preupgrade Script
Version: 12.2.0.1.0 Build: 1
Generated on: 2017-08-10 18:08:00

For Source Database: ORCL
Source Database Version: 12.1.0.2.0
For Upgrade to Version: 12.2.0.1.0

Executing in container: CDB$ROOT

Fixup
Check Name              Status  Further DBA Action
---------- ------       ------  -----------------
min_recovery_area_size  Passed  None
dictionary_stats        Passed  None

PL/SQL procedure successfully completed.

Session altered.
 
 

Passo 3: Prepare o ambiente para Oracle 12.2 e copie o  spfile na nova HOME


  
[oracle@DATA-Redaction ~]$ which dbupgrade
/u01/app/oracle/product/12.2.0.1/dbhome_1/bin/dbupgrade

[oracle@DATA-Redaction ~]$ echo $ORACLE_HOME
/u01/app/oracle/product/12.2.0.1/dbhome_1

[oracle@DATA-Redaction ~]$ export ORACLE_SID=ORCL

[oracle@DATA-Redaction ~]$ cp 
/u01/app/oracle/product/12.1.0/dbhome_1/dbs/spfileORCL.ora 
/u01/app/oracle/product/12.2.0.1/dbhome_1/dbs/
[oracle@DATA-Redaction ~]$
 
 

Passo 4: Iniciando a base de dados no novo ambiente em modo upgrade mode


  
[oracle@DATA-Redaction ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on Thu Aug 10 18:15:08 2017

Copyright (c) 1982, 2016, Oracle. All rights reserved.

Connected to an idle instance.

SQL>startup upgrade
ORACLE instance started.

Total System Global Area 2768240640 bytes
Fixed Size 8796624 bytes
Variable Size 704644656 bytes
Database Buffers 1979711488 bytes
Redo Buffers 75087872 bytes
Database mounted.
Database opened.
SQL>
 
 

Passo 5: Execute o utilitário dbupgrade Aqui  n determina o número de processos e l determina o caminho para o arquivo de log


  
[oracle@DBtest bin]$ dbupgrade -n 2 -l /u01/app/

Argument list for [/u01/app/oracle/product/12.2.0/dbhome_1/rdbms/admin/catctl.pl]
Run in c = 0
Do not run in C = 0
Input Directory d = 0
Echo OFF e = 1
Simulate E = 0
Forced cleanup F = 0
Log Id i = 0
Child Process I = 0
Log Dir l = /u01/app/
Priority List Name L = 0
Upgrade Mode active M = 0
SQL Process Count n = 2
SQL PDB Process Count N = 0
Open Mode Normal o = 0
Start Phase p = 0
End Phase P = 0
Reverse Order r = 0
AutoUpgrade Resume R = 0
Script s = 0
Serial Run S = 0
RO User Tablespaces T = 0
Display Phases y = 0
Debug catcon.pm z = 0
Debug catctl.pl Z = 0

catctl.pl VERSION: [12.2.0.1.0]
STATUS: [production]
BUILD: [RDBMS_12.2.0.1.0_LINUX.X64_170125]

/u01/app/oracle/product/12.2.0/dbhome_1/rdbms/admin/orahome = 
[/u01/app/oracle/product/12.2.0/dbhome_1]
/u01/app/oracle/product/12.2.0/dbhome_1/bin/orabasehome = 
[/u01/app/oracle/product/12.2.0/dbhome_1]
catctlGetOrabase = [/u01/app/oracle/product/12.2.0/dbhome_1]

Analyzing file /u01/app/oracle/product/12.2.0/dbhome_1/rdbms/admin/catupgrd.sql

Log file directory = [/u01/app/]

catcon: ALL catcon-related output will be written to [/u01/app//catupgrd_catcon_26467.lst]
catcon: See [/u01/app//catupgrd*.log] files for output generated by scripts
catcon: See [/u01/app//catupgrd_*.lst] files for spool files, if any

Number of Cpus = 2
Database Name = ORCL
DataBase Version = 12.2.0.1.0
Parallel SQL Process Count (PDB) = 2
Parallel SQL Process Count (CDB$ROOT) = 2
Concurrent PDB Upgrades = 1
PDB$SEED Open Mode = [READ ONLY] NO UPGRADE WILL BE PERFORMED
PDB1 Open Mode = [READ WRITE] NO UPGRADE WILL BE PERFORMED
Generated PDB Inclusion:[NONE]
Components in [CDB$ROOT]
Installed [APS CATALOG CATJAVA CATPROC CONTEXT DV JAVAVM OLS ORDIM OWM SDO XDB XML XOQ]
Not Installed [APEX EM MGW ODM RAC WK]

------------------------------------------------------
Phases [0-115] Start Time:[2017_08_10 18:13:10]
Container Lists Inclusion:[CDB$ROOT] Exclusion:[NONE]
------------------------------------------------------

.....
.....
.....

LOG FILES: (/u01/app/catupgrd*.log)
Upgrade Summary Report Located in:
/u01/app/upg_summary.log
Grand Total Upgrade Time: [0d:1h:18m:05s]
 
 

Passo 6:  Execute o script postupgrade_fixups.sql

  SQL> @/u01/app/oracle/cfgtoollogs/ORCL/preupgrade/postupgrade_fixups.sql    Session altered.    PL/SQL procedure successfully completed.    Session altered.    PL/SQL procedure successfully completed.    Session altered.    

  
SQL> @/u01/app/oracle/cfgtoollogs/ORCL/preupgrade/postupgrade_fixups.sql

Session altered.

PL/SQL procedure successfully completed.

Session altered.

PL/SQL procedure successfully completed.

Session altered.
 
 

Conclusão

Então agora nós sabemos que é muito fácil executar uma atualização no Oracle 12.2 com o dbupgrade utility.

Se você quiser ser atualizado com a melhor informação tecnologia Oracle todos os dias, siga-nos no LinkedIn: Skant Gupta: https://www.linkedin.com/in/skantali/ Joel Pérez: https://www.linkedin.com/in/sir-joel-pérez-oracle-ace-director-ocm-cloud-99530555/ David Siqueira: https://www.linkedin.com/in/davidsiqueira/ Esperamos que este artigo tenha sido util e convidamos vocês para continuarem lendo nossas publicações focadas em Oracle 12.2.

Skant Gupta é um Oracle Certified Cloud Professional 12c, OCE RAC 11g and Oracle Certified Professional (10g, 11g, 12c). Atualmente trabalha na Vodafone no Reino Unido e trabalhava anteriormente como DBA Sênior na Etisalat em Dubai. Tem 6 anos de experiência em diferentes tecnologias Oracle, focando principalmente em banco de dados, nuvem, soluções de alta disponibilidade, WebLogic e GoldenGate. Elejá esteve presente em vários grupos de usuários Oracle ao redor do mundo e maisrecentemente nos EUA, Emirados Árabes e Índia. Perfil de Skant Gupta no LinkedIn - https://www.linkedin.com/in/ skantali, Blog: http://oracle-help.com/

Joel Pérez é um DBA (Oracle ACE Director, Maximum Availability OCM, OCM Cloud Admin. & OCM12c/11g) Especialista com mais de 17 anos de experiência real no mundo da tecnologia Oracle, especializada na concepção e implementação de soluções: Nuvem, alta disponibilida de, recuperação de desastres, Upgrades, replicação e toda a área relacionada com bancos de dados Oracle. Joel serve como "Senior Database Cloud Architect" para en.Enmotech.com Yunhe ENMO (Beijing) Technology Co. Ltd. Beijing, China. Conectar com Joel: Conecte-se com Joel’s Linkedin para ser atualizado com as informações mais notáveis relacionadas ao Oracle Cloud: https://www.linkedin.com/in/sir-joel-pérez-oracle-ace-director-ocm-cloud-99530555/

David Siqueira é DBA desde 2001, atuante no mercado de São Paulo Brasil, trabalhou nas principais consultorias sempre buscando melhorar conhecimentos e agregar valor aos ambientes por onde passou, é OCP 10 e 11g, OCE SQL Expert, OCE RAC 10g, OCE Exadata Essentials e foi nomeado Oracle ACE em Dezembro de 2011. Atua com ambientes de Alta Disponibilidade Oracle RAC 11g, Exadata X2-2 e Administração de Banco de Dados em Geral. Também possui conhecimentos em sistemas operacionais Oracle VM server e Oracle Businnes Intelligence.

Este artigo foi revisto pela equipe de produtos Oracle e está em conformidade com as normas e práticas para o uso de produtos Oracle.