şükela:  tümü | bugün soru sor
  • oracle job zamanlayicisi.

    soz gelimi bir stored procedure her gun, her saat, yilda bir kez, ayin her pazartesi gunu calissin istiyor olabilirsiniz.

    iste dbms_scheduler size bu imkani sunar.

    ornek verelim:

    pck_foo paketimizin icinde generate_foobar isimli bir sp olsun. oncelikle scheduler altinda programimizi olusturuyoruz.

    begın
    dbms_scheduler.create_program (
    program_name => 'foo',
    program_action => 'pck_foo.generate_foobar',
    program_type => 'stored_procedure');
    end;

    sonra da "zamanlama" kismini hallediyoruz.

    declare
    v_start_date timestamp with time zone;
    begın
    dbms_scheduler.create_schedule (
    schedule_name => 'scheduled_foobar',
    start_date => v_start_date,
    repeat_interval => 'freq=weekly; byday=mon,tue,thu,wed,fri; byhour=14; byminute=25; bysecond=0',
    end_date => null,
    comments => 'no comment');
    end;

    tahmin edebileceginiz uzere bu programi hafta ici her gun 14:25 de calisacak sekilde zamanladim.

    ardindan da dbms job 'umuzu olusturuyoruz.

    begın
    dbms_scheduler.create_job (
    job_name => 'foo_job',
    program_name => 'foo',
    schedule_name => 'scheduled_foobar');
    end;

    son olarak job ve programimizi "enable" edelim.

    begin
    dbms_scheduler.enable('foo_job');
    dbms_scheduler.enable('foo');
    end;

    bu kadar.

    ne olup bittigini, calisip calismadigini, hata alip almadigini izlemek icin user_scheduler_job_run_details tablosuna goz atabiliriz.

    - peki vazgectik, drop etmek istiyorsak ne yapalim?

    begın
    dbms_scheduler.drop_job (job_name => 'foo_job');
    dbms_scheduler.drop_schedule (schedule_name => 'scheduled_foobar');
    dbms_scheduler.drop_program (program_name => 'foo');
    end;

    p.s.
    create_schedule esnasinda start_date parametresini tabii ki declare etmek zorunda degilsiniz. ben v_start_date ismiyle bir degisken kullanip tipini timestamp with time zone verdim. boyle yapmazsaniz yaz saati/kis saati gecislerinde zamanlanmis islerinizin calisma saatleri caninizi sikabilir. hele ki cografi olarak farkli saat dilimlerinde bulunan sunuculariniz varsa...