Upgrade do Oracle Database 11gR2 para 12c

Por Raul Francisco
Postado em Março 2014


Neste documento irei tratar do upgrade do Oracle versão 11.2.0.1  para a versão 12c. 
Procurando tratar de uma forma simples e inteligível a todos que tenham um conhecimento de médio a avançado em banco de dados e suas rotinas de atualizações, tratando muitas vezes em uma linguagem simples do dia a dia do DBA.

Algumas das etapas aqui, poderão também ser feitas de forma diferente, porém procurei fazer da forma mais didática possível, exibindo “prints” de tela e exemplos de configuração.

Do ambiente do laboratório

O sistema operacional utilizado é o Oracle Enterprise Linux 5.6 x86_64. A máquina utilizada possui um processador Intel Core i5 com 6gb de RAM rodando em ambiente virtualizado com Oracle Virtual Box 4.2.16 todo o ambiente montado sobre um hospedeiro com Windows 8, o ambiente é todo 64 bits e o ambiente virtualizado foi montado bi-processado com 2Gb de RAM.

Toda o processo de atualização envolvendo visual gráfico foi emulado com a utilização do aplicativo Xming e putty com utilização de emulação SSH X11, demostrada abaixo como exemplo e dica.

 


Primeira análise

Antes de qualquer coisa o primeiro item a a ser analisada é se é possível upgrade direto da versão que temos para a versão desejada (target).
Para isso a documentação de upgrade da Oracle traz a tabela abaixo:

IfyourCurrent Release is:

ThentheDirectorIntermediate Upgrade Path is:

11.2.0.2 or later
11.1.0.7
10.2.0.5

Direct upgrade is supported. Perform the upgrade using the current Oracle Database Upgrade Guide, which is this guide.

11.2.0.1
11.1.0.6
10.2.0.2, 10.2.0.3, and 10.2.0.4
10.1.0.5
9.2.0.8 orearlier

Direct upgrade to Oracle Database 12c is not supported.
Solution: Upgrade to an intermediate Oracle Database release (that can be directly upgraded to release 12.1) before you can upgrade to the new Oracle Database 12c. This does not include upgrading using Oracle Data Pump export/import. When upgrading to an intermediate Oracle Database release, follow the instructions in the intermediate release's documentation. Then, upgrade the intermediate release database to the new Oracle Database 12c release using the instructions in Chapter 3, "Upgrading Oracle Database".
For example:
■If you are upgrading from 11.2.0.1 or 11.1.0.6, then you must first upgrade to Oracle Database 11g Release 2 (11.2.0.2).
■If you are upgrading from 10.2.0.2, 10.2.0.3, 10.2.0.4, or 10.1.0.5, then you must first upgrade to 10.2.0.5 or later.
■For release 9.2.0.8, you must first upgrade to an intermediate Oracle Database release, as follows:
9.2.0.8 -> 11.2.0.2 or 11.2.0.3 -> 12.1

Atualização para a versão 11.2.0.3

No caso em questão estava na versão 11.2.01, portanto se faz necessário atualizar primeiramente para a versão 11.2.0.2 ou 11.0.2.3.
Escolhida a versão mais atualizada, foi preciso baixar o arquivo de atualização p10404530_112030_Linux-x86-64_1of7.zip (1 ao 7) do metalink.

Atualizando:

1- Instala-se primeiro os binários da versão 11.2.0.3 em outro ORACLE_HOME.

Eu usei fazer em /u01/app/oracle/product/11.2.3/linora_1 ( o antigo era /u01/app/oracle/product/11.2.0/linora_1).

2- Copia os arquivos $ORACLE_HOME(antigo)\dbs\*.ora para o $ORACLE_HOME(novo)\dbs

3- Copia os arquivos $ORACLE_HOME(antigo)\network\admin\*.ora para o $ORACLE_HOME(novo) \network\admin.

4- Depois Seta o ORACLE_HOME para novo endereço pelo .bash_profile, e executa o .bash_profile – IMPORTANTE para não dar erro no DBUA dizendo que não está montado o banco.

5- Depois baixa a base pelo SQLPLUS 11.2.0.1, caso esteja no ar ainda (indo no endereço do bin antigo e executando com ./sqlplus “/ as sysdba”) depois sobe apenas mount no 11.2.0.3

Caso esteja baixada apenas subir pelo SQLPLUS da versão 11.2.0.3

6- Faz um PURGE DBA_RECYCLEBIN

7- Rodando o DBUA

A forma de atualização escolhida foi através do DBUA (Database Upgrade Assistant)



 

Na janela acima eu escolho desabilitar archive durante o processo para melhor performance.

 

Na etapa acima permite a transferência da base de dados de File system para ASM


 

Pode ser que no decorrer do DBUA ocorram algumas falhas que podem ser ignoradas.

 

