posts - 23,  comments - 1,  trackbacks - 0

          SVRMGR> select * from dba_jobs;

          初始化相關參數job_queue_processes
          alter system set job_queue_processes=39 scope=spfile;//最大值不能超過1000  ;job_queue_interval = 10  //調度作業刷新頻率秒為單位
          DBA_JOBS describes all jobs in the database.
          USER_JOBS describes all jobs owned by the current user

          1  select job,what,to_char(last_date,'yyyy-mm-dd HH24:mi:ss'),to_char(next_date,'yyyy-mm-dd HH24:m),interval from dba_jobs where job in (325,295)
          2 select job,what,last_date,next_date,interval from  dba_jobs where job in (1,3);


          查詢job的情況。
          show paramter background_dump_dest.
          看alter.log 和trace


          SVRMGR> select * from dba_jobs;

          初始化相關參數job_queue_processes
          alter system set job_queue_processes=39 scope=spfile;//最大值不能超過1000

          job_queue_interval = 10  //調度作業刷新頻率秒為單位


          DBA_JOBS describes all jobs in the database.
          USER_JOBS describes all jobs owned by the current user

          1  select job,what,to_char(last_date,'yyyy-mm-dd HH24:mi:ss'),to_char(next_date,'yyyy-mm-dd HH24:m),interval from dba_jobs where job in (325,295)
          2 select job,what,last_date,next_date,interval from  dba_jobs where job in (1,3);


          查詢job的情況。
          show paramter background_dump_dest.
          看alter.log 和trace


          請問我如何停止一個JOB
          SQL> exec dbms_job.broken(1,true)

          PL/SQL 過程已成功完成。
          SQL>commit  //必須提交否則無效

          啟動作業
          SQL> exec dbms_job.broken(1,false)

          PL/SQL 過程已成功完成。

          停其他用戶的job
          SQL>exec sys.dbms_ijob.broken(98,true);
          SQL>commit;


          ============================

          exec dbms_job.broken(:job) 停止
          exec dbms_job.broken(186,true) //標記位broken
          exec dbms_job.broken(186,false)//標記為非broken
          exec dbms_job.broken(186,false,next_day(sysdate,'monday')) //標記為非broken,指定執行時間
          exec dbms_job.remove(:job);刪除
          exec dbms_job.remove(186);
          commit;

          把一個broken job重新運行


          三、查看相關job信息
          1、相關視圖
          dba_jobs
          all_jobs
          user_jobs
          dba_jobs_running 包含正在運行job相關信息


          創建JOB
          variable jobno number;
          begin
            dbms_job.submit(:jobno, 'statspack.snap;', trunc(sysdate+1/24,'HH'), 'trunc(SYSDATE+1/24,''HH'')', TRUE, :instno);
            commit;
          end;
          print jobno

          例如,我們已經建立了一個存儲過程,其名稱為my_job,在sql/plus中以scott用戶身份登錄,執行如下命令:
          sql> variable n number;
          sql> begin
          dbms_job.submit(:n‘my_job;’,sysdate,
          ‘sysdate+1/360’);
          commit;
          end;
          Sql> print :n;

          系統提示執行成功。
          Sql> print :n;
          系統打印此任務的編號,例如結果為300。


          簡單例子
          一個簡單例子:

          創建測試表
          SQL> create table TEST(a date);

          表已創建。

          創建一個自定義過程
          SQL> create or replace procedure MYPROC as
            2  begin
            3  insert into TEST values(sysdate);
            4  end;
            5  /

          過程已創建。

          創建JOB
          SQL> variable job1 number;
          SQL>
          SQL> begin
            2  dbms_job.submit(:job1,'MYPROC;',sysdate,'sysdate+1/1440');  --每天1440分鐘,即一分鐘運行test過程一次
            3  end;
            4  /

          PL/SQL 過程已成功完成。

          運行JOB
          SQL> begin
            2  dbms_job.run(:job1);
            3  end;
            4  /

          PL/SQL 過程已成功完成。

          SQL> select to_char(a,'yyyy/mm/dd hh24:mi:ss') 時間 from TEST;

          時間
          -------------------
          2001/01/07 23:51:21
          2001/01/07 23:52:22
          2001/01/07 23:53:24

          刪除JOB
          SQL> begin
            2  dbms_job.remove(:job1);
            3  end;
            4  /

          PL/SQL 過程已成功完成。

          =======================================


          a、利用dbms_job.run()立即執行該job
             sql>begin
             sql>dbms_job.run(:jobno) 該jobno為submit過程提交時返回的job number
             sql>end;
             sql>/
          b、利用dbms_job.broken()重新將broken標記為false
             sql>begin
             sql>dbms_job.broken (:job,false,next_date)
             sql>end;
             sql>/


          ========================================
          SQL> create table a(a date);
          Table created

          創建一個過程
          SQL> create or replace procedure test as
            2  begin
            3  insert into a values(sysdate);
            4  end;
            5  /
          Procedure created

          提交作業
          SQL> declare
            2  job1 number;   //定義一個數字型變量
            3  begin
            4  dbms_job.submit(:job1,'test;',sysdate,'sysdate+1/1440');  //按分鐘算一天1440分鐘
            5  end;
            6  /
          PL/SQL procedure successfully completed
          job1
          ---------
          4
          SQL> commit;
          Commit complete

          運行作業
          SQL> begin
            2  dbms_job.run(4);
            3  end;
            4  /
          PL/SQL procedure successfully completed

          刪除作業
          SQL> begin
            2  dbms_job.remove(4);
            3  end;
            4  /
          PL/SQL procedure successfully completed
          SQL> commit;
          Commit complete


          job change//修改作業
          execute dbms_job.change(186,null,null,'sysdate+3');
          execute dbms_job.change(186,'scott.test(update)');


          DBA_JOBS
          ===========================================
          字段(列)          類型                 描述
          JOB                NUMBER          任務的唯一標示號
          LOG_USER           VARCHAR2(30)    提交任務的用戶
          PRIV_USER          VARCHAR2(30)    賦予任務權限的用戶
          SCHEMA_USER        VARCHAR2(30)    對任務作語法分析的用戶模式
          LAST_DATE          DATE            最后一次成功運行任務的時間
          LAST_SEC           VARCHAR2(8)     如HH24:MM:SS格式的last_date日期的小時,分鐘和秒
          THIS_DATE     DATE            正在運行任務的開始時間,如果沒有運行任務則為null
          THIS_SEC     VARCHAR2(8)     如HH24:MM:SS格式的this_date日期的小時,分鐘和秒
          NEXT_DATE          DATE            下一次定時運行任務的時間
          NEXT_SEC           VARCHAR2(8)     如HH24:MM:SS格式的next_date日期的小時,分鐘和秒
          TOTAL_TIME         NUMBER          該任務運行所需要的總時間,單位為秒
          BROKEN             VARCHAR2(1)     標志參數,Y標示任務中斷,以后不會運行
          INTERVAL           VARCHAR2(200)   用于計算下一運行時間的表達式
          FAILURES    NUMBER     任務運行連續沒有成功的次數
          WHAT               VARCHAR2(2000)  執行任務的PL/SQL塊
          CURRENT_SESSION_LABEL RAW          MLSLABEL 該任務的信任Oracle會話符
          CLEARANCE_HI      RAW MLSLABEL     該任務可信任的Oracle最大間隙
          CLEARANCE_LO      RAW              MLSLABEL 該任務可信任的Oracle最小間隙
          NLS_ENV           VARCHAR2(2000)   任務運行的NLS會話設置
          MISC_ENV          RAW(32)          任務運行的其他一些會話參數

           

          描述                    INTERVAL參數值
          每天午夜12點            'TRUNC(SYSDATE + 1)'
          每天早上8點30分         'TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)'
          每星期二中午12點         'NEXT_DAY(TRUNC(SYSDATE ), ''TUESDAY'' ) + 12/24'
          每個月第一天的午夜12點    'TRUNC(LAST_DAY(SYSDATE ) + 1)'
          每個季度最后一天的晚上11點 'TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), 'Q' ) -1/24'
          每星期六和日早上6點10分    'TRUNC(LEAST(NEXT_DAY(SYSDATE, ''SATURDAY"), NEXT_DAY(SYSDATE, "SUNDAY"))) + (6×60+10)/(24×60)'

          posted on 2006-03-07 14:24 咖啡時間 閱讀(336) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2006年3月>
          2627281234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          專 注 Java 技 術 的 開 發... ... 享 受 Java 咖 啡 的 美 味... ... 擁 有 Sun 一 般 的 人 生

          常用鏈接

          留言簿(1)

          隨筆檔案(23)

          文章檔案(1)

          Java學習資源

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 闽侯县| 池州市| 新津县| 彰化市| 龙江县| 西丰县| 乌兰县| 泰州市| 陆河县| 防城港市| 大同市| 芜湖市| 晋中市| 贵阳市| 棋牌| 顺义区| 西藏| 沾益县| 岳普湖县| 东乌珠穆沁旗| 双鸭山市| 鱼台县| 霍邱县| 临泉县| 昌黎县| 涟源市| 容城县| 尖扎县| 玉山县| 志丹县| 正阳县| 城步| 淮阳县| 昌江| 溧阳市| 大新县| 沾益县| 迭部县| 南郑县| 普洱| 高清|