亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > Oracle > 正文

PL/SQL實現Oracle數據庫任務調度

2024-08-29 13:57:12
字體:
來源:轉載
供稿:網友
正在看的ORACLE教程是:PL/SQL實現Oracle數據庫任務調度。摘要:本文主要就數據庫恢復與系統任務的調度,在結合一般性的數據庫后臺處理的經驗上,提出較為實用而新穎的解決方法,拓寬了數據庫后臺開發的思路。

  關鍵詞:數據恢復,任務調度,ORACLE,PL/SQL

  在數據庫操作中時常會有這樣的情況發生,由于一時的疏忽而誤刪或誤改了一些重要的數據,另外還有一些重要的任務需要周期性地運行。顯然,前一類問題主要是數據備份與恢復方面的,而后一類則主要是系統的任務調度。本文將針對這兩類問題,從應用程序開發角度給出一個解決方法。

  一.技術基礎

  由于本文是使用PL/SQL作為開發平臺來提供解決方案,所以首先了解相關的背景知識。

  PL/SQL本身只是作為SQL語句的一個補充,通過引入過程化的概念來增強數據庫處理能力。然而,相對于C,C++,JAVA等過程化語言來說,PL/SQL的處理功能依然不夠強大。為此,Oracle數據庫提供了大量的應用程序開發包,來增強應用程序開發能力。根據本文的主題,介紹如下兩個開發包:DBMS_FLASHBACK和DBMS_JOB。

  1. DBMS_FLASHBACK包主要是用來進行倒敘查詢使用的,即通過設置查詢時間來確定該時刻下的查詢結果。一般情況下,我們平時使用的查詢是查詢當前時間(sysdate)下的數據。使用DBMS_FLASHBACK包就可以查詢以前數據的狀態,這一功能對于誤處理的情形而言就顯得極為重要。下面是該包中的兩個主要函數介紹:

  ·Enable與disable:分別是啟動和關閉倒敘查詢功能。應該注意的是,每次啟動倒敘查詢之前應首先關閉倒敘模式。

  ·Enable_at_time:設置查詢的時間點,它是以當前時間為起點進行設置的。

  2. DBMS_JOB包是用來對PL/SQL塊進行調度的實用包,它允許PL/SQL塊在指定的時間內自動運行,類似于VC中的Settimer這樣的定時器。為便于該包的運行,需要首先設置兩個init.ora參數:

  ·JOB_QUEUE_PROCESS指定啟動的后臺處理數。如果它是0或沒有被設置,將沒有后臺處理進入作業,它們也就不會運行。 

  ·JOB_QUEUE_INTERVAL以秒為單位,指定每一個過程在檢查新的作業前等待的時間。在JOB_QUEUE_INTERVA所指定的時間內,一個作業最多只能運行一次。

  設置好這兩個參數后,就可對程序進行調度了,該包主要使用SUBMIT函數進行調度,該函數的原型為:

submit(返回的作業號,程序過程名,sysdate,下次運行的時間);

  二.數據恢復

  數據恢復是數據庫本身一個極其重要的功能,通常重要的數據可以通過其系統的數據備份功能來實現,所以在實際的開發中,重要的數據往往容易恢復,反而是一些平常的數據因為誤操作而引起一些麻煩。

  對于有經驗的開發人員來說,往往會對那些開發需要的基表(基表就是提供數據源的數據表)做一些備份。這樣,即使以后出現一些數據誤操作也不會導致重大的事故。

  更為實用而又很少為開發人員所使用的方法就是采用倒敘查詢,鑒于前面已經有了一定的技術鋪墊,現在就可以使用DBMS_FLASHBACK包來對數據進行恢復了。為方便講述,假定一個基表emp_table,其表記錄如下: 


  即此表僅有3條記錄,那么由于對數據庫的誤操作,導致第一條記錄被刪除,那么執行下面的SQL語句:


  其執行結果為:


  由于已經執行了提交操作(COMMIT),所以無法進行回滾(ROLLBACK),這樣原來的數據就無法用正常方法進行恢復。不過,由于誤操作的時候在不久以前(假設是5分鐘之前),在這種情況下,可以使用DBMS_FLASHBACK包來恢復數據,可以在SQL*PLUS里鍵入如下代碼:

execute dbms_flashback.enable_at_time(sysdate-5/1440);

  此時,將數據庫調整到5分鐘之前的狀態,如果再執行查詢表的命令就會為如下結果:



  那么就可以在此時將其數據備份到emp_table_bk,即:


  這樣,就把以前誤操作的數據給恢復回來了。

  從上面的結果看的出,調用DBMS_FLASHBACK包的ENABLE_AT_TIME函數,可以將數據庫的當前查詢時間調整到以前,這樣給數據恢復提供了幫助。

  在使用DBMS_FLASHBACK包的時候還應該注意以下幾點:

  ·倒敘查詢是有前提的,即該數據庫必須具有撤消管理功能。具體做法是,DBA應該建立一個撤消表空間,并啟動自動撤消管理,并建立一個撤消保留時間窗。這樣,Oracle將在撤消表空間中維護足夠的撤消信息以便在保留時間內支持倒敘查詢。 

  ·由于撤消表空間的大小直接決定了倒敘查詢執行的成敗。即撤消表空間越大,那么可以查詢的時間可以越早,那么對于一般的撤消表空間的大小,為了保證倒敘查詢的成功,盡量查詢5天以內的數據,這樣成功的可能性更高一些。 

  三.任務調度

  在UNIX系統中,任務與進程的概念是等同的,即當系統執行一段程序代碼時會自動給其分配一個進程號和任務號,這樣使用進程號和任務號就可以對該任務進行操作(如掛起,停止,啟動等)。而Oracle數據庫內部也存在任務調度,比如,需要對某一操作進行周期性的執行,或者是在某事件發生的時候才執行。一般性的做法是使用觸發器,即將所有操作封裝在觸發器里,然后通過指定觸發事件即可將該操作等待執行。另外,還可以直接利用操作系統來實現,比如在Windows平臺就可以編寫Windows腳本并結合"任務計劃"來實施;如果在Unix平臺,就可以寫Shell來實現任務的周期性的執行操作。

  而這里主要是采用ORACLE數據庫的DBMS_JOB包來實現的。

  例如,由于每個月都需要對員工進行考評以進行薪水的調整,那么就需要對emp_table表進行更新處理。更新處理代碼如下:


  為了定期每個月都運行上面的程序,可以執行如下代碼:


  submit執行后將使得salary_upt過程馬上執行。在上面的代碼中,v_jobNum是該作業返回的作業號(任務號),后面兩個時間分別為開始時間和結束時間,所以salary_upt過程將每隔30天執行一次salary_upt程序,以此達到了定期更新的目的。

  如果要禁止該作業的繼續執行,可以執行下面的命令:


  使用DBMS_JOB包來實現任務的調度便于跟應用程序集成,有時候這樣處理更為的便捷。

  四.小結

  很多時候,數據庫的功能可以通過應用程序來進行擴展,對于進行后臺數據庫開發操作的用戶而言,除了對數據庫整體架構熟悉以外,掌握一定的應用程序開發能力是很有必要的。系統通過本文能夠給讀者一定的啟發。 

  本文的開發環境為:

  服務器端:UNIX+ORACLE9.2

  客戶端:WINDOWS2000 PRO+TOAD(或者SQL*PLUS)

  本文中的代碼在上述環境已調試通過。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久亚洲成人| 992tv在线成人免费观看| 欧美在线视频a| 成人激情电影一区二区| 亚洲精品日韩av| 国产精品久久久久久久天堂| 精品久久久久久久久久久久久久| 欧美日韩国产999| 亚洲欧洲在线视频| 激情懂色av一区av二区av| 久久色精品视频| 国产亚洲精品美女久久久| 正在播放欧美视频| 一区二区三区在线播放欧美| 欧美在线视频免费播放| 久久国产精品视频| 久久成人精品一区二区三区| 精品国产欧美一区二区三区成人| 日韩精品免费在线视频观看| 久久久久久久久久久人体| 日韩欧美国产成人| 日韩av最新在线观看| 自拍偷拍亚洲区| 欧美性猛交xxxxx水多| 日韩成人免费视频| 欧美第一页在线| 97在线观看视频| 欧美电影免费播放| 在线视频日韩精品| 亚洲jizzjizz日本少妇| 欧美国产日韩一区| 久久av.com| 在线电影中文日韩| 丝袜亚洲欧美日韩综合| 亚洲性xxxx| 色999日韩欧美国产| 一级做a爰片久久毛片美女图片| 国产一区二区动漫| 精品成人国产在线观看男人呻吟| 亚洲男人av在线| 欧美激情在线观看视频| 亚洲欧美在线免费| 欧美老肥婆性猛交视频| 亚洲欧美在线免费| 欧美日韩不卡合集视频| 日韩欧美在线播放| 国产一区二区三区直播精品电影| 亚洲自拍偷拍色片视频| 国产欧美一区二区| 国内精品免费午夜毛片| 日韩免费在线视频| 久久精品电影一区二区| 中文字幕日本精品| 91免费看国产| 亚洲精品视频播放| 国产不卡一区二区在线播放| 国产精品永久免费视频| 亚洲欧美精品在线| 国产精品视频不卡| 欧美日韩福利电影| 第一福利永久视频精品| 日韩国产欧美精品一区二区三区| 欧美高清视频在线播放| 国产精品麻豆va在线播放| 国产精品福利小视频| 中文字幕欧美视频在线| 日韩高清电影免费观看完整| 中文字幕综合在线| 欧美丝袜一区二区| 久久久久久高潮国产精品视| 日韩a**站在线观看| 国产欧美 在线欧美| 久久久久久国产精品三级玉女聊斋| 欧美精品18videos性欧| 国产欧美日韩中文| 97免费视频在线播放| 久久久黄色av| 亚洲v日韩v综合v精品v| 欧美一区二区三区艳史| 亚洲人成电影网站色| 欧美日韩中国免费专区在线看| 欧美寡妇偷汉性猛交| 国产97在线亚洲| 欧美精品一本久久男人的天堂| 68精品国产免费久久久久久婷婷| 精品视频在线播放免| 国产婷婷色综合av蜜臀av| 日韩中文视频免费在线观看| 欧美成人精品xxx| 久久久成人精品| 亚洲黄色免费三级| 久久中文字幕视频| 亚洲精品国产精品国自产观看浪潮| 欧美国产日韩在线| 亚洲精品福利在线| 欧美成人午夜剧场免费观看| 亚洲片国产一区一级在线观看| 国产v综合ⅴ日韩v欧美大片| 97视频在线看| 欧美重口另类videos人妖| 精品视频久久久| 色综合久久久888| 国产成人精品日本亚洲专区61| 亚洲在线视频福利| 亚洲精品suv精品一区二区| 亚洲精品456在线播放狼人| 日韩资源在线观看| 亚洲精品视频网上网址在线观看| 日韩在线视频观看| 国产精品电影久久久久电影网| 在线视频欧美日韩精品| 5252色成人免费视频| 91精品久久久久久久久久久久久久| 亚洲人成网站在线播| 97精品国产97久久久久久| 黄色成人av网| 欧美午夜无遮挡| 91精品国产综合久久香蕉| 日韩av在线直播| 国产精品免费视频久久久| 久国内精品在线| 日韩av123| 亚洲一区二区三区在线免费观看| 中文字幕亚洲自拍| 亚洲一区二区三区在线视频| 欧美黄色性视频| 国产精品高潮呻吟久久av野狼| 欧美电影第一页| 日产精品99久久久久久| 国产区亚洲区欧美区| 亚洲人成网站777色婷婷| 欧美日韩国产综合视频在线观看中文| 欧美精品福利在线| 4k岛国日韩精品**专区| 日韩黄色av网站| 久久天天躁狠狠躁夜夜躁2014| 亚洲国产精品推荐| 午夜精品免费视频| 欧美激情第99页| 成人国产精品av| 亚洲精品色婷婷福利天堂| 亚洲国产成人在线播放| 中文字幕日韩精品有码视频| 九色精品美女在线| 国产精品久久久久免费a∨| 日韩久久免费视频| 曰本色欧美视频在线| 精品少妇一区二区30p| 亚洲二区中文字幕| 欧美激情二区三区| 午夜免费日韩视频| 欧美激情成人在线视频| 奇米一区二区三区四区久久| 亚洲欧美视频在线| 2018国产精品视频| 亚洲的天堂在线中文字幕| 一本一道久久a久久精品逆3p| 亚洲美女av电影| 国产精品尤物福利片在线观看| 97精品伊人久久久大香线蕉| 日韩中文在线不卡| 伦伦影院午夜日韩欧美限制| 色av吧综合网| 国产99视频精品免视看7|