Upgrade Oracle Database 11gR2 (11.2.0.4) para 12cR1


Pessoal,

No artigo de hoje demonstrarei como fazer upgrade do Oracle Database 11g para 12cR1.
Informações importantes sobre upgrade encontramos na documentação da Oracle, pelo site:
http://docs.oracle.com/database/121/UPGRD/toc.htm



Bom, nosso servidor está com a versão 11.2.0.4 instalada e de acordo com a documentação da Oracle não teremos problemas para o upgrade diretamente para 12c a partir desta versão. É importante que o nosso banco 11g esteja UP, como vemos abaixo:

[oracle@serv02 /]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.4.0 Production on Fri Jul 21 14:03:43 2017
Copyright (c) 1982, 2013, Oracle.  All rights reserved.

SQL> conn / as sysdba
Connected.
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
CORE    11.2.0.4.0      Production
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production

SQL> select status from v$instance;
STATUS
------------
OPEN
SQL>

Vamos alterar o usuário HR e criar uma tabela de teste para verificarmos os dados após o upgrade do banco para Oracle Database 12c:

SQL> alter user hr identified by hr account unlock;

User altered.
SQL> conn hr/hr
Connected.

SQL> create table tb_teste_upgrade as select * from all_objects;
Table created.

SQL> select count(*) from tb_teste_upgrade;
COUNT(*)
----------
68350
SQL>

Crie o diretório e ajuste o bash_profile para nova instalação dos binários do Oracle 12c conforme caminho abaixo:

export ORACLE_HOME=/u01/app/oracle/product/12.1.0.1/db_1

Eu tenho os binários da instalação do Oracle Database 12c no diretório abaixo:

[oracle@serv02 database]$ pwd
/u01/InstOracle/database
[oracle@serv02 database]$ ls -ltr
total 36
-rwxr-xr-x  1 root root  500 Feb  6  2013 welcome.html
-rwxr-xr-x  1 root root 8533 Jul  7  2014 runInstaller
drwxr-xr-x  2 root root 4096 Jul  7  2014 rpm
drwxrwxr-x  2 root root 4096 Jul  7  2014 sshsetup
drwxrwxr-x  2 root root 4096 Jul  7  2014 response
drwxr-xr-x 14 root root 4096 Jul  7  2014 stage
drwxr-xr-x  4 root root 4096 Jul 21 13:53 install
[oracle@serv02 database]$

Instale apenas o software do Oracle Database 12c como imagens abaixo:

Altere o endereço de localização do software para o novo diretório criado como abaixo:


Precisamos agora preparar o ambiente para o upgrade do banco de dados para a versão do Oracle Database 12c.
Utilizando a versão 11g conecte-se no sqlplus e rode o script que está no $ORACLE_HOME_novo\rdbms\admin\preupgrd.sql

Você deve analisar seu banco de dados antes de atualizá-lo para a nova versão. Isso é feito executando o script de informação para pré-atualização: preupgrd.sql no ambiente do banco de dados que você deve atualizar. Este script fornece uma pré-visualização dos itens que DBUA verifica e informações sobre qualquer coisa a ser corrigida. A ferramenta de informação pré-atualização gera scripts de correção que você pode executar para resolver problemas que são marcados no banco de dados de origem.

Vamos executar o escript preupgrd.sql:

[oracle@serv02 InstOracle]$ echo $ORACLE_HOME
/u01/app/oracle/product/11.2.0.4/db_1

[oracle@serv02 InstOracle]$ cd /u01/app/oracle/product/12.1.0.1/db_1/rdbms/admin
[oracle@serv02 admin]$

Conecte ao sqlplus no banco up do 11g e execute o arquivo: preupgrd.sql

SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
CORE    11.2.0.4.0      Production
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production

SQL> @/u01/app/oracle/product/12.1.0.1/db_1/rdbms/admin/preupgrd.sql;

Verifique as recomendações no log: preupgrade.log e faça as devidas correções para na sequência executar o arquivo: preupgrade_fixups.sql

Uma amostra da execução do script preupgrd.sql:

ACTIONS REQUIRED:

1. Review results of the pre-upgrade checks:
/u01/app/oracle/cfgtoollogs/ORCL/preupgrade/preupgrade.log

2. Execute in the SOURCE environment BEFORE upgrade:
/u01/app/oracle/cfgtoollogs/ORCL/preupgrade/preupgrade_fixups.sql

3. Execute in the NEW environment AFTER upgrade:
/u01/app/oracle/cfgtoollogs/ORCL/preupgrade/postupgrade_fixups.sql

Após analisar o log rodar o script gerado pelo pré upgrade:

@/u01/app/oracle/cfgtoollogs/ORCL/preupgrade/preupgrade_fixups.sql

Realizar as alterações citadas no log deste script, todos os SQL devem ser feitos através do SQLPLUS da versão 11g

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

[oracle@serv02 dbs]$ pwd
/u01/app/oracle/product/11.2.0.4/db_1/dbs

[oracle@serv02 dbs]$ ls -ltr
total 20
-rw-r--r-- 1 oracle oinstall 2851 May 15  2009 init.ora
-rw-r----- 1 oracle oinstall   24 Sep 13  2014 lkORCL
-rw-r----- 1 oracle oinstall 1536 Sep 13  2014 orapwORCL
-rw-rw---- 1 oracle oinstall 1544 Jul 25 14:18 hc_ORCL.dat
-rw-r----- 1 oracle oinstall 2560 Jul 25 15:11 spfileORCL.ora

[oracle@serv02 dbs]$ cp init.ora orapwORCL spfileORCL.ora /u01/app/oracle/product/12.1.0.1/db_1/dbs/
[oracle@serv02 dbs]$

[oracle@serv02 admin]$ pwd
/u01/app/oracle/product/11.2.0.4/db_1/network/admin

[oracle@serv02 admin]$ ls -ltr
total 16
-rw-r--r-- 1 oracle oinstall  381 Dec 17  2012 shrept.lst
drwxr-xr-x 2 oracle oinstall 4096 Sep 13  2014 samples
-rw-r--r-- 1 oracle oinstall  381 Sep 13  2014 listener.ora
-rw-r----- 1 oracle oinstall  335 Sep 13  2014 tnsnames.ora
[oracle@serv02 admin]$


[oracle@serv02 admin]$ cp listener.ora tnsnames.ora /u01/app/oracle/product/12.1.0.1/db_1/network/admin/
[oracle@serv02 admin]$

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

Agora com o banco open na versão 11g utilizaremos o dbua para realizar o upgrade no banco:

SQL> select * from v$version;
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
CORE    11.2.0.4.0      Production
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 – Production

SQL> select open_mode from v$database;
READ WRITE
SQL>

Após as etapas de pré-upgrade, e realizado os FIXs é chegada a hora de atualizar o database. Utilzaremos o DBUA (Database Upgrade Assistant) .

Deixe seu /etc/oratab como o abaixo:

ORCL:/u01/app/oracle/product/11.2.0.4/db_1:Y

Execute o DBUA do novo BIN(12c) e prossiga com o upgrade:

[oracle@serv02 bin]$ pwd
/u01/app/oracle/product/12.1.0.1/db_1/bin
[oracle@serv02 bin]$
./dbua




Após as validações efetue a devidas correções que forem solicitadas no seu resultado como imagem acima.
Seguindo



Suba o novo listener com: lsnrctl start se precisar



Estou considerando também que temos um backup valido.







Agora vamos validar o banco após o upgrade:

[oracle@serv02 ~]$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.2.0 Production on Tue Jul 25 18:12:30 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, OLAP, Advanced Analytics and Real Application Testing options
SQL>
SQL> select status from v$instance;
STATUS
------------
OPEN

SQL> select open_mode from v$database;

OPEN_MODE
--------------------
READ WRITE
SQL> select * from v$version;

BANNER                                                                               CON_ID
-------------------------------------------------------------------------------- ----------
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production              0
PL/SQL Release 12.1.0.2.0 - Production                                                    0
CORE    12.1.0.2.0      Production                                                                0
TNS for Linux: Version 12.1.0.2.0 - Production                                            0
NLSRTL Version 12.1.0.2.0 - Production                                                    0
SQL>

Tudo certo, estamos com Oracle Database 12c agora. E a nossa tabela que criamos no inicio do artigo com usuário HR? Vamos consulta-la:

SQL> conn hr/hr
Connected.
SQL> select count(*) from tb_teste_upgrade;

COUNT(*)
----------
68350

SQL>

Tudo certo!
Se precisar acessar o Enterprise Manager Database Express
Emctl start dbconsole;

Verifique em qual porta está funcionando:

SQL> select dbms_xdb_config.gethttpsport() from dual;

DBMS_XDB_CONFIG.GETHTTPSPORT()
------------------------------
5500

SQL>
https://localhost.localdomain:5500/em


Abraço,
Ronaldo

Nenhum comentário:

Postar um comentário