Decode360's Blog

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

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 ::  :: 管理 ::
            302 隨筆 :: 26 文章 :: 82 評論 :: 0 Trackbacks
          <2008年9月>
          31123456
          78910111213
          14151617181920
          21222324252627
          2829301234
          567891011

          公告

          常用鏈接

          隨筆分類(299)

          隨筆檔案(299)

          文章分類(26)

          新聞分類(24)

          收藏夾(5)

          Blog列表

          IT網(wǎng)站

          My Link

          最新隨筆

          最新評論

          1、創(chuàng)建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、其他操作:

          ?

          修改要執(zhí)行的操作:dbms_job.what(jobno,what);

          修改下次執(zhí)行時間: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參數(shù),然后重新啟動數(shù)據(jù)庫


          方法2.alter system set job_queue_processes=10

          //這個方法不用重啟數(shù)據(jù)庫就可以生效,系統(tǒng)自動修改init.ora文件以后即可生效 。

          ?

          注意:保證參數(shù)不為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

          ?

          發(fā)現(xiàn)雖然設(shè)置了每分鐘執(zhí)行一次,但是每次執(zhí)行時間是在向后偏移

          所以需要進(jìn)行調(diào)整,將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

          ?

          雖然秒數(shù)還是有稍微的不同,這是由于每次job的運行時間所致

          但是不會像之前一樣一直往后偏移。





          -The End-

          posted on 2008-09-18 17:26 decode360-3 閱讀(160) 評論(0)  編輯  收藏 所屬分類: Oracle
          主站蜘蛛池模板: 温宿县| 江西省| 黑龙江省| 白沙| 南岸区| 福鼎市| 柳州市| 巴南区| 建湖县| 泸定县| 武强县| 岳阳县| 泸西县| 台北市| 双辽市| 北票市| 湘潭县| 长寿区| 登封市| 潜江市| 平邑县| 田东县| 青田县| 根河市| 雅安市| 金溪县| 秦皇岛市| 拉孜县| 祁门县| 房产| 宜都市| 克拉玛依市| 巧家县| 明光市| 泸州市| 邯郸市| 泰来县| 开阳县| 靖边县| 高台县| 康平县|