如何在openGauss 2.1.0中使用Job?

Job類似Unix中的crontab,有定時執行的功能,可以在指定的時間點或每天的某個時間點等自行執行任務。在各類系統使用執行過程中,經常會遇到需要定時完成的任務,比如定時更新資料,定時統計資料生成報表等等,這些工作都可以使用Job來完成。在openGauss 2。1。0中,提供了以下介面來實現管理Job。

介面描述

1

介面定義和使用示例

2

PKG_SERVICE。JOB_CANCEL

儲存過程CANCEL刪除指定的定時任務。

PKG_SERVICE。JOB_CANCEL函式原型為:

PKG_SERVICE。JOB_CANCEL( job IN INTEGER);

示例:

PKG_SERVICE。JOB_FINISH

儲存過程FINISH禁用或者啟用定時任務。

PKG_SERVICE。JOB_FINISH函式原型為:

PKG_SERVICE.JOB_SUBMIT

儲存過程JOB_SUBMIT提交一個系統提供的定時任務。

PKG_SERVICE。JOB_SUBMIT函式原型為:

PKG_SERVICE。JOB_SUBMIT( id IN BIGINT DEFAULT, content IN TEXT, next_date IN TIMESTAMP DEFAULT sysdate, interval_time IN TEXT DEFAULT ‘null’, job OUT INTEGER);

當建立一個定時任務(JOB)時,系統預設將當前資料庫和使用者名稱與當前建立的定時任務繫結起來。該介面函式可以透過call或select呼叫,如果透過select呼叫,可以不填寫出參。如果在儲存過程中,則需要透過perform呼叫該介面函式。如果提交的sql語句任務使用到非public的schema,應該指定表或者函式的schema,或者在sql語句前新增set current_schema = xxx;語句。

示例:

PKG_SERVICE。JOB_UPDATE

儲存過程UPDATE修改定時任務的屬性,包括任務內容、下次執行時間、執行間隔。

PKG_SERVICE。JOB_UPDATE函式原型為:

PKG_SERVICE。JOB_UPDATE( id IN BIGINT, next_time IN TIMESTAMP, interval_time IN TEXT, content IN TEXT);

示例:

PKG_SERVICE.SUBMIT_ON_NODES

儲存過程SUBMIT_ON_NODES建立一個所有CN/DN上的定時任務,僅sysadmin有此許可權。

PKG_SERVICE。SUBMIT_ON_NODES函式原型為:

示例:

PKG_SERVICE。ISUBMIT_ON_NODES

ISUBMIT_ON_NODES與SUBMIT_ON_NODES語法功能相同,但其第一個引數是入參,即指定的作業號,SUBMIT最後一個引數是出參,表示系統自動生成的作業號。僅sysadmin有此許可權。

JOB的使用示例

3

建立測試表

建立任務,每一分鐘插入一條記錄

檢查Job執行結果

從系統檢視中檢查Job執行情況

修改為2分鐘執行一次

檢查修改情況和執行結果

禁用和啟用任務

禁用和啟用都是同樣的函式pkg_service。job_finish,傳入不同的引數表示是禁用還是啟用。

可以看到如果重新啟用任務的時候,沒有指定下次執行時間,那麼下次執行時間會始終保持在4000年,意味著仍然不會啟動,所以如果禁用任務之後再重新啟動,需要手動顯式指定下次執行時間。

刪除任務

TAG: ServiceJobPKGSUBMIT定時