定时作业处理Oracle Database及Forms之设计doc.docx
- 文档编号:10541775
- 上传时间:2023-02-21
- 格式:DOCX
- 页数:12
- 大小:252.74KB
定时作业处理Oracle Database及Forms之设计doc.docx
《定时作业处理Oracle Database及Forms之设计doc.docx》由会员分享,可在线阅读,更多相关《定时作业处理Oracle Database及Forms之设计doc.docx(12页珍藏版)》请在冰豆网上搜索。
定时作业处理OracleDatabase及Forms之设计doc
定時處理之應用
(以OracleForms及Database之設計為例)
黃意雅
國立中興大學計算機及資訊網路中心
台中市402國光路250號(04-22840306轉746)
Email:
yyhuang@nchu.edu.tw
一.前言
定時處理即是於設定時間點開始後每隔一固定週期去執行某一功能或
程式。
一般來說,大部份的企業都會應用定時作業去處理一些例行性的工作
,如在每天半夜或系統不忙碌的時間自動備份資料庫、作業系統及程式檔案。
定時作業不僅可減少人為之操作,避免人為之疏失,並且可達到每天24小時作業之優點,不管是作業系統、資料庫或程式開發工具,絶大部份都會提供此功能,本篇文章是以本校所採用之OracleDatabase及程式開發工具OracleForms為例說明如何設計定時作業程式。
二.OracleForms(表單)設計
Forms為Oracle所提供資料維護之畫面程式設計工具,定時處理之設
計主要是採用Forms內建之觸發器(Trigger),並使用PL/SQL語言撰寫所須之功能,通常於從屬(Client)端執行程式。
<範例>研究所招生網路報名,考生根據簡章所附之十六位繳費代碼,並於ATM繳費完成後,第一銀行會將考生之繳費資料傳輸至第一銀行的FTPServer,學校這裡啟動定時處理程式,每隔一小時到第一銀行
所提供的FTPServer抓取最新繳費資料(文字檔格式),並更新資
料庫考生之繳費狀態,讓考生能在繳費一小時後即能順利登入網路
報名。
流程:
第一銀行啟動FTPServer(提供學校一組合法下載考生繳費資料之帳號及密碼)學校執行Forms定時處理程式(使用FTP軟體如ws_ftp至一銀FTPServer下載繳費文字資料檔,接著更新資料庫考生繳費檔之繳費狀態欄位資料為Y)。
繳費資料格式範例:
檔名為USRDK.TXT,兩筆範例資料如下,其中第5至20位(共16位)為考生之繳費代碼
135011327793209015120
135011327793143003910
程式設計步驟:
步驟1:
設定定時處理之時間週期
在FormLevel新增WHEN-NEW-FORM-INSTANCETrigger,讓程式一開始執行即啟動時間週期設定,Trigger建立方式如下:
先用滑鼠點Triggers處
再點”+”圖示新增一個Trigger
選擇WHEN-NEW-FORM-INSTANCE這個Trigger名稱
程式內文如下:
設定TIMERID名稱,若設定多個TIMER時,可針對不同的TIMERID設計不同的功能
步驟2:
在FormLevel新增WHEN-TIME-EXPIREDTrigger,設定定時處理內容,也就是本範例中所提每隔1小時希望自動處理之功能,程式使用PL/SQL語言撰寫,內文如下:
備註:
關於TIMER的設定處理,還有其他的功能可使用,如SET_TIMER、FIND_TIMER及DELETE_TIMER等。
步驟3:
新增如上之兩個Trigger後,程式即設計完成,接下來當然就是去執行
程式了,執行方式如下:
方法一:
點FileRun方法二:
直接點Run圖示
執行結果畫面如下:
離上次執行時間點差一小時,表示定時設定處
理發揮功能
三.OracleDatabase(資料庫)設計
OracleDatabase定時處理之方式為工作佇列處理(JOBQUEUEPROCESS),
它屬背景處理(BackgroundProcess),一旦設定後,資料庫即會每隔一段時間自動執行我們設定的JOB,其設定JOB方法主要是使用Oracle所提供之DBMS_JOB之軟件(package),設計方法如下:
步驟1:
設定參數
JOB_QUEUE_PROCESSES:
允許於資料庫內同時執行JOB的最大值,當然,如果我們希望系統能自動執行設定之JOB,其值一定要大於0,而系統允許的最大值為1000。
可將參數增列於參數檔(initsid.ora)後重新啟動資料庫,或是動態
修改該值,如SQL>altersystemsetjob_queue_processes=10
步驟2:
設定JOB之內容
使用DBMS_JOBpackage之SUBMITprocedure,說明如下:
DBMS_JOB.SUBMIT(jobOUTBINARY_INTEGER,
whatINVARCHAR2,
next_dateINDATEDEFAULTSYSDATE,
intervalINVARCHAR2DEFAULT‘NULL’,
no_parseINBOOLEANDEFAULTFALSE)
job:
一旦SUMIT了JOB,系統會根據SYS.JOBSEQ這個序號檔自動
給予一個序號,之後若要對這個JOB管理,一定要依此序號。
what:
定義所要執行之工作內容,一定是PL/SQL程式碼,當然我們
也可以使用PL/SQL所寫成的程式包裝為一個procedure,然
後去呼叫它。
next_date:
下次執行JOB之時間,初始值為系統時間。
interval:
JOB執行之時間間隔,時間設定說明如下:
(1)SYSDATE+1/48:
每半時
(2)SYSDATE+1:
每天
(3)NEXT_DAY(TRUNC(SYSDATE,’’MONDAY’’)+15/24
:
每個星期一的下午3點
no_parse:
TRUE代表每次執行JOB都會解析procedure內容,FALSE
代表只有第一次執行JOB時才去解析。
<範例>SUBMITJOB,每隔半小時將執行時間點寫入(Insert)執行JOB時間測試檔,設定方式如下:
在SQL*PLUS環境下撰寫如下程式
顯示該JOB之序號,往後的管理必須依此序號
若要知道JOB定義之內容,可以從USER_JOBS這個VIEW查詢到。
隔一段時間後去查詢要寫入時間點的檔案,發現它真的每半小時就會去執行。
(依設定每半小時Insert到JOBTEST檔案)
其實DBMS_JOB還提供了其他的procedure,僅說明幾個較常用的,若想更清楚DBMS_JOB所提供的功能,您可使用OracleProcedureBuilder或SQL*Navigator等工具查看到完整的package內容。
(1)DBMS_JOB.CHANGE(jobINBINARY_INTEGER,
whatINVARCHAR2,
next_dateINDATE,
intervalINVARCHAR2)
更改JOB定義內容,若有參數不修改,可輸入NULL
(2)DBMS_JOB.WAHT(jobINBINARY_INTEGER,
whatINVARCHAR2)
更改JOB執行之程式處理內容
(3)DBMS_JOB.NEXT_DATE(jobINBINARY_INTEGER,
next_dateINDATE)
更改JOB下一次執行的時間
(4)DBMS_JOB.INTERVAL(jobINBINARY_INTEGER,
intervalINVARCHAR2)
更改JOB執行之週期
(5)DBMS_JOB.RUN(jobINBINARY_INTEGER)
可以不在執行週期內強迫執行JOB
(6)DBMS_JOB.REMOVE(jobINBINARY_INTEGER)
移除JOB
查詢不到,表示序號27
之JOB已被移除了
備註:
Database之定時JOB設定,Oracle亦提供OracleEnterpriseManager
GUI視窗介面,使用者可透過JOBMENU去定義定時之時間週期及工作
內容,但我們最好還是要瞭解Database執行JOB時內部實際運作過程。
四.定時作業之檢核
由於定時作業每隔一固定時間即會自動處理,而且有些屬背景處理,若我們無法一直在線上即時監控,如果有錯誤發生時亦無法即時得知執行結果,因而建議最好能每隔一段時間即去查看,若系統本身有提供日誌檔(logfile),如OracleDatabase針對執行錯誤的JOB,會將其錯誤訊息記載於Alert或trace檔中,我們就可根據日誌檔所提供的資訊進行除錯或程式修正,若系統本身不提供日誌檔,那我們最好自行撰寫程式(可發電子郵件或與通訊業者合作發送手機簡訊通知管理者),記載錯誤發生的原因及時間以採取後續的補救措施。
五.結論
就前言所提,大部份的資料庫、作業系統、應用程式開發工具都有提供定時設定之功能,除了本文所提Oracle工具外,如Unix作業系統之cron指令、SQLServer代理程式(SQLServerAgent)或Delphi之Timer物件都有相關功能之設計。
一般來說,設定定時功能並不難,但如何定義工作內容並規劃完善的工作流程才是最重要的,管理者應審慎地評估並適當地導入自動化處理,如此定時處理將可以發揮其最大功能。
參考資料:
OracleDatabaseAdministrator'sGuide
OracleFormsDesignerHelpContents
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 定时作业处理Oracle Database及Forms之设计doc 定时 作业 处理 Oracle Database Forms 设计 doc