Olá pessoal,
No post de hoje vou mostrar uma forma simples e fácil de startar o Oracle Rest Data Services (ORDS) após o startup do Banco de Dados, pois para garantir o correto funcionamento do Oracle Apex é necessário startar o ORDS sempre após o startup do BD que contém o repositório do Apex.
Criei este procedimento recentemente e ele consiste em nada do mais do que uma trigger de startup que chama uma procedure do pacote OS_COMMAND para executar um script shell do SO que contém os comandos necessários para startar o ORDS. Este procedimento pode ser utilizado para executar qualquer coisa similar que tenha que executar um script shell armazenado no FS do SO, ou para executar comandos do SO depois do startup do BD. Não fiz nada demais ao criar este procedimento, apenas juntei peças de um quebra-cabeças para resolver um problema cotidiano que eu tinha, pois antes de criar este procedimento, o script shell de startup do ORDS era executado através de um serviço do SO Linux que não estava sendo executado depois do startup do BD, e isso impedia o funcionamento correto do Oracle Apex.
ROTEIRO PARA IMPLEMENTAR O PROCEDIMENTO
1- Instalar o pacote OS_COMMAND conforme orientações do artigo Executando comandos do Sistema Operacional em SQL e PL/SQL;
2- Criar uma trigger de startup, como no exemplo abaixo, contendo uma chamada para a procedure sys.os_command.exec_clob, que por sua vez executa o script shell que contém os comandos necessários para executar o startup do ORDS:
create or replace TRIGGER TR_STARTUPBD AFTER STARTUP ON DATABASE
DECLARE
v_clob CLOB;
BEGIN
-- chama rotina para startar ORDS:
select sys.os_command.exec_clob('/oracle/apex/ords_start.sh start') INTO v_clob from dual;
END;
A procedure os_command.exec_clob executada na trigger do item 2 acima permite pegar a mensagem de retorno STDOUT do script executado, em uma variável do tipo CLOB. Uma dica caso o script ou comando executado não gere log, é utilizar essa variável para ver o retorno de execução do script e mandar o texto desse retorno por e-mail ao administrador do sistema.
Imagem 01 - Executando script shell do SO via OS_COMMAND.EXEC_CLOB |
Por hoje é só!
[]s
0 comments:
Postar um comentário