DBMS_JOB in Oracle DB 19c
اوراکل از نسخه 12cR2 اعلام کرد که پکیج DBMS_JOB، منسوخ (deprecate) شده است. و در نسخه 19c با تبدیل هر DBMS_JOB ایجاد شده به یک جاب DBMS_SCHEDULER، یک گام هم در جهت منسوخ کردن این پکیج جلوتر رفته است.
در زیر مثالی در رابطه با این موضوع آورده شده است:
SQL> conn raheleh SQL> select job, what from user_jobs; no rows selected
SQL> select job_name, job_action from user_scheduler_jobs; no rows selected
SQL> CREATE TABLE raheleh.tbl1 ( id NUMBER, name VARCHAR2 (30) );
SQL> INSERT INTO tbl1 (SELECT user_id, username FROM dba_users) COMMIT;
SQL> CREATE OR REPLACE PROCEDURE raheleh.prc_dbmsjob (username IN VARCHAR2) IS userid NUMBER; BEGIN SELECT id INTO userid FROM raheleh.tbl1 WHERE name = username; END;
SQL> DECLARE job1 PLS_INTEGER; BEGIN DBMS_JOB.submit (job => job1, what => 'begin raheleh.prc_dbmsjob (''SYSTEM''); end;', next_date => TRUNC (SYSDATE) + 1, interval => 'trunc(sysdate)+1'); END; COMMIT;
SQL> select job, what from user_jobs;
JOB WHAT ---------- ------------------------------ 22 begin raheleh.prc_dbmsjob ('SYSTEM'); end;
SQL> select job_name, job_action from user_scheduler_jobs;
JOB_NAME JOB_ACTION ------------------------------ ------------------------------ DBMS_JOB$_22 begin raheleh.prc_dbmsjob ('SYSTEM'); end;
|
همانطور که در مثال بالا مشاهده کردید، وقتی یک جاب با DBMS_JOB ایجاد کردیم، اوراکل به صورت اتومات، معادل همان جاب ، یک جاب هم با DBMS_SCHEDULER ایجاد کرد که نام آن با DBMS_JOB$_* شروع میشود.