中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Oracle Scheduler能實現哪些功能

發布時間:2021-12-22 09:28:55 來源:億速云 閱讀:170 作者:iii 欄目:關系型數據庫

這篇文章主要介紹“Oracle Scheduler能實現哪些功能”,在日常操作中,相信很多人在Oracle Scheduler能實現哪些功能問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Oracle Scheduler能實現哪些功能”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

Oracle Scheduler可以幫助DBA或者數據庫用戶自動調度和運行各種類型的作業,比如數據庫備份、收集優化器統計信息、生成各種報表或者執行業務流程等等,也可以把Schedule和Resource Manager結合起來通過時間窗口激活指定的Resource Plan,完成企業在資源管理和作業調度上的各種復雜需求,在10g之前可以通過DBMS_JOB工具來實現類似的功能,但毫無疑問,DBMS_SCHEDULER的靈活性和多樣性比起老版本工具都有了極大的提升。

一,功能概述
 Oracle Scheduler到底可以實現那些具體功能呢?來看一下官方文檔給出的解釋:

 . Run database program units
    可以在本地或者遠程數據庫執行的數據庫程序包括:PL/SQL 匿名塊、PL/SQL 存儲過程、JAVA 存儲過程以及鏈

 . Run external executables, (executables that are external to the database)
    執行外部的可執行文件,包括應用程序、Shell腳本、Windows批處理文件,如果要在遠程主機執行外部作業,遠程主機只需要安裝Agent而不需要Database

 . Schedule job execution using the following methods:
    .Time-based scheduling
        You can schedule a job to run at a particular date and time, either once or on a repeating basis.
    .Event-based scheduling
        You can start jobs in response to system or business events. Your applications can detect events and then signal the Scheduler. Depending on the type of signal         sent, the Scheduler starts a specific job. 
    .Dependency scheduling
        You can set the Scheduler to run tasks based on the outcome of one or more previous tasks. You can define complex dependency chains that include branching         and nested chains.

 . Prioritize jobs based on business requirements.
    .Controlling Resources by Job Class
        把有相同特性的Job指定到一個Job Class,再把Job Class映射到Resource Consumer Group,實現對調度作業的資源分配控制
    .Controlling Job Prioritization based on Schedules
        通過時間窗口改變作業的優先等級,創建Window在一個時間范圍激活相應的 Resource Plan 來控制不同作業在不同時段的優先等級

 . Manage and monitor jobs

 . Execute and manage jobs in a clustered environment
 

    支持在RAC環境管理調度作業

二,基本概念
Oracle Scheduler包含的主要對象包括:Schedule,Program,Job,Job Class,Chain,Window,Database Destination,File Watcher,Credential ...具體介紹如下:

. Schedule (時間)
    通過 DBMS_SCHEDULER 包中的過程 CREATE_SCHEDULE 定義調度的開始時間,結束時間以及重復間隔
    CREATE_EVENT_SCHEDULE 過程用來創建由事件觸發的時間表,由一個特定時間段內的一個事件調起一項任務

. Program (程序)
    定義了作業的形式及內容,作業形式可以是PL/SQL 匿名塊,也可以是存儲過程或者外部可執行文件,執行的存儲過程帶有輸入參數時必須以匿名塊運行

. Job (作業)
    通過CREATE_JOB創建一個作業,這個存儲過程使用了重載,所以輸入參數的選擇可以非常靈活,既可以獨立設置作業的時間、內容、Job Class,也可以引用已     經存在的Schedule 和 Program 來簡化作業的創建

. Job Class (作業類)

    作業類中定義了Resource Consumer Group ,Service(RAC),日志等級,日志保留時間。要注意的一點是在Resource Manager中,service 參數會將會話映射到一個 資源用戶組,如果同時指定了RAC節點和用戶組,用戶組參數優先

. Chain (鏈)
    說白了就是一系列的作業通過鏈來建立起一套依賴關系,大概的思路是這樣的:先使 CREATE_CHAIN 創建一個鏈,再通過 DEFINE_CHAIN_STEP 和 DEFINE_CHAIN_EVENT_STEP 給要鏈接的 Program、Sub Chain、Event Condition、Event Schedule 分別定義一個別名(step_name),然后拿 DEFINE_CHAIN_RULE 定義這些 Step 的依賴規則,一通判斷、分支、嵌套之后,鏈就算創建完成了,在 CREATE_JOB 時 (job_type => 'CHAIN',job_action => 'chain_name') 就可以了,做人得講究,這個必須上圖:

