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
          主站蜘蛛池模板: 五华县| 肇庆市| 个旧市| 拜城县| 宜阳县| 常山县| 凭祥市| 裕民县| 松滋市| 临高县| 苍梧县| 建水县| 蕉岭县| 巩义市| 民权县| 屏南县| 湖州市| 东丽区| 囊谦县| 牟定县| 诸暨市| 伊通| 齐河县| 正蓝旗| 县级市| 马鞍山市| 乌拉特前旗| 繁峙县| 怀集县| 庆安县| 正阳县| 且末县| 唐河县| 双桥区| 澄江县| 鄯善县| 新晃| 延长县| 寻甸| 开远市| 黄大仙区|