(10)使用Chains之管理CHAIN |
[君三思] 2009-9-7 |
5.2 管理Chains5.2.1 修改Chains屬性基本上碰到修改CHAIN屬性的機率不會太大,因此確實沒啥可修改的,對于CHAIN對象來說,能夠修改的屬性只有兩個:evaluation_interval和comments,這兩個參數一般情況下甚至都不會進行設置。如果你碰到了確實需要修改的情況,沒問題,DBMS_SCHEDULER.SET_ATTRIBUTE過程還記的吧,沒錯,修改CHAIN也是用它。例如: SQL> select chain_name,comments from user_scheduler_chains; CHAIN_NAME COMMENTS -------------------- -------------------------- MY_CHAIN1 SQL> exec dbms_scheduler.set_attribute(¨my_chain1¨,¨comments¨,¨change it for a test!¨); PL/SQL procedure successfully completed. SQL> select chain_name,comments from user_scheduler_chains; CHAIN_NAME COMMENTS -------------------- -------------------------- MY_CHAIN1 change it for a test !5.2.2 設置Chain Step運行屬性修改Chain Step的運行屬性就不能使用DBMS_SCHEDULER.SET_ATTRIBUTE了,而是有專門的過程DBMS_SCHEDULER.ALTER_CHAIN處理,該過程的定義如下: SQL> desc dbms_scheduler.alter_chain; Parameter Type Mode Default? ---------- -------- ---- -------- CHAIN_NAME VARCHAR2 IN STEP_NAME VARCHAR2 IN ATTRIBUTE VARCHAR2 IN VALUE BOOLEAN IN前兩個參數就不說了,ATTRIBUTE參數用來指定STEP的屬性值,可設定的屬性值有3個,每個屬性值都有TRUE和FALSE兩個選項,由VALUE參數指定:
DBMS_SCHEDULER.ALTER_CHAIN 過程修改Chain Step屬性后,只有當下次運行時才會生效,如果要修改當前運行中Chain Step的屬性,也有一個專門的過程DBMS_SCHEDULER.ALTER_RUNNING_CHAIN進行處理,該過程語法與DBMS_SCHEDULER.ALTER_CHAIN一模一樣,這里就不詳細介紹了。 5.2.3 刪除Chain RulesChain Rules 沒有對應的修改方法,如果要修改某個Chain的rule,只能首先刪除不適當的rule,然后重新添加新rule(所謂添加,其實就是再重新定義一個rule)。 刪除Chain Rule有專門的過程DBMS_SCHEDULER.DROP_CHAIN_RULE,該過程語法如下: SQL> desc dbms_scheduler.drop_chain_rule; Parameter Type Mode Default? ---------- -------- ---- -------- CHAIN_NAME VARCHAR2 IN RULE_NAME VARCHAR2 IN FORCE BOOLEAN IN Y三思一眼就能看出來,這個過程的調用方式那是相當簡單,因此就不對各個參數詳細介紹了,下面舉個簡單的示例,比如刪除前面定義的my_rule3,執行過程如下: SQL> exec dbms_scheduler.drop_chain_rule(¨my_chain1¨,¨my_rule3¨,true); PL/SQL procedure successfully completed.5.2.4 刪除Chain Steps刪除Chain Step也有專門的過程DBMS_SCHEDULER.DROP_CHAIN_STEP進行處理,該過程語法如下: SQL> desc dbms_scheduler.drop_chain_step; Parameter Type Mode Default? ---------- -------- ---- -------- CHAIN_NAME VARCHAR2 IN STEP_NAME VARCHAR2 IN FORCE BOOLEAN IN Y看著有點兒眼熟是吧,沒錯,與drop_chain_rule的相似度高達90%以上。例如,刪除之前定義的my_step3,執行過程如下: SQL> exec dbms_scheduler.drop_chain_step(¨my_chain1¨,¨my_step3¨,true); PL/SQL procedure successfully completed.5.2.5 刪除Chains如果要刪除Chain那就更簡單了,執行dbms_scheduler.drop_chain過程即可,例如: SQL> exec dbms_scheduler.drop_chain(¨my_chain1¨,true); PL/SQL procedure successfully completed.注意,執行drop_chain時,如果不指定force參數為TRUE,那么默認情況下ORACLE會首先檢查要刪除的CHAIN是否還有被依賴的對象,如果存在的話,會報ORA-27479錯誤,提示仍然有依賴的對象(所謂依賴的對象就是指,該chain仍然存在chain_step或chain_rule之類),因此無法直接刪除。這種情況下解決方案有兩種:一是手動刪除所有相關的chain_step和chain_rule,然后再執行chain的刪除,再就是附加force參數并指定參數值為true,這樣ORACLE就會自動替你清除所有依賴的對象了。 |