Oracle統計時用全域暫存資料表 建立Oracle作業

來源:互聯網
上載者:User

1.建立Oracle全域暫存資料表,代碼如下:
Sql代碼

  1. DECLARE cnt int;   
  2. begin  
  3. --如果存在該暫存資料表,則刪除   
  4.   SELECT count(1) into cnt from user_tables where table_name='TEMPLOGSMSHALL_SESSION';   
  5.   if cnt>0 THEN  
  6.     BEGIN  
  7.      execute immediate 'DROP TABLE TEMPLOGSMSHALL_SESSION';   
  8.     END;   
  9.   end if;   
  10. end;   
  11.   
  12. /   
  13. --建立暫存資料表   
  14. CREATE GLOBAL TEMPORARY TABLE TempLogSmsHall_Session (   
  15.    SESSIONID          VARCHAR2(28)                    NOT NULL,   
  16.    USERTELNO          VARCHAR2(16)                    NOT NULL,   
  17.    USERCITYNAME       VARCHAR2(8)                     NOT NULL,   
  18.    USERBRANDNAME      VARCHAR2(16)                    NOT NULL,   
  19.    NLIBIZNAME          VARCHAR2(32)                    NOT NULL,   
  20.    BIZNAME            VARCHAR2(128)                   NOT NULL,   
  21.    OPERATIONNAME      VARCHAR2(16)                    NOT NULL,   
  22.    SCENEHANDLETYPE    VARCHAR2(32)                    NOT NULL,   
  23.    SCENEHANDLEID      VARCHAR2(6)                     NOT NULL,   
  24.    SESSIONBEGINTIME   TIMESTAMP                       NOT NULL,   
  25.    SESSIONENDTIME     TIMESTAMP                       NOT NULL,   
  26.    ISTIMEOUT          CHAR(1)                        DEFAULT '1' NOT NULL,   
  27.    ALLCOSTSECONDS     INTEGER                        DEFAULT (0) NOT NULL,   
  28.    REVSMSNUM          INTEGER                        DEFAULT (0) NOT NULL,   
  29.    SENDSMSNUM         INTEGER                        DEFAULT (0) NOT NULL  
  30. )   
  31. ON COMMIT PRESERVE ROWS;  
上面建立的暫存資料表,對於每個調用它的預存程序或PL/SQL塊都是獨立的,互不影響的。就是說允許兩個PL/SQL同時調用,結果頁不會互相影響。

2.建立Oracle作業,代碼如下:
Sql代碼    
  1. DECLARE job NUMBER;
  2. begin  
  3.   dbms_job.submit(job => job,   
  4.                       what => 'ECSS_JOB.SMSS10_Job_DailyStatus('''');',   
  5.                       next_date => trunc(sysdate) + ( 1 + 1/24),   
  6.                       interval => 'sysdate + 1');   
  7.   commit;   
  8. end;  
其中:job是系統自動產生編號,ECSS_JOB.SMSS10_Job_DailyStatus是一個過程(裡面還有一個字串參數),next_date設定下次執行時間,這裡是明天早上1點,interval設定時間間隔,多久執行一次,這裡是每天執行。trunc 函數用於去掉日期裡的時間,也就是得到的是某天的00:00,時間是以天為單位的所以要得到某某點某某分,就需要分數:

1/24    一小時;
1/1440    一分;
1/3600   一秒;

另外,注意SQL不要執行多次,執行了幾次就會提交幾個作業

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.