Estes erros referem-se a itens que não se utilizará mais no 12c ou que na atualização deste serão corrigidos, portanto não há problema em ignorar, uma vez que a versão 11.2.0.3 será apenas uma ponte para a versão nova.

   

Confirmando a atualização:

 

Conferida a instalação devemos recompilar os objetos inválidos para facilitar para a atualização para a versão 12c.


 


O próximo passo será instalar os binários do Oracle 12c em um novo ORACLE_HOME


Iniciando a Instalação do Oracle 12c

 

Preencher caso tenha os dados, caso contrário deixar a opção desmarcada e next


Sem preencher nada terá o aviso:

Pode pressionar Yes e continuar.

Caso seja sem credencial marque skip software updates

Instalando apenas os binários

 

Altera o Oracle home eu utilizei 12.1.0 e o resto igual ao anterior


 


O próximo passo é preparar para o upgrade do banco de dados para a versão 12c.
Ainda com o 11.2.0.3 (antes de setar o novo ORACLE_HOME conecte no sqlplus e rode o script:
Que está no $ORACLE_HOME_novo\rdbms\admin\preupgrd.sql dá pagina 2-26 do Upgrade Guide Oracle®

 

Precisamos analisar o log em:
/u01/app/oracle/cfgtoollogs/linora/preupgrade/preupgrd.log

Lá existem algumas dicas e verificações que devem ser feitas antes do upgrade.

  1. Rodar depois o script gerado pelo pré upgrade:
    /u01/app/oracle/cfgtoollogs/linora/preupgrade/preupgrade_fixups.sql
 

Este arquivo acima gera log com algumas ações que deve ser verificadas


SQL> @ /u01/app/oracle/cfgtoollogs/linora/preupgrade/preupgrade_fixups.sql;

 

Pre-Upgrade Fixup Script Generated on 2013-08-06 16:57:29  Version: 12.1.0.1 Build: 006

 

Beginning Pre-Upgrade Fixups...

 

**********************************************************************

 

Check Tag:  COMPATIBLE_PARAMETER

 

Check Summary: Verify compatible parameter value is valid

 

Fix Summary:"compatible" parameter must be increased manually prior to upgrade.

 

**********************************************************************

 

Fixup Returned Information:

 

ERROR: --> Compatible set too low "compatible" currently set at 10.2.0.3.0 and must be set to at least 11.0.0 prior to upgrading the database.

 


Update your init.ora or spfile to make this change.

 

**********************************************************************

 

**********************************************************************

 

Check Tag:  EM_PRESENT

 

Check Summary: Check if Enterprise Manager is present

 

Fix Summary: Execute emremove.sql prior to upgrade.

 

**********************************************************************

 

Fixup Returned Information:

 

WARNING: --> Enterprise Manager Database Control repository found in the database

 

In Oracle Database 12c, Database Control is removed during the upgrade. To save time during the Upgrade, this action can be done prior to upgrading using the following steps after copying rdbms/admin/emremove.sql from the new Oracle home
- Stop EM Database Control:
$> emctl stop dbconsole

 


- 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.
**********************************************************************


**********************************************************************
Check Tag:  INVALID_SYS_TABLEDATA
Check Summary: Check for invalid (not converted) table data
Fix Summary:UPGRADE Oracle supplied table data prior to the database upgrade.
**********************************************************************
Fixup Succeeded
**********************************************************************


**********************************************************************
Check Tag:  REMOVE_DMSYS
Check Summary: Check for existance of DMSYS schema
Fix Summary:The DMSYS schema is removed as part of the upgrade.
**********************************************************************
Fixup Returned Information:
WARNING: --> "DMSYS" schema exists in the database

  The DMSYS schema (Oracle Data Mining) will be removed
  from the database during the database upgrade.
  All data in DMSYS will be preserved under the SYS schema.
  Refer to the Oracle Data Mining User's Guide for details.
**********************************************************************


**********************************************************************
Check Tag:  AMD_EXISTS
Check Summary: Check to see if AMD is present in the database
Fix Summary:Manually execute ORACLE_HOME/oraolap/admin/catnoamd.sql script to  remove OLAP.
**********************************************************************
Fixup Returned Information:
INFORMATION: --> OLAP Catalog(AMD) exists in database

  Starting with Oracle Database 12c, OLAP is desupported.
  If you are not using the OLAP Catalog component and want
  to remove it, then execute the
  ORACLE_HOME/oraolap/admin/catnoamd.sql script before or
  after the upgrade.
**********************************************************************


**********************************************************************
                   [Pre-Upgrade Recommendations]
**********************************************************************

                     *****************************************
                     ********* Dictionary Statistics *********
                     *****************************************

Please gather dictionary statistics 24 hours prior to
upgrading the database.
To gather dictionary statistics execute the following command
while connected as SYSDBA:
 EXECUTE dbms_stats.gather_dictionary_stats;

^^^ MANUAL ACTION SUGGESTED ^^^


                     *****************************************
                     ************ Existing Events ************
                     *****************************************

Please review any defined events prior to upgrading.

To view existing nondefault events execute the following commands
while connected AS SYSDBA:
 Events:
 SELECT (translate(value,chr(13)||chr(10),' ')) FROM sys.v$parameter2
   WHERE  UPPER(name) ='EVENT' AND  isdefault='FALSE';

 Trace Events:
 SELECT (translate(value,chr(13)||chr(10),' ')) from sys.v$parameter2
   WHERE (UPPER(name) = '_TRACE_EVENTS') AND isdefault='FALSE';

Changes will need to be made in the init.ora or spfile.

^^^ MANUAL ACTION SUGGESTED ^^^

         ********        Existing Events    ********
         ********  Query may return no Rows Selected *****

         ********   Existing Trace Events   ********
         ********  Query may return no Rows Selected *****

        **************************************************
             ************* Fixup Summary ************

1 fixup routine was successful.
3 fixup routines returned INFORMATIONAL text that should be reviewed.
1 ERROR LEVEL check returned INFORMATION that must be acted on prior to upgrade                                                                                     .

   ************************************************************
                ====>> USER ACTION REQUIRED  <<====
   ************************************************************

1) Check Tag: COMPATIBLE_PARAMETER failed.
 Check Summary: Verify compatible parameter value is valid
 Fixup Summary:
  ""compatible" parameter must be increased manually prior to upgrade."
 ^^^ MANUAL ACTION REQUIRED ^^^

        **************************************************
         You MUST resolve the above error prior to upgrade
        **************************************************


**************** Pre-Upgrade Fixup Script Complete *********************
SQL>                                                                                                                                                                 

Estas alterações citadas no arquivo devem ser feitas algumas manualmente.
É um roteiro bem simples e todos os SQL devem ser feitos através do SQLPLUS da versão 11.2.0.3

Copiando arquivos listener, tnsnames, sqlnet, orapw, init e spfile:
Copiar os arquivos do endereço do velho ORACLE_HOME para o novo.


Lembrar de alterar os arquivos do listener, tnsnames para novo ORACLE_HOME

Com o banco open na versão 11.2.0.3. Nesse ponto é importante de lembrar que o banco deve estar mesmo no modo OPEN e não apenas mount como anteriormente no upgrade da versão 11.2.0.3.


Invocando o DBUA

Feitas as etapas de pré-upgrade, efetuados os FIXs é chegada a hora de atualizar realmente o database. Existem duas formas de se fazer isso, de modo gráfico com o DBUA (Database Upgrade Assistant) ou pelo modo scripts. Neste caso vamos ilustrar com o DBUA, porém caso queira proceder via script verificar a página 3-23 [página 99 do PDF] no Upgrade Guide Oracle 12c (E17642-13).

Deve ser executado o DBUA do novo BIN.
Porém antes verificar como está a posição no /etc/oratab

Deve estar como abaixo:
linora:/u01/app/oracle/product/11.2.3/linora_1:Y






Verificar na janela acima as verificações e efetuar o que for necessário.

No caso acima optei por rodar o script de recompilação de objetos inválidos

Conferindo...

Feito isso clicar no botão check again
Depois da verificação está ok

 

Caso precise subir o LISTENER na versão nova faça um export do ORACLE_HOME para o novo endereço, suba o listener com lsnrctl start depois volte novamente o ORACLE_HOME para o antigo.

Na janela acima pode ser feito o backup do sistema utilizando o RMAN.
Eu marquei a opção que não faz backup pois já tenho backup feito manualmente antes.



Durante o processo poderá ser acompanhado o log da atividade através do botão Activity Log e a atividade do Alert Log através do botão com este nome.

 



Acessando o Enterprise Manager Database Express

Uma das grandes mudanças na nova versão é o Enterprise Manager Database Express.
Ele agora não é mais iniciado com 

emctl start dbconsole

Agora utilizamos a seguinte query direto no SQLPLUS para startar o serviço:

select dbms_xdb_config.gethttpsport() from dual;


Para acessar a página do Enterprise Manager Database Express o endereço é no padrão:

https://localhost.localdomain:5500/em


No meu caso:

https://svuxlinora2:5500/em





Raul Francisco C. F. Andrade, é um Oracle Certified Professional (OCP) Database Administrator (DBA) com mais de 20 anos de experiência no trabalho com a solução de ERP gerenciamento de projetos para a implantação própria e área pública em diversos estados brasileiros. Experiência em banco de dados Oracle e desde 2005 como DBA - Oracle Database Administrator.