O Apex é uma ferramenta low-code muito interessante e conveniente. Infelizmente, é oferecida pela Oracle.
Como tudo é que é produzido pela empresa, ela oferece muitas facilidades para os programadores, mas é deficiente na administração.
Por algum motivo misterioso, ou talvez simplesmente fruto da complexidade desnecessária que a Oracle julga interessante aplicar a tudo, não é possível usar o Data Pump para exportar e importar os schemas do Apex.
O zip de instalação oferece um par de classes para exportar partes do Apex: oracle.apex.APEXExport.class e oracle.apex.APEXExportSplitter.class
Ele oferece várias opções, mas não uma maneira de exportar tudo de uma vez e, o mais curioso, não oferece uma maneira de exportar as configurações da instância. É preciso exportar primeiro os workspaces e então as aplicações:
java -cp .:ojdbc8.jar oracle.apex.APEXExport \
-db mydb.mycompany.com:1521/apex.mydb.mycompany.com \
-user system \
-password hard2crack \
-expWorkspace
java -cp .:ojdbc8.jar oracle.apex.APEXExport \
-db mydb.mycompany.com:1521/apex.mydb.mycompany.com \
-user system \
-password hard2crack \
-instance
Isso vai gerar um arquivo w123.sql para cada workspace e um arquivo f123.sql para cada aplicação.
Enquanto isso, recomendo guardar cópias das páginas de configuração da instância.
Então, no servidor destino, é preciso rodar uns comandos.
Em primeiro lugar, se já existe uma instância do Apex, é preciso remover todos os workspaces antes de carregar os novos:
begin
-- Verifique os ids das aplicações a serem exportadas
for w in (select * from apex_workspaces where workspace_id>1000) loop
APEX_INSTANCE_ADMIN.REMOVE_WORKSPACE(p_workspace=>w.workspace);
end loop;
end;
Depois, pode-se carregar os workspaces e as aplicações:
. ./mynewdb.env
ls -1a w*sql | xargs -I{} sqlplus / as sysdba @{}
ls -1a f*sql | xargs -I{} sqlplus / as sysdba @{}
Conforme o tamanho de sua instância, isso pode demorar.
Como nem as menores coisas da Oracle estão livre de bugs, problemas, e poréns, a configuração de autenticações com Web Credentials, não funciona e o campo client-id não foi copiado.
update wwv_credentials
set client_id='my-id'
where client_id is null
Como prêmio final, os nomes das aplicações saíram com erro de codificação e precisaram ser corrigidos manualmente.
Nenhum comentário:
Postar um comentário