Upgrading by Using the Database Upgrade Assistant (DBUA)

Agora que já vimos como funciona o processo de upgrade, vamos realizar um upgrade de teste, utilizando o DBUA, da versão 11.2.0.4 para a versão 12.2.0.1.

O primeiro passo, e muito importante, é executar a ferramente de Pre-upgrade. Com essa ferramenta, que agora é um arquivo .jar, ele vai analisar o banco que irá sofrer o upgrade e verificar correções que devem ser feitas tanto antes, como depois do upgrade. Essa ferramenta irá gerar um arquivo de log, juntamente com os scripts para serem executados tanto antes, como depois do upgrade, que irá assim, resolver qualquer problemas relacionados ao processo de upgrade.

Antes de mais nada, você deverá instalar o binário do Oracle, da nova versão, em uma ORACLE_HOME separada. Depois você deverá configurar as variáveis de ambiente ORACLE_HOME, ORACLE_BASE, ORACLE_SID e PATH da versão do Oracle que iremos fazer o upgrade. Depois, é só executar a ferramente de pre-upgrade com a seguinte sintaxe:

$Earlier_release_Oracle_home/jdk/bin/java -jar $New_release_Oracle_home
/rdbms/admin/preupgrade.jar [FILE|TERMINAL] [TEXT|XML] [DIR output_dir]

Onde, podemos especificar o resultado do output será impresso direto na tela ou será salvo em um arquivo, FILE. Se o resultado será salvo em texto ou xml e em qual diretório será salvo. Tem valores default pra tudo, que no caso será FILE, TEXT e o diretório depende se a variável de ambiente foi configurada. Se foi, o output será salvo em $ORACLE_BASE/cfgtoollogs/dbua/upgradetimestamp/SID/. Caso contrário, será salvo em ORACLE_HOME/cfgtoollogs/dbunique_name/preupgrade.

Vamos executar em nosso ambiente de testes:

$ $ORACLE_HOME/jdk/bin/java -jar /u01/app/oracle/product/12.2.0/dbhome_1/rdbms/admin/preupgrade.jar
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

Vejamos agora o conteúdo de cada um desses arquivos, primeiro o log:

