Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Реализация автоматической загрузки данных из одной базы в другую  [new]
Бакыт
Member

Откуда: Кыргызстан
Сообщений: 753
Здравствуйте,
есть основная база (АБС) куда ежедневно вводятся данные и обрабатывается
закрытие АБС происходить ежедневно и неопределенное время т.е. могут запустить 20:00 или 21:00 + время на отработку всех процедур

теперь задача после закрытия дня необходимо запустить процедуру закачки данных в хранилище (другая база)

как реализовать безотказную загрузку

пытались job прописать но из за времени иногда не срабатывает (время job наступает а ,АБС не доступно при закрытии)

цеплять на закрытие дня тоже не вариант так как время закрытие увеличивается (процедура закачки выполняется 10-20 минут)
19 мар 13, 09:09    [14065446]     Ответить | Цитировать Сообщить модератору
 Re: Реализация автоматической загрузки данных из одной базы в другую  [new]
MazoHist
Guest
Сделать ручной старт job по завершении закрытия?
19 мар 13, 09:18    [14065499]     Ответить | Цитировать Сообщить модератору
 Re: Реализация автоматической загрузки данных из одной базы в другую  [new]
MazoHist
Guest
Стоп. Не то написал. В общем, пусть процедура закрытия в конце сама ставит однократный job на выгрузку - тогда закрытие завершится само по себе, а job стартует как раз по окончании. Или так не получится сделать?
19 мар 13, 09:23    [14065516]     Ответить | Цитировать Сообщить модератору
 Re: Реализация автоматической загрузки данных из одной базы в другую  [new]
djeday84
Member

Откуда: default city
Сообщений: 540
если есть желание разобраться с шедулером то яб сделал так

Бакыт
закрытие АБС происходить
+
exec sys.dbms_aq.enqueue ( ... )


Бакыт
теперь задача после закрытия дня необходимо запустить процедуру закачки данных в хранилище

begin
dbms_scheduler.create_job (
.............
event_condition  => 'tab.user_data.msg=''time for upload''',
queue_spec      => 'my_user.my_job_q',
..............
end;
/

exec dbms_Scheduler.set_attribute ('UPLOAD','destination',' IP_хранилище(другая база):remote_agent_port');
19 мар 13, 09:46    [14065620]     Ответить | Цитировать Сообщить модератору
 Re: Реализация автоматической загрузки данных из одной базы в другую  [new]
Бакыт
Member

Откуда: Кыргызстан
Сообщений: 753
MazoHist
Сделать ручной старт job по завершении закрытия?

Бухгалтер будет скафнить что, закрытие еще на пол часа дольше

по идеи должно быть 2 сессии 1 на закрытие 2 для закачки
19 мар 13, 11:32    [14066186]     Ответить | Цитировать Сообщить модератору
 Re: Реализация автоматической загрузки данных из одной базы в другую  [new]
Alexander Ryndin
Member

Откуда:
Сообщений: 4917
Блог
Посмотрите в сторону использования GoldenGate.
19 мар 13, 11:36    [14066215]     Ответить | Цитировать Сообщить модератору
 Re: Реализация автоматической загрузки данных из одной базы в другую  [new]
Vint
Member

Откуда: Москва
Сообщений: 4564
Бакыт,
признак закрытия дня, признак переноса данных.
задание выполняемое начиная с 8 вечера до 10 вечера. каждые 10 минут.
если день закрыт и данные не перенесены то перенести данные. иначе ничего не делать.

это если нужны логи, а вообще можно просто формировать задачу со стартом выполнения после закрытия периода как и написал MazoHist
19 мар 13, 11:49    [14066293]     Ответить | Цитировать Сообщить модератору
 Re: Реализация автоматической загрузки данных из одной базы в другую  [new]
Бакыт
Member

Откуда: Кыргызстан
Сообщений: 753
Vint
Бакыт,
признак закрытия дня, признак переноса данных.
задание выполняемое начиная с 8 вечера до 10 вечера. каждые 10 минут.
если день закрыт и данные не перенесены то перенести данные. иначе ничего не делать.

это если нужны логи, а вообще можно просто формировать задачу со стартом выполнения после закрытия периода как и написал MazoHist

попробуем
19 мар 13, 12:23    [14066531]     Ответить | Цитировать Сообщить модератору
 Re: Реализация автоматической загрузки данных из одной базы в другую  [new]
Ramin Hashimzade
Member

Откуда: Азербайджан, Баку
Сообщений: 9979
Блог
Бакыт,

такое было реализовано, джоб работает каждый 10 минут:

 -- Checking if EOD completed
   begin
      select T.Is_Commited, MAX(T.END_TIME)
      into  vrb_is_comitted, vrb_end_datetime
      from ....
      WHERE T.STAGE_N = {конечный процесс}
      and t.act_date = sod_date
      and t.Is_Commited = 1
      GROUP BY T.Is_Commited;         
      EXCEPTION
        when no_data_found then
             vrb_is_comitted := 0;
   end;  
   
   -- if EOD  not completed successfully
   if vrb_is_comitted = 0 then
      ...log writer
      return;
   end if;
   
   -- if EOD completed successfully
   if vrb_is_comitted = 1 then
   ..... start my processs
19 мар 13, 12:31    [14066575]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить