- Este tópico contém 6 respostas, 2 vozes e foi atualizado pela última vez 9 anos, 1 mês atrás por rman.
-
AutorPosts
-
20 de outubro de 2015 às 10:47 pm #107815MarcusParticipante
Boa Tarde Pessoal.
Estou precisando de alguma forma, criar algum processo no banco de dados que gere um MD5 de um arquivo .txt de aproximadamente 500 MB.
E em seguida escrever este MD5 em um arquivo.
Alguém tem alguma idéa de como fazer isto?
Meu problema maior é o volume do arquivo. Quando possuo um arquivo pequeno, já consigo realizar este processo.
23 de outubro de 2015 às 2:22 pm #107816rmanParticipante@Marcus
Se o problema é tempo para gerar o MD5 creio que não dê pra fazer muita coisa. Geração de checksum eu faço através de shell script, realmente para arquivos grandes não é instantâneo.
23 de outubro de 2015 às 8:15 pm #107817MarcusParticipanteOla rman.
Sim, hoje ja possuo uma rotina em shell script que faz isso, mas o pessoal aqui da empresa quer mudar isto, e como meu acesso é limitado, de inicio pensei em de algum modo, dentro do banco chamar este script. Sem sucesso, não encontrei nenhuma maneira.
No momento estou desenvolvendo uma rotina em java para compilar dentro do banco e ver se rola.
Meu problema não é tempo não.
Se tiver alguma sugestão, serão bem vindas.Obrigado
23 de outubro de 2015 às 8:57 pm #107818rmanParticipante@Marcus
Através do Pacote DBMS_SCHEDULER é possível chamar o shell script. Segue um exemplo:
-- DUMP_SCHEMAS1_SCHEDULE
BEGIN
PKG_GUARD_SCHEDULER.PCREATE_SCHEDULE(PSCHEDULE_NAME => 'DUMP_SCHEMAS1_SCHEDULE'
,PSTART_DATE => SYSTIMESTAMP AT TIME ZONE 'America/Sao_Paulo'
,PREPEAT_INTERVAL => 'FREQ=DAILY;BYHOUR=17;BYMINUTE=0;BYSECOND=0'
,PEND_DATE => NULL
,PCOMMENTS => NULL);
END;
/
-- PDUMP_SCHEMAS1
BEGIN
PKG_GUARD_SCHEDULER.PCREATE_PROGRAM(PPROGRAM_NAME => 'PDUMP_SCHEMAS1'
,PPROGRAM_TYPE => 'EXECUTABLE'
,PPROGRAM_ACTION => '/home/oracle/script/new/execExpdpSchemas1');
END;
/
-- JDUMP_SCHEMAS1
BEGIN
PKG_GUARD_SCHEDULER.PCREATE_JOB(PJOB_NAME => 'JDUMP_SCHEMAS1'
,PPROGRAM_NAME => 'PDUMP_SCHEMAS1'
,PSCHEDULE_NAME => 'DUMP_SCHEMAS1_SCHEDULE');
END;
/Detalhe importante é a permissão do arquivo:
$ chown oracle:oinstall /home/oracle/script/new/execExpdpSchemas1
$ chmod 740 /home/oracle/script/new/execExpdpSchemas1
Outro detalhe é as permissões para o owner do job, é necessário das seguintes permissões:
* CREATE JOB
* CREATE EXTENAL JOB23 de outubro de 2015 às 9:14 pm #107820MarcusParticipanteOpa.
Ai Sim hein rman. Vou dar uma estudada nesse seu exemplo e no pacote DBMS_SCHEDULER enquanto aguardo as permissões e diretório/nomenclatura do executável.
Depois retorno para contar como foi.
Muito Agradecido!
Abraço
23 de outubro de 2015 às 9:49 pm #107821MarcusParticipantermna.
Poderia me auxiliar?
Desculpe a ignorância mas o que acontece é que meu processo não deve ser schedulado para rodar automaticamente.
Ele deve ser disparado somente quando uma determinada procedure (a que gera o .txt que eu quero obter o md5) terminar sua execução.Sabe se tem como fazer isto?
a ideia seria mais ou menos assim:
START_DATE = null
REPEAT_INTERVAL => null
END_DATE => null26 de outubro de 2015 às 2:29 pm #107822rmanParticipante@Marcus
Me desculpe, nem tinha reparado, no exemplo anterior eu passei a PACKAGE que eu criei para encapsular a DBMS_SCHEDULER. Segue exemplo utilizando a DBMS_SCHEDULER diretamente.
BEGIN
DBMS_SCHEDULER.CREATE_JOB(JOB_NAME => 'execExpdpSchemas1'
,JOB_TYPE => 'EXECUTABLE'
,JOB_ACTION => '/home/oracle/script/new/execExpdpSchemas1'
,START_DATE => SYSDATE
,ENABLED => TRUE
,AUTO_DROP => TRUE
,COMMENTS => 'execExpdpSchemas1');
END;
Será criado o JOB e será executado automaticamente e após a execução o JOB é removido. Adicione dentro da sua PROCEDURE.
-
AutorPosts
- Você deve fazer login para responder a este tópico.