<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Dia a dia Oracle &#187; jobs</title>
	<atom:link href="http://www.diaadiaoracle.com.br/tag/jobs/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.diaadiaoracle.com.br</link>
	<description></description>
	<lastBuildDate>Thu, 08 Apr 2010 17:33:36 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>JOB no ORACLE &#8211; Definindo a periodicidade. (INTERVAL)</title>
		<link>http://www.diaadiaoracle.com.br/2009/10/20/job-no-oracle-definindo-a-periodicidade-interval/</link>
		<comments>http://www.diaadiaoracle.com.br/2009/10/20/job-no-oracle-definindo-a-periodicidade-interval/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 19:05:32 +0000</pubDate>
		<dc:creator>oracle</dc:creator>
				<category><![CDATA[automatizar tarefas.]]></category>
		<category><![CDATA[banco de dados]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[dicas]]></category>
		<category><![CDATA[job]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[pl/sql]]></category>
		<category><![CDATA[jobs]]></category>

		<guid isPermaLink="false">http://www.diaadiaoracle.com.br/?p=36</guid>
		<description><![CDATA[Fala PessoALL,
Bom, atendendo à dica do amigo Alessandro Varela (http://blogdovarela.com.br) hoje falarei sobre: Como definir corretamente a periodicidade da execução dos seus Job&#8217;s! Complica não? É nada!! Vamos lá!
Espero que todos tenham lido o post que fiz falando sobre Job&#8217;s, caso não tenha lido, ainda dá tempo, basta ler o post Jobs no Oracle.
Bom, quando [...]]]></description>
			<content:encoded><![CDATA[<p>Fala PessoALL,</p>
<p>Bom, atendendo à dica do amigo Alessandro Varela (http://blogdovarela.com.br) hoje falarei sobre: Como definir corretamente a periodicidade da execução dos seus Job&#8217;s! Complica não? É nada!! Vamos lá!</p>
<p>Espero que todos tenham lido o post que fiz falando sobre Job&#8217;s, caso não tenha lido, ainda dá tempo, basta ler o post <a href="http://www.diaadiaoracle.com.br/2009/06/10/job-no-oracle/" target="top">Jobs no Oracle</a>.</p>
<p>Bom, quando fazemos a criação de um Job, é porque temos a necessidade que uma determinada tarefa seja executada de tempos em tempos, e para isso geralmente precisamos definir um intervalo para que o Job seja executado novamente. Por exemplo: Quero que meu Job rode a cada hora, quero que meu Job rode todo dia de 23:00, quero que meu job rode a cada 5 minutos, e assim por diante. Só que no momento de fazer esta parametrização é quando começa a confusão, pois, as pessoas esquecem de que o Job vai rodar sozinho e ele é quem tem que definir a próxma execução! Para simplificar isso, vamos lá!</p>
<p>Todo mundo lembra no post anterior que eu falei que para criar um Job usamos a package <code>DBMS_JOB</code> e a procedure <code>DBMS_JOB.SUBMIT(...)</code>, certo? Pois é, nesta procedure, um dos parâmetros que é passado é um tal de <code>INTERVAL</code>, ou seja, o intervalo entre cada execução do seu Job. É aqui que mora o X (xis) da questão! É neste parametro que vamos informar de quanto em quando tempo nosso Job vai rodar.</p>
<p>O que tem que ser considerado aqui, é que o Job será executado automaticamente (essa é a razão do seu existir) e é justamente por isso que rola a confusão, quando este parâmetro for usado já não estaremos mais na data &#8220;agora&#8221;, estaremos na data de execução do Job, sei lá, 23:00! E aí o banco vai usar este parâmetro <code>INTERVAL</code> para setar o campo NEXT_DATE, que é a próxima data em que o Job será executado, ou seja você tem que levar em consideração que o banco sempre vai usar sysdate para calcular este valor.</p>
<p>Como é de rotina, vamos para os exemplos que tudo vai ficar mais claro.<br />
Exemplos mais comuns:</p>
<p>Job para rodar de hora em hora:<br />
Interval -&gt; &#8217;sysdate + 1/24&#8242;<br />
Ou seja, se este Job rodar dia 25/10/2009 às 14:00, quando for somada 1 hora, teremos 15:00 como NEXT_DATE.</p>
<p>Job para rodar a cada 5 minutos.<br />
Interval -&gt; &#8217;sysdate + 5/1440&#8242;<br />
Ou seja, se este Job rodar dia 25/10/2009 às 14:00, quando for somado 5 minutos (1/1440), teremos 14:05 como NEXT_DATE.</p>
<p>Job para rodar uma vez por mês:<br />
Interval -&gt; &#8216;add_months(sysdate, 1)&#8217;<br />
Ou seja, se executar dia 25/10/2009, aplicando este valor acima, teriamos 25/11/2009 como NEXT_DATE.</p>
<p>Esse foi um dos casos mais estranhos, pedido através do blog pra mim&#8230;<br />
Job para rodar em um dia específico a cada ano e numa determinada hora:<br />
&#8216;add_months(to_date(to_char(sysdate, &#8221;DD/MM/YYYY&#8221;)||&#8221; 05:00&#8221;, &#8221;DD/MM/YYYY HH24:MI&#8221;), 12)&#8217;<br />
Ou seja, se o job rodar dia 25/10/2009 as 15:00, e aplicarmos esta fórmula aí, teremos 25/10/2010 05:00 como NEXT_DATE.</p>
<p>Uma dica legal para você fazer esta fórmula que será o NEXT_DATE do seu Job é dar <code>select</code> em <code>sysdate</code> usando a <code>dual</code>. Que eu creio ser o que o banco faz na hora de rodar o Job.</p>
<p>Por exemplo:<br />
Se executarmos o comando:<br />
<code>select sysdate, sysdate + 1/24 from dual</code><br />
Vamos obter como retorno:<br />
<code><br />
sysdate                      sysdate + 1/24<br />
20/10/2009 15:55:35	20/10/2009 16:55:35<br />
</code></p>
<p>Isso aí nos dá a hora atual e a hora atual somado 1 hora. Assim você monta seu NEXT_DATE facilmente!</p>
<p>É isso pessoal, espero que tenha ficado claro e que daqui pra frente seja mais fácil montar seus Jobs para as mais diversas necesidades.</p>
<p>Qualquer coisa, estamos por aqui!</p>
<p>Atc.<br />
Gerson Júnior<br />
gerson.vasconcelos@gmail.com</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diaadiaoracle.com.br/2009/10/20/job-no-oracle-definindo-a-periodicidade-interval/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
