Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Oracle > автозапуск


Автор: usver 13.10.2006, 04:06
Доброго времени суток всем.
Такой вот вопрос. Есть база на серваке, есть SQL скрипт, который делает запрос. Как сделать что б этот скрипт запускался в заданное время, заданного числа??? 

Заранее благодарен за помощь.

Автор: ZeeLax 13.10.2006, 05:00
Как только скажете, что за сервер, что за операционная система на нём, и что за версия СУБД - всё сразу станет ясно, может быть, вам и ответ сразу в голову придёт.

Автор: usver 13.10.2006, 05:08
to ZeeLax, к сожалению точной информацией не владею. Операционка вероятнее всего 2003, СУБД - Oracle не ниже 8-го. я тут подумал... может не правильно выразился ... не скрипт, а запрос.... может это сиграет какую нибудь роль ....

Автор: Paradox 13.10.2006, 05:52
можно сделать job c однократным выполнением без повторений
типа такого
Код

DECLARE
  X NUMBER;
BEGIN
  SYS.DBMS_JOB.SUBMIT
    ( job       => X 
     ,what      => 'BEGIN
  your_script;
END;  '
     ,next_date => TO_DATE('13.10.2006 10:50:52','dd/mm/yyyy hh24:mi:ss')
     ,INTERVAL  => 'null'
     ,no_parse  => TRUE
    );
  SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || TO_CHAR(x));
END;
/

COMMIT;

смотрите на пареметр what      =>

Добавлено @ 05:57 
как только такой job отработает так он сам из БД и удалится smile

Автор: usver 13.10.2006, 06:52
to Paradox, спасибо. буду пробовать ... а если это надо что б ежемесячно запускалось определенного числа ??? есть варианты ???

Автор: Paradox 13.10.2006, 06:58
можно 
INTERVAL  => TRUNC(LAST_DAY(SYSDATE)) + 1

вместо 1 впишите определенное число месяца

Добавлено @ 06:59 
если интервал не пуст то конечно джоб удалятся не будет, а отработает и будет ждать еще месяц чтобы выполнится и т.д. smile

Автор: usver 13.10.2006, 07:23
to Paradox, сделал 
Код

DECLARE
  X NUMBER;
BEGIN
  SYS.DBMS_JOB.SUBMIT
    ( job       => X 
     ,what      => 'BEGIN
select a.name,b.socr,b.name,a.dom,a.korp,a.flat,tel
from gts.clients_fl a, ref_book.streets b
where tel=221500 and a.street_id=b.id and tel is not null
order by 1;
END;  '
     ,next_date => TO_DATE('13.10.2006 15:10:52','dd/mm/yyyy hh24:mi:ss')
     ,INTERVAL  => TRUNC(LAST_DAY(SYSDATE)) + 1
     ,no_parse  => TRUE
    );
  SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || TO_CHAR(x));
END;
/

COMMIT;


получил ошибки ...  

Автор: Paradox 13.10.2006, 07:43
ошибки то какие ?
вот так попробуй

Код

DECLARE
  X NUMBER;
BEGIN
  SYS.DBMS_JOB.SUBMIT
    ( job       => X 
     ,what      => 'EXECUTE IMMEDIATE ''select a.name,b.socr,b.name,a.dom,a.korp,a.flat,tel from gts.clients_fl a, ref_book.streets b where tel=221500 and a.street_id=b.id and tel is not null order by 1;'';'
     ,next_date => TO_DATE('13.10.2006 15:10:52','dd/mm/yyyy hh24:mi:ss')
     ,INTERVAL  => 'TRUNC(LAST_DAY(SYSDATE)) + 1'
     ,no_parse  => TRUE
    );
  SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || TO_CHAR(x));
END;
/

COMMIT;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)