- Este tópico contém 10 respostas, 4 vozes e foi atualizado pela última vez 14 anos atrás por
MarceloPit.
-
AutorPosts
-
11 de novembro de 2011 às 9:27 pm #101605
MarceloPit
ParticipanteBoa Tarde,
Preciso de uma schedule para rodar imediatamente ao ser criada para executar um SQL Loader no Banco, pois tenho o arquivo lá no servidor do banco e como ele é muito grande, não gostaria de rodar o loader na estação e sim no servidor de banco de dados dirteto.
Alguem poderia me ajudar.Ja tentei criar uma procedure que executa um comando shell com o exemplo abaixo, mas não funcionou.
— Shell Script.
DBMS_SCHEDULER.create_program (
program_name => ‘test_executable_prog’,
program_type => ‘EXECUTABLE’,
program_action => ‘/u01/app/oracle/dba/gather_scott_stats.sh’,
number_of_arguments => 0,
enabled => TRUE,
comments => ‘Program to gather SCOTT”s statistics us a shell script.’);Pensei também em criar uma procedure que execute um loader ou um shell, mas tmb não da certo, pois o primeiro caso e impossível e o segundo eu estou com dificultades na implementação
Agradeço muito pela força, caso alguém possa me ajudar 😳
11 de novembro de 2011 às 9:34 pm #101607rman
Participante@MarceloPit
Não entendi a necessidade do schedule… Você precisa agendar um determinado horário para executar ?
O problema a ser resolvido é executar o sql loader no servidor sem precisar baixar o arquivo de carga na máquina do cliente ?
Qual é o sistema operacional do servidor e do cliente ?
11 de novembro de 2011 às 9:53 pm #101612MarceloPit
ParticipanteA necessidade é a seguinte, preciso carregar um arquivo no banco de dados, como o arquivo é muito grande, toda vez que rodo o sql loader na minha estação, o Loader leva aproximadamente 4 hs, mas qd rodo direto la no servidor do banco, a execução leva menos de 15 min.
A necessidade é que eu quero fazer uma aplicação que realize esse loader automaticamente direto no servidor para ganhar tempo.
Pensei nessa solução, mas caso tenha uma melhor, agradeço!
O sistema é Linux11 de novembro de 2011 às 9:59 pm #101614rman
Participante@MarceloPit
Utilizar uma conexão SSH no servidor, e rodar o sql loader já não resolve o problema ?
11 de novembro de 2011 às 10:02 pm #101615MarceloPit
ParticipanteHj eu ja faço assim, mas quero automatizar em uma aplicação para que o proprio usuario salve o arquivo la na pasta do servidor e execute um programa na maquina dele para rodar isso, pois hj ele fica na dependência que eu faça o loader.
11 de novembro de 2011 às 10:39 pm #101618fabiogalera
ParticipanteMarceloPit,
Existe diversas maneiras que voce poderia realizar, isso ira depender diretamente de como as coisas estao sendo feitas, de todo o processo, dos acessos que as pessoas tem, etc.
Pelo que noto, sua versao de Base de Dados parece ser 10g ou 11g, o que poderia ser utilizado o DBMS_SCHEDULER:
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'test_executable_prog',
job_type => 'EXECUTABLE',
job_action => '/u01/app/oracle/dba/gather_scott_stats.sh',
start_date => sysdate,
repeat_interval => 'FREQ=DAILY; INTERVAL=1',
enabled => TRUE,
comments => 'Testando o CREATE JOB');
END;
/
Outros meios existem, ate alguns mais faceis, como criar um script em SHELL SCRIPT e schedular ele na crontab, etc.
=)
17 de novembro de 2011 às 10:45 pm #101683MarceloPit
ParticipanteINFELIZMENTE JÁ HAVIA TENTADO ESSA SOLUÇÃO, MAS CONTINUO TENDO PROBLEMAS, SEGUE O ERRO:
ORA-27370: job slave failed to launch a job of type EXECUTABLE
ORA-27300: OS system dependent operation:getting external job pid failed with status: 2
ORA-27301: OS failure message: No such file or directory
ORA-27302: failure occurred at: sjsec 6a18 de novembro de 2011 às 2:39 pm #101685felipeg
ParticipanteOpa,
Poste o job que você criou para que possamos analisar.
Se você criou uma program pra chamar pelo job, poste também.Atenciosamente,
Felipe.18 de novembro de 2011 às 5:25 pm #101693MarceloPit
ParticipanteBEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => ‘ZZ_TESTE’,
job_type => ‘EXECUTABLE’,
job_action => ‘/bdoracle/U04/carga/carga.sh’,
start_date => sysdate,
repeat_interval => ‘FREQ=DAILY; INTERVAL=1’,
enabled => TRUE,
comments => ‘Testando o CREATE JOB’);
END;ORA-27369: job of type EXECUTABLE failed with exit code: No such process
STANDARD_ERROR=”Message 2100 not found; No message file for product=RDBMS, facility=ULMessage 2100 not found; No message file for product=RDBMS, facility=UL”18 de novembro de 2011 às 5:43 pm #101694felipeg
ParticipanteAcho que o erro não está no oracle:
2 perguntas.
- Todas as variáveis de ambiente estão setadas para a execução do script?
- Se você executar o mesmo “na mão”, ele funciona?
- Apenas por segurança, no início do script está declarado o shell, desse jeito #!/usr/bin/ksh
Atenciosamente,
Felipe.18 de novembro de 2011 às 5:50 pm #101695MarceloPit
Participantesim, executando o script na mão funciona perfeitamente.
-
AutorPosts
- Você deve fazer login para responder a este tópico.