Decode360's Blog

          業精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 ::  :: 管理 ::
            397 隨筆 :: 33 文章 :: 29 評論 :: 0 Trackbacks
          Job特性的學習
          ?
          ???
          ??? Job的設置問題,非常初級的內容。想想還是記下來,以備到今后查詢之用。
          ?
          ?
          1、創建Job
          ?
          variable jobno number;
          begin
          ? sys.dbms_job.submit(job => :jobno,
          ????????????????????? what => 'your_procedure1;
          ?????????????????????????????? your_procedure2;',
          ????????????????????? next_date => to_date('20080918 18:50:00', 'yyyymmdd hh24:mi:ss'),
          ????????????????????? interval => 'sysdate+1/24');
          ? commit;
          end;
          /
          ?
          ?
          2、刪除Job
          ?
          print jobno;
          ?
          begin
          ? dbms_job.remove(:jobno);
          ? commit;
          end;
          /
          ?
          ?
          3、其他操作:
          ?
          修改要執行的操作:dbms_job.what(jobno,what);
          ?
          修改下次執行時間:dbms_job.next_date(job,next_date);
          ?
          修改間隔時間:dbms_job.interval(job,interval);
          ?
          停止job:dbms.broken(job,broken,nextdate);
          ?
          啟動job:dbms_job.run(jobno);
          ?
          ?
          修改job_queue_processes的值:
          ?
          可通過select * from v$parameter; 查看其值;
          或者直接用show parameter job_queue_processes;
          ?
          查看如下:
          ?
          NAME TYPE VALUE
          --------------- ----------- ------------
          job_queue_processes integer 10
          ?
          ?
          ?
          方法1.startup pfile='C: oracleora90databaseinitorcl.ora';
          ?
          //這個方法用來修改initorcl.ora文件的job_queue_processes參數,然后重新啟動數據庫
          ?
          方法2.alter system set job_queue_processes=10
          ?
          //這個方法不用重啟數據庫就可以生效,系統自動修改init.ora文件以后即可生效 。
          ?
          注意:保證參數不為0,否則JOB不自動運行
          ?
          ?
          4、時間間隔偏移的問題:
          ?
          SQL> create table t10 (a int ,b date);

          Table created
          ?
          SQL> create or replace procedure k
          ? 2? as
          ? 3??? i int := 0;
          ? 4? begin
          ? 5??? insert into t10 values(i,sysdate);
          ? 6??? commit;
          ? 7? end;
          ? 8? /
          ?
          Procedure created
          ?
          SQL> begin
          ? 2??? sys.dbms_job.submit(job => :jobno,
          ? 3??????????????????????? what => 'k;',
          ? 4??????????????????????? next_date => to_date(sysdate),
          ? 5??????????????????????? interval => 'sysdate+1/1440');
          ? 6??? commit;
          ? 7? end;
          ? 8? /
          ?
          PL/SQL procedure successfully completed
          jobno
          ---------
          47
          ?
          ?
          SQL> column B format a30
          SQL> column A format a5
          SQL> select * from t10;
          ?
          ??? A B
          ----- ------------------------------
          ??? 0 2008-9-18 17:07:38
          ??? 0 2008-9-18 17:08:39
          ??? 0 2008-9-18 17:09:40
          ??? 0 2008-9-18 17:10:41
          ?
          ?
          發現雖然設置了每分鐘執行一次,但是每次執行時間是在向后偏移
          所以需要進行調整,將job建為如下:
          ?
          SQL> begin
          ? 2??? dbms_job.remove(:jobno);
          ? 3??? commit;
          ? 4? end;
          ? 5? /
          ?
          PL/SQL procedure successfully completed
          jobno
          ---------
          47
          ?
          ?
          SQL> begin
          ? 2??? sys.dbms_job.submit(job => :jobno,
          ? 3??????????????????????? what => 'k;',
          ? 4??????????????????????? next_date => to_date(sysdate),
          ? 5??????????????????????? interval => 'trunc(sysdate,''mi'')+1/1440');
          ? 6??? commit;
          ? 7? end;
          ? 8? /
          ?
          PL/SQL procedure successfully completed
          jobno
          ---------
          48
          ?
          ?
          SQL> truncate table t10;
          ?
          Table truncated
          ?
          ?
          SQL> select * from t10;
          ?
          ??? A B
          ----- ------------------------------
          ??? 0 2008-9-18 17:19:02
          ??? 0 2008-9-18 17:20:03
          ??? 0 2008-9-18 17:21:04
          ??? 0 2008-9-18 17:22:01
          ??? 0 2008-9-18 17:23:02
          ?
          ?
          雖然秒數還是有稍微的不同,這是由于每次job的運行時間所致
          ?
          但是不會像之前一樣一直往后偏移。
          ?
          ?
          ?
          ?
          posted on 2008-09-18 20:26 decode360 閱讀(131) 評論(0)  編輯  收藏 所屬分類: 07.Oracle
          主站蜘蛛池模板: 昌乐县| 兴文县| 公主岭市| 玉溪市| 荣昌县| 衡南县| 喀喇沁旗| 镇康县| 巩留县| 灵石县| 福安市| 理塘县| 大洼县| 石城县| 宁波市| 白城市| 明水县| 专栏| 称多县| 双桥区| 陆丰市| 射洪县| 焦作市| 怀仁县| 红河县| 全椒县| 寿阳县| 洞口县| 若羌县| 汨罗市| 阿瓦提县| 张家港市| 库车县| 信丰县| 瑞丽市| 华亭县| 平湖市| 长宁区| 博爱县| 永泰县| 长岛县|