Oracle Scheduler能實現哪些功能

. Window (窗口)

    窗口指的是一個介于開始時間和結束時間之間的時間段,(為什么這么簡單的一個概念被我說的如此繞口,我的小學語文老師呢?您有話要說嗎。。),通常用來調起作業,或者在不同的時間段激活不同的 Resource Plan 以調整作業之間的資源分配,文檔中還提到了 Overlapping Windows ,暫不研究了,來吧,有圖有真相:

Oracle Scheduler能實現哪些功能

. Database Destination (數據庫路徑
)
    通過 CREATE_DATABASE_DESTINATION 創建,在 CREATE_JOB 中作為一個輸入參數,用來執行遠程調度

Credential (證書)
     證書用來保存OS或者數據庫的用戶密碼,在執行External Job 或者遠程數據庫作業時使用

. File Watcher (文件監視器)
    這個好玩。。可以用來檢測一個OS文件是否存在,根據文件大小判斷傳輸是否完成,繼而觸發一個 Event Schedule

 . Lightweight Job (輕量級作業,為什么我的顏色不對呢?
    11gR1之前不被支持,通過 job_style 指定,輕量級作業并不是一個調度器對象,它適用于多個頻繁執行的小作業,看看官方文檔的介紹:

  • Unlike regular jobs, they are not schema objects.

  • They have significantly better create and drop times over regular jobs because they do not have the overhead of creating a schema object.

  • They have lower average session create time than regular jobs.

  • They have a small footprint on disk for job metadata and run-time data.

三,創建過程
--官方語法:








1,創建調度作業執行一個 Shell 腳本

執行Shell 腳本會在/tmp 生成一個文件:

  1. [oracle@ASM ~]$ cat /tmp/job.sh

  2. #!/bin/bash


  3. /bin/touch /tmp/abc.txt

創建證書,創建并立即執行作業:

  1. SQL> exec dbms_scheduler.create_credential('CRE1','user1','abcd1234')


  2. PL/SQL procedure successfully completed.


  3. SQL> exec dbms_scheduler.create_job(dbms_scheduler.generate_job_name,'EXECUTABLE','/tmp/job.sh',0,'','','','DEFAULT_JOB_CLASS',TRUE,FALSE,'Test.','CRE1')


  4. PL/SQL procedure successfully completed.


  5. SQL> select job_name,state,run_count,failure_count,raise_events from dba_scheduler_jobs where comments='Test.';


  6. JOB_NAME   STATE            RUN_COUNT FAILURE_COUNT RAISE_EVENTS

  7. ---------- --------------- ---------- ------------- --------------------

  8. JOB$_127   SUCCEEDED                1             0


  9. SQL> select JOB_NAME,STATUS,CREDENTIAL_NAME,ADDITIONAL_INFO from dba_scheduler_job_run_details where job_name='JOB$_127';


  10. JOB_NAME   STATUS     CREDENTIAL ADDITIONAL_INFO

  11. ---------- ---------- ---------- --------------------------------------------------------------------------------

  12. JOB$_127   SUCCEEDED  CRE1       EXTERNAL_LOG_ID="job_74659_457",

  13.                                  USERNAME="user1"

檢查作業是否執行成功

  1. [oracle@ASM ~]$ ls /tmp/abc.txt

  2. /tmp/abc.txt

2,分別執行SQL語句、匿名塊、PL/SQL 存儲過程

  1. SQL> exec dbms_scheduler.create_job(dbms_scheduler.generate_job_name,'PLSQL_BLOCK','insert into scott.t1(dname) values(''BLOCK'');',0,'','','','DEFAULT_JOB_CLASS',TRUE,FALSE,'Test_1')


  2. PL/SQL procedure successfully completed.


  3. SQL> exec dbms_scheduler.create_job(dbms_scheduler.generate_job_name,'PLSQL_BLOCK','BEGIN p2(''50'',''t'',''t''); END;',0,'','','','DEFAULT_JOB_CLASS',TRUE,FALSE,'Test_3')


  4. PL/SQL procedure successfully completed.


  5. SQL> exec dbms_scheduler.create_job(dbms_scheduler.generate_job_name,'STORED_PROCEDURE','p1',0,'','','','DEFAULT_JOB_CLASS',TRUE,FALSE,'Test_2')


  6. PL/SQL procedure successfully completed.

3,創建 Program 并在 Job 中引用

  1. SQL> exec dbms_scheduler.create_program('TEST1','PLSQL_BLOCK','BEGIN p2(''50'',''t'',''t''); END;',0,TRUE,'Pro_1')


  2. PL/SQL procedure successfully completed.


  3. SQL> exec dbms_scheduler.create_job(dbms_scheduler.generate_job_name,program_name => 'TEST1',repeat_interval => '',end_date => '',enabled => TRUE ,auto_drop => FALSE,comments => 'Test_9')


  4. PL/SQL procedure successfully completed.

4,創建 Job 時分別引用 Program 和 Schedule

  1. SQL> BEGIN

  2.   2  DBMS_SCHEDULER.CREATE_SCHEDULE(

  3.   3  SCHEDULE_NAME => 'sch2',

  4.   4  START_DATE => sysdate,

  5.   5  END_DATE => sysdate+3650,

  6.   6  REPEAT_INTERVAL => 'freq=yearly; bymonth=jan,apr,jul,oct; bymonthday=2',    --10年時間里每年每個季度的第一個月的第二天執行作業

  7.   7  COMMENTS => 'Quarterly Report.'

  8.   8 );

  9.   9  END;

  10.  10  /


  11. PL/SQL procedure successfully completed.


  12. SQL> BEGIN

  13.   2  DBMS_SCHEDULER.CREATE_JOB(

  14.   3  dbms_scheduler.generate_job_name,

  15.   4  PROGRAM_NAME=>'TEST1',

  16.   5  SCHEDULE_NAME=>'sch2',

  17.   6  ENABLED=>TRUE,

  18.   7  AUTO_DROP=>FALSE,

  19.   8  COMMENTS=>'Test_99'

  20.   9 );

  21.  10  END;

  22.  11  /


  23. PL/SQL procedure successfully completed.


四、dbms_scheduler包一些視圖
--*代表all或dba或user

--5.1.查看job的視圖
dba_scheduler_jobs -          -查看job
dba_scheduler_job_args        --查看job的所有輸入參數
*_scheduler_job_classes       --查看job的類信息
*_scheduler_job_dests         --查看job狀態
*_scheduler_job_log           --查看job日志
*_scheduler_job_run_details   --查看job執行的詳細信息
*_scheduler_running_jobs

--5.2.查看chain的一些視圖
*_scheduler_chains
*_scheduler_chain_rules
*_scheduler_chain_steps
*_scheduler_running_chains   --查看正在執行的chains

--5.3.查看program的視圖
*_scheduler_programs         --查看程序
*_scheduler_program_args     --查看程序參數

--5.4.查看調度組scheduler_group信息
*_scheduler_groups
*_scheduler_group_members

--5.5.查看window的視圖(這類視圖只有dba和all開頭的)
*_scheduler_windows          --查看window
*_scheduler_window_details   --查看window詳細信息
*_scheduler_window_groups    --查看window組
*_scheduler_window_log       --查看window日志
*_scheduler_wingroup_members --查看window成員

--5.6.查看scheduler視圖
*_scheduler_schedules        --查看調度
*_scheduler_global_attribute --顯示所有的調度屬性
*_scheduler_credentials
*_scheduler_db_dests
*_scheduler_dests
*_scheduler_external_dests
*_scheduler_file_watchers
*_scheduler_notifications
*_scheduler_remote_databases
*_scheduler_remote_jobstate

到此,關于“Oracle Scheduler能實現哪些功能”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

贵德县| 芮城县| 咸丰县| 宁化县| 唐河县| 育儿| 杭州市| 讷河市| 道真| 沙湾县| 开封市| 梅河口市| 临清市| 津南区| 海口市| 霍州市| 青岛市| 南召县| 宜宾县| 泽普县| 丽水市| 天长市| 福州市| 交口县| 农安县| 九台市| 威宁| 无极县| 法库县| 冀州市| 阿荣旗| 甘泉县| 甘洛县| 当涂县| 三门县| 绍兴县| 黄山市| 渭源县| 新干县| 庆城县| 通化市|