$ cat /u01/app/oracle/cfgtoollogs/orcl/preupgrade/preupgrade.log
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:  Not Applicable in Pre-12.1 database
       Container ID:  Not Applicable in Pre-12.1 database
            Version:  11.2.0.4.0
         Compatible:  11.2.0.4.0
          Blocksize:  8192
           Platform:  Linux x86 64-bit
      Timezone File:  14
  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
  Oracle Workspace Manager               [to be upgraded]  VALID
  OLAP Analytic Workspace                [to be upgraded]  VALID
  Oracle Enterprise Manager Repository   [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
  Expression Filter                      [to be upgraded]  VALID
  Rule Manager                           [to be upgraded]  VALID
  Oracle Application Express             [to be upgraded]  VALID
  Oracle OLAP API                        [to be upgraded]  VALID


==============
BEFORE UPGRADE
==============

  Run <preupgradeLogDirPath>/preupgrade_fixups.sql to complete all
  of the BEFORE UPGRADE action items below marked with '(AUTOFIXUP)'.

  REQUIRED ACTIONS
  ================
   + Adjust TABLESPACE SIZES as needed.
                                                Auto      12.2.0.1.0
     Tablespace                        Size     Extend    Min Size    Action
     ----------                     ----------  --------  ----------  ------

     EXAMPLE                            314 MB  DISABLED      309 MB  None
     SYSAUX                             500 MB  ENABLED      1408 MB  None
     SYSTEM                             750 MB  ENABLED      1250 MB  None
     TEMP                                20 MB  ENABLED       150 MB  None
     UNDOTBS1                            50 MB  ENABLED       400 MB  None

     Note that 12.2.0.1.0 minimum sizes are estimates.
     If you plan to upgrade multiple pluggable databases concurrently,
     then you must ensure that the UNDO tablespace size is equal to at least
     the number of pluggable databases that you upgrade concurrently,
     multiplied by that minimum.  Failing to allocate sufficient space can
     cause the upgrade to fail.




   + Update NUMERIC INITIALIZATION PARAMETERS to meet estimated minimums.

     Parameter                         12.2.0.1.0 minimum
     ---------                         ------------------
     processes                                        300




   + Set DB_RECOVERY_FILE_DEST_SIZE initialization parameter to at least 5359
     MB.  Check alert log during the upgrade to ensure there is remaining
     free space available in the recovery area.

     DB_RECOVERY_FILE_DEST_SIZE is set at 4182 MB.  There is currently 4138
     MB of free space remaining, which may not be adequate for the upgrade.

     Currently:
      Fast recovery area :  /u01/app/oracle/fast_recovery_area
      Limit              :  4182 MB
      Used               :  44 MB
      Available          :  4138 MB

     The database has archivelog mode enabled, and the upgrade process will
     need free space to generate archived logs to the recovery area specified
     by initialization parameter DB_RECOVERY_FILE_DEST.  The logs generated
     must not overflow the limit set by DB_RECOVERY_FILE_DEST_SIZE, as the
     upgrade may not proceed if the database stops responding.

  RECOMMENDED ACTIONS
  ===================
   + Remove the EM repository.

     - Copy the $ORACLE_HOME/rdbms/admin/emremove.sql script from the target
     12.2.0.1.0 ORACLE_HOME into the source 11.2.0.4.0 ORACLE_HOME.

     Step 1: If database control is configured, stop EM Database Control,
     using the following command

       $> emctl stop dbconsole

     Step 2: Connect to the database using the SYS account AS SYSDBA

       SET ECHO ON;
       SET SERVEROUTPUT ON;
      @emremove.sql

     Without the set echo and serveroutput commands, you will not be able to
     follow the progress of the script.

     The database has an Enterprise Manager Database Control repository.

     Starting with Oracle Database 12c, the local Enterprise Manager Database
     Control does not exist anymore. The repository will be removed from your
     database during the upgrade.  This step can be manually performed before
     the upgrade to reduce downtime.

   + Remove OLAP Catalog by running the 11.2.0.4.0 SQL script
     $ORACLE_HOME/olap/admin/catnoamd.sql script.

     The OLAP Catalog component, AMD, exists in the database.

     Starting with Oracle Database 12c, the OLAP Catalog (OLAP AMD) is
     desupported and will be automatically marked as OPTION OFF during the
     database upgrade if present. Oracle recommends removing OLAP Catalog
     (OLAP AMD) before database upgrade.

   + (AUTOFIXUP) Gather stale data dictionary statistics prior to database
     upgrade in off-peak time using:

      EXECUTE DBMS_STATS.GATHER_DICTIONARY_STATS;

     Dictionary statistics do not exist or are stale (not up-to-date).

     Dictionary statistics help the Oracle optimizer find efficient SQL
     execution plans and are essential for proper upgrade timing. Oracle
     recommends gathering dictionary statistics in the last 24 hours before
     database upgrade.

     For information on managing optimizer statistics, refer to the 11.2.0.4
     Oracle Database Performance Tuning Guide.

   + Directly grant ADMINISTER DATABASE TRIGGER privilege to the owner of the
     trigger or drop and re-create the trigger with a user that was granted
     directly with such. You can list those triggers using "SELECT OWNER,
     TRIGGER_NAME FROM DBA_TRIGGERS WHERE BASE_OBJECT_TYPE=''DATABASE'' AND
     OWNER NOT IN (SELECT GRANTEE FROM DBA_SYS_PRIVS WHERE
     PRIVILEGE=''ADMINISTER DATABASE TRIGGER'')"

     There is one or more database triggers whose owner does not have the
     right privilege on the database.

     The creation of database triggers must be done by users granted with
     ADMINISTER DATABASE TRIGGER privilege. Privilege must have been granted
     directly.

   + Please make sure that all the MVs are refreshed and sys.sumdelta$
     becomes empty before doing upgrade, unless you have strong business
     reasons not to do so. You can use dbms_mview.refresh() to refresh the
     MVs except those stale ones  to be kept due to business need. If there
     are any stale MVs depending on changes in sys.sumdelta$, do not truncate
     it, because doing so will cause wrong results after refresh.

     There is one or more non-fresh MV in the database or sumdelta$ is not
     empty.

     Oracle recommends that all materialized views (MV's) are refreshed
     before upgrading the database because this will clear the MV logs and
     the sumdelta$ table, and make the UPGRADE process faster. If you choose
     to not refresh some MVs, the change data for those MV's will be carried
     through the UPGRADE process. After UPGRADE, you can refresh the MV's and
      MV incremental refresh should work in normal cases.

  INFORMATION ONLY
  ================
   + Consider upgrading APEX manually, before the database upgrade.

     The database contains APEX version 3.2.1.00.12 and will need to be
     upgraded to at least version 5.0.4.00.12.

     To reduce database upgrade time, you can upgrade APEX manually before
     the database upgrade.  Refer to My Oracle Support Note 1088970.1 for
     information on APEX installation upgrades.

=============
AFTER UPGRADE
=============

  Run <preupgradeLogDirPath>/postupgrade_fixups.sql to complete all
  of the AFTER UPGRADE action items below marked with '(AUTOFIXUP)'.

  REQUIRED ACTIONS
  ================
  None

  RECOMMENDED ACTIONS
  ===================
   + If you use the -T option for the database upgrade, then run
     $ORACLE_HOME/rdbms/admin/utluptabdata.sql after the upgrade is complete,
     to VALIDATE and UPGRADE any user tables affected by changes to
     Oracle-Maintained types.

     There are user tables dependent on Oracle-Maintained object types.

     If the -T option is used to set user tablespaces to READ ONLY during the
     upgrade, user tables in those tablespaces, that are dependent on
     Oracle-Maintained types, will not be automatically upgraded. If a type
     is evolved during the upgrade, any dependent tables need to be
     re-validated and upgraded to the latest type version AFTER the database
     upgrade completes.

   + Upgrade the database time zone version using the DBMS_DST package.

     The database is using timezone datafile version 14 and the target
     12.2.0.1.0 database ships with timezone datafile version 26.

     Oracle recommends using the most recent timezone data.  For further
     information, refer to My Oracle Support Note 1585343.1.

   + (AUTOFIXUP) Gather dictionary statistics after the upgrade using the
     command:

       EXECUTE DBMS_STATS.GATHER_DICTIONARY_STATS;

     Oracle recommends gathering dictionary statistics after upgrade.

     Dictionary statistics provide essential information to the Oracle
     optimizer to help it find efficient SQL execution plans. After a
     database upgrade, statistics need to be re-gathered as there can now be
     tables that have significantly changed during the upgrade or new tables
     that do not have statistics gathered yet.

   + Gather statistics on fixed objects two weeks after the upgrade using the
     command:

       EXECUTE DBMS_STATS.GATHER_FIXED_OBJECTS_STATS;

     This recommendation is given for all preupgrade runs.

     Fixed object statistics provide essential information to the Oracle
     optimizer to help it find efficient SQL execution plans.  Those
     statistics are specific to the Oracle Database release that generates
     them, and can be stale upon database upgrade.

  INFORMATION ONLY
  ================
   + Check the Oracle documentation for the identified components for their
     specific upgrade procedure.

     The database upgrade script will not upgrade the following Oracle
     components:  OLAP Catalog,OWB

     The Oracle database upgrade script upgrades most, but not all Oracle
     Database components that may be installed.  Some components that are not
     upgraded may have their own upgrade scripts, or they may be deprecated
     or obsolete.

Perceba que a ferramenta faz uma verificação de todo o ambiente, se tem options inválida, o que irá sofrere o upgrade e etc. Nesse mesmo arquivo de log tem as recomendações a ser executadas antes e depois do processo. Juntamente com o arquivo de log, tem os scripts que podem ser executados que implementam as recomendações, mas, nem todas as ações serão automáticas. Veja um exemplo:

SQL> @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:            2019-11-25 12:08:51

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

                          Fixup
Check Name                Status  Further DBA Action
----------                ------  ------------------
min_recovery_area_size    Failed  Manual fixup required.
em_present                Failed  Manual fixup recommended.
amd_exists                Failed  Manual fixup recommended.
dictionary_stats          Passed  None
trgowner_no_admndbtrg     Failed  Manual fixup recommended.
mv_refresh                Failed  Manual fixup recommended.
apex_upgrade_msg          Failed  Manual fixup recommended.

PL/SQL procedure successfully completed.

Perceba que todas as recomendações menos 1 terá que ser manual, verifique o arquivo de log e o script preupgrade_fixups.sql pois lá você saberá o que fazer. Por exemplo, vejamos o problema amd_exists. Temos que remover a option OLAP catalog, que esta desupported. O próprio script e o log nos diz o que fazer, devemos executar o script $ORACLE_HOME/olap/admin/catnoamd.sql script.

Se executar o script acima, o problema será resolvido, a se rodar novamente o script preupgrade_fixups.sql, ele irá informar que não precisa mais resolver, já esta ok.

Para resolver o pre requisito amd_exists, devemos executar o script @emremove.sql. Mas, veja que esse script se encontra na ORACLE_HOME do 12.2, enquanto do do OLAP se encontra mesmo com a HOME do 11g.

Resolvendo esses dois casos, já vai resolver os problema trgowner_no_admndbtrg, que sera trigger em um owner sem o privilégio necessário.

Depois de tudo resolvido, esvazie a recyclebin do oracle executando o seguinte comando:

purge dba_recyclebin;

Agora vamos executar o dbua da ORACLE_HOME/bin da versão 12.2. Assim que executar, a seguinte tela irá aparecer para escolher qual banco sofrerá o upgrade, informando a senha de sys:

Vamos deixar o outro banco, orcl2, para fazer o upgrade manual no post seguinte. Na etapa seguinte, o Oracle irá fazer uma verificação, em parecido com a ferramente de pre-upgrade.

Na tela seguinte, podemos escolher algumas opções relativas ao processo de upgrade.

Parallel irá acelerar todo o trabalho, utilizando os recursos de várias cpu da máquina. Podemos também deixar tudo como default, ou remover algumas opções para o upgrade terminar mais rápido e fazer depois que terminar, como recompilar objetos inválidos, e etc.

A proxima tela é sobre como recuperar o banco no caso do upgrade falhar. Temos as opções de usar um backup existente, criar um backup ou habilitar o flashback do database e criar um Restore Point.

No passo 5 acima, podemos migrar o listener criado e já configurado ou criar um novo.

Passo 6 podemos configurar o Enterprise Manager, tanto o express como o Cloud Control.

Passo 7 é o resumo do que será feito.

Passo 8 é o progresso do upgrade. E por último, o passo 9 é os resultados do upgrade. Fácil não?

No próximo post veremos como realizar o upgrade manual, sem ser pelo DBUA.

Meu nome é Tércio Costa, sou formado em Ciências da Computação pela UFPB, tenho a certificação OCA 12c, Oracle SQL Expert e OCP PL/SQL, mantendo um blog reconhecido pela OTN(oraclepress.wordpress.com), no qual também publico artigos técnicos no portal OTN, no portal http://www.profissionaloracle.com.br/gpo e na revista SQL Magazine. Além de tudo isto sou um Oracle ACE por estar sempre contribuindo para a comunidade com um bom nível de expertise.

Marcado com: , ,
Publicado em UPGRADE

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.

Esse Blog é reconhecido pela
Sou um
Certificações
Sou articulista

Clique para seguir este blog e receber notificações via email de novos posts.

Tércio Costa

Tércio Costa

Meu nome é Tércio Costa, sou formado em Ciências da Computação pela UFPB, tenho a certificação OCA 12c, Oracle SQL Expert e OCP PL/SQL, mantendo um blog reconhecido pela OTN(oraclepress.wordpress.com), no qual também publico artigos técnicos no portal OTN, no portal http://www.profissionaloracle.com.br/gpo e na revista SQL Magazine. Além de tudo isto sou um Oracle ACE por estar sempre contribuindo para a comunidade com um bom nível de expertise.

Links Pessoais

Serviços verificados

Visualizar Perfil Completo →

Total de Visualizações da Página
  • 175.431 Visualizações
%d blogueiros gostam disto: