Sunday, December 17, 2017

Manual Upgrade Non-CDB Oracle Database para 12.1

Ambiente Utilizado

Abaixo estão as principais caracteristicas do ambiente que será atualizado:

Servidoresol6-ora121-rac1ol6-ora121-rac2
Database Namesurtsurt
Instance Namesurt1surt2
GI Version12.1.0.212.1.0.2
Source Version11.2.0.411.2.0.4
Dest Version12.1.0.212.1.0.2
ASM Comp12.1.0.0.012.1.0.0.0
ASM DG Comp10.1.0.0.010.1.0.0.0
DB Comp11.2.0.01.2.0.0
SO Red Hat 6.8Red Hat 6.8


Principais Alterações Para Atualizar Para o Oracle 12c


No 12c houveram muitas atualizações, o processo de upgrade tradicional o qual estamos acostumados ficou bem diferente, para os DBAs um pouco mais antigos é legal executar alguns Labs antes de partir para produção. As principais modificações estão listadas abaixo:



 

Pre-requisitos


Upgrade Path


Validar quais "caminhos", são possiveis para realizar o upgrade para a versão 12.1, é importante seguir o patchset minimo para cada versão, a lista completa depende de uma série de fatores e deve ser buscada diretamente do fornecedor, a lista a seguir representa o patch minimo para a versão 12.1, pode ser validada a partir dos caminhos:

MOS: Complete Checklist for Manual Upgrades to Oracle Database 12c Release 1 (12.1) (Doc ID 1503653.1)



Validar a Matrix de Compatibilidade SO / Database


Sempre em qualquer atualização validar a matrix de compatibilidade  entre SW e SO, Cluster, ASM, Client e Drivers de Conexão, neste exemplo apenas temos as validações de SO e GI:

A Matrix de cluster por ser encontrada no MOS: Oracle Clusterware (CRS/GI) - ASM - Database Version Compatibility (Doc ID 337737.1)




Validar a Matrix de Compatibilidade Client / Database


Em um ambiente distribuido e importante garantir a inter conectividade entre as bases de dados e clientes nas diversas versões necessárias, utilizar a nota abaixo:

Client / Server Interoperability Support Matrix for Different Oracle Versions (Doc ID 207303.1)


Scripts de validação - Pre-upgrade


Como melhores praticas seguir com a validação da base de dados através da execução dos scripts abaixo, eles podem ser baixados do metalink direto, o que é recomendavel, pois estaremos utilizando a versão mais nova de cada documento.

Após a execução dos script de pre-upgrade seguir com as recomendações e ações necessárias para realizar o upgrade.

Script to Collect DB Upgrade/Migrate Diagnostic Information (dbupgdiag.sql) (Doc ID 556610.1)
How to Download and Run Oracle's Database Pre-Upgrade Utility (Doc ID 884522.1)
hcheck.sql - Script to Check for Known Problems in Oracle8i, Oracle9i, Oracle10g, Oracle 11g and Oracle 12c (Doc ID 136697.1)

Após a execução dos scripts acima e qualquer correção apontada, seguir para o passo abaixo


Recomendações gerais


Abaixo estão os passos que eu considero importantes de serem executados e validados antes do upgrade, a lista completa pode ser encontrada em:

Complete Checklist for Manual Upgrades to Oracle Database 12c Release 1 (12.1) (Doc ID 1503653.1)
Oracle 12cr1 Upgrade Companion(Doc ID 1462240.1)
  • Truncar a tabela sys.aud$;
  • Esvaziar a Recycle Bin;
  • Remover objetos do sys e system duplicados, sob a supervisão da Oracle;
  • Remover componentes obsoletos;
  • Validar instalação e o Inventário;
  • Instalação de qualquer Patchset e/ou PSU necessáros;
  • Coletar estatisticas para o sys;
  • Copiar arquivos de Network e Password entre as instalações de origem e destino.

Executando o upgrade na base de dados

Após os passos acima serem executados, podemos prosseguir com o processo de upgrade, para ajudar no processo utilizei as notas abaixo:

MOS: Oracle 12cR1 Upgrade Companion (Doc ID 1462240.1)
MOS: Complete Checklist for Manual Upgrades to Oracle Database 12c Release 1 (12.1) (Doc ID 1503653.1)

A maior diferença no processo de upgade entre as versões pre-12c é que na versão 12c temos o novo script em perl catctl.pl que executa o script catupgrd.sql, o script aind pode ser executado como era feito antes, porém não é recomendado pela Oracle.

O script catctl.pl nos permite executar o script em parallel e a trabalhar com banco de dados em multitenant, oferencendo maior flexibilidade ao processo de upgrade. O utilitário DBUA faz uso do script catctl.pl.

Passo a Passo

  • Para banco de dados em Oracle RAC configurar o parametro cluster_database para false
  • Parar a base de dados
    • SQL> shutdown immediate;
  • Copiar arquivos de inicialização e senha dos home antigo para o home novo:
    • $ORACLE_HOME/dbs/init$ORACLE_SID.ora
    • $ORACLE_HOME/dbs/orapwd$ORACLE_SID
  • Ajustar scripts e variaveis de ambiente que apontem para o ORACLE_HOME antigo para o novo
    • /etc/oratab
  • Iniciar a base de dados em startup upgrade
    • Este processo permite que a instancia antiga inicie com um binário mais novo.
    • SQL> startup upgrade
  • Executar o script de upgrade
    • cd $ORACLE_HOME/rdbms/admin
    • $ORACLE_HOME/perl/bin/perl catctl.pl catupgrd.sql
    • O Script permite algumas parametrizações como controle da saida de log, numero de processos em parallelo e excluir ou incluir um PDB durante o processo de upgrade, a lista pode ser encontrada em:
  • Revisar o log de upgrade procurando por erros
  • Abrir o banco de dados na nova versão
    • SQL> startup

Atividade Pós upgrade

Após a execução do script de atualização, seguir com as atividades de pós atulização conforme abaixo, alguns passos mais detalhados podem ser encontrados em:

MOS: Oracle 12cR1 Upgrade Companion (Doc ID 1462240.1)
MOS: Complete Checklist for Manual Upgrades to Oracle Database 12c Release 1 (12.1) (Doc ID 1503653.1)

  • Recompilar os objetos invalidos executando o script abaixo
    • $ORACLE_HOME/perl/bin/perl catcon.pl -n 1 -e -b utlrp -d '''.''' utlrp.sql
  • Executar o script de post-upgrade gerado pelo passo de pre-ugrade utility
    • postupgrade_fixups.sql
  • Executar o script utlu121s.sql para validar que todos os problemas foram resolvido
    • SQL> @rdbms/admin/utlu121s.sql
  • Executar o script utluiobj.sql para validar que todas packages esperadas estejam validas
    • $ORACLE_HOME/perl/bin/perl catcon.pl -n 1 -e -b utluiobj -d '''.''' utluiobj.sql
  • Executar o script de diagnostico e comparar o resultado com o diagnostico antes do upgrade
    • Script to Collect DB Upgrade/Migrate Diagnostic Information (dbupgdiag.sql) (Doc ID 556610.1)
  • Executar um backup da base de dados
  • Coletar estatisticas do dicionário

Existem outras atividades que podem ser necessárias, mas devem ser avaliadas conforme o ambiente em questão.

Diogo Nomura

No comments: