Remover ou atualizar o APEX para atualização do banco de dados Oracle de 12.1 para versão 12.2?
Autor: Thiago Castro | Publicado: 2017-03-16T13:27:00-07:00

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Hoje fui realizar testes de migração de algumas bases de homologação que usam CDB da versão 12.1 para 12.2. E me deparei com um situação que gostaria de compartilhar.
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Se você não tiver personalizado sua instalação através de scripts, que foi meu caso, seu CDB$ROOT terá o APEX instalado por padrão.
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Bom, o primeiro passo pra migração é executar o utilitário disponibilizado pela própria Oracle preupgrade.jar. Você pode baixa-lo no MOS Note:884522.1.

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; A execução é simples:




java -jar /u01/app/oracle/product/12.2.0.1/rdbms/admin/preupgrade.jar TEXT




&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Depois que o logs forem gerados, serão criados alguns arquivos com recomendações para o upgrade e se você tiver o APEX instalado, uma delas será:

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

&nbsp; &nbsp; &nbsp;The database contains APEX version 4.2.5.00.08 and will need to be
&nbsp; &nbsp; &nbsp;upgraded to at least version 5.0.4.00.12.

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



&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;É justamento sobre essa recomendação que quero falar. Ela é somente uma informação não é um erro e nem vai te impedir de atualizar. Mas se você remover ou atualizar o APEX antes de migrar seu banco de dados Oracle, terá o seu tempo de upgrade reduzido. Eu optei por excluir o APEX do CDB$ROOT, pois fazendo isso você pode instalar o APEX somente nos PDBs que realmente precisa e também pode ter várias versões diferentes do APEX.

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Pode usar a consulta pra verificar a versão instalada.



select reg.COMP_NAME, reg.VERSION, con.NAME, con.CON_ID
from CDB_REGISTRY reg, V$CONTAINERS con
where reg.CON_ID=con.CON_ID and reg.COMP_ID='APEX' order by CON_ID;




Removendo o APEX DO CDB$ROOT
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Lembrando que fazendo isso estamos removendo também de todos os PDBS. Se quiser aprofundar mais pode conferir a documentação

Acesse o diretório:


&nbsp;cd $ORACLE_HOME/apex




Conecte no CDB$ROOT e execute o script para remover o APEX



&nbsp;sqlplus / as sysdba
&nbsp;SQL&gt; @apxremov_con.sql



&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Verifique se o APEX foi realmente removido e se existe algum objeto inválido.



select comp_id, STATUS from dba_registry where comp_id='APEX';
select object_name, status from dba_objects where status='INVALID';



&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Caso necessário execute o script abaixo para recompilar os objetos inválidos.


SQL&gt; @?/rdbms/admin/utlrp.sql




Depois de desinstalado... agora é seguir com o upgrade. Caso queira realizar a instalação do APEX nos PDBs faça:



cd $ORACLE_HOME/apex
sqlplus / as sysdba
SQL&gt; alter session set container=SEUPDB;
SQL&gt; @apexins.sql SYSAUX SYSAUX TEMP /i/




Verifique a instalação executando


select comp_id, status , con_id from cdb_registry where comp_id='APEX';