久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

ORACLE中如何使用Programs

153次閱讀
沒有評論

共計 3919 個字符,預計需要花費 10 分鐘才能閱讀完成。

丸趣 TV 小編給大家分享一下 ORACLE 中如何使用 Programs,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

2.1  創建 Programs

Scheduler 中的 Program 對象并不是常規意義上的 程序 或 應用,而就是一個 對象,由 DBA 定義的,具有執行某項功能的特殊對象。Program 中實際執行的操作可以分為下列三種類型:

PL/SQL BLOCK:標準的 pl/sql 代碼塊;

STORED PROCEDURE:編譯好的 PL/SQL 存儲過程,或者 Java 存儲過程,以及外部的 c 子程序;

EXECUTEABLE:ORACLE 數據庫之外的應用,比如操作系統命令等等。

創建 Programs 使用 DBMS_SCHEDULER.CREATE_PROGRAM 過程,該過程支持的參數如下:

JSSWEB  desc dbms_scheduler.create_program;

Parameter Type Mode Default? 

——————- ————– —- ——– 

PROGRAM_NAME VARCHAR2 IN 

PROGRAM_TYPE VARCHAR2 IN 

PROGRAM_ACTION VARCHAR2 IN 

NUMBER_OF_ARGUMENTS BINARY_INTEGER IN Y 

ENABLED BOOLEAN IN Y 

OMMENTS VARCHAR2 IN Y 

如上所示,前三項為必選參數,各參數實際代表的意義如下:

PROGRAM_NAME:指定一個 program 名稱;

PROGRAM_TYPE:Program 的類型,如前文中所述,Program 支持三種類型;

PROGRAM_ACTION
:實際執行的操作,應與前面 PROGRAM_TYPE 參數關聯使用。比如說前面指定了 PROGRAM_TYPE 為 PLSQL_BLOCK,那么此處要執行的 action 就應當是一段標準的 pl/sql 代碼。如果前面指定 PROGRAM_TYPE 為 STORED_PROCEDURE,那么此處要執行的 action 就應當是 ORACLE 中定義好的存儲過程 (含 Java 存儲過程),如果前面指定 PROGRAM_TYPE 為 EXECUTABLE,那么此處就應該指定外部命令的命令行信息 (含路徑信息);

NUMBER_OF_ARGUMENTS:指定支持的參數個數,默認值為 0 即沒有參數。每個 program 最多能夠支持 255 個參數,注意如果 PROGRAM_TYPE 設置為 PLSQL_BLOCK,那么本參數自動忽略;

ENABLED:指定是否將創建的 program 置為有效狀態,默認情況下為 false。

COMMENTS:這個不用再說了吧,注釋信息。

下面實際操作一下看看,PL/SQL 或 PROCEDURE 沒有挑戰 (ORACLE 中直接即可調用),咱們創建一下 program,直接調用操作系統中的 ls 命令,操作如下:

SQL  BEGIN

 2 DBMS_SCHEDULER.CREATE_PROGRAM (

 3 program_name =   my_program1 ,

 4 program_action =   /bin/date ,

 5 program_type =   EXECUTABLE ,

 6 enabled =  TRUE);

 7 END;

 8 /

PL/SQL procedure successfully completed.

2.2  管理 Programs

定義的 program 如何執行,這里先賣個關子,前面介紹 CREATE_PROGRAM 過程的參數時提到,每個 program 最多支持 255 個參數,要為 program 添加參數,可以通過 DEFINE_PROGRAM_ARGUMENT 過程。不過在為其添加參數前,要注意 program 的 NUMBER_OF_ARGUMENTS 指定的數量,如果該值為 0,那么為其添加參數時就會報錯。

查詢創建的 program 的信息,可以通過 USER_SCHEDULER_PROGRAMS 視圖,例如:

SQL  select program_name,program_type,program_action,number_of_arguments,enabled from user_scheduler_programs;

PROGRAM_NAME PROGRAM_TYPE PROGRAM_ACTION NUMBER_OF_ARGUMENTS ENABL

——————– —————- ——————– ——————- —–

MY_PROGRAM1 EXECUTABLE /bin/ls 1 FALSE

由于前面創建 program 時並未指定 NUMBER_OF_ARGUMENTS 的值,因此我們這里需要首先修改該值為一個非 0 值,操作如下:

SQL  exec dbms_scheduler.set_attribute(my_program1 , NUMBER_OF_ARGUMENTS ,1);

PL/SQL procedure successfully completed.

沒錯,操作還是使用 DBMS_SCHEDULER.SET_ATTRIBUTE 過程。另外需要注意,program 的 NUMBER_OF_ARGUMENTS 參數可是說想改就能改的,正常情況下該處理必須是在 program 處于 enabled 之前確認完畢,否則會觸發 ORA-27465 錯誤,因此要修改 program 的參數之前,必須首先確保要修改 program 的 enabled 狀態為 false。

那么對于已經處于 enabled 狀態的 program,如何修改其狀態屬性呢?其實很簡單,前面操作 jobs 時使用的 DBMS_SCHEDULER.DISABLE 過程還記的嗎?沒錯,該過程對于 program 同樣好使,并且調用方式也完全一樣,例如:

SQL  exec dbms_scheduler.disable(my_program1

PL/SQL procedure successfully completed.

另外,如果希望將 program 置為 enabled 狀態,執行 DBMS_SCHEDULER.ENABLE 過程即可,這里不再例舉。

接下來,就可以為剛剛創建的 my_program1 添加路徑參數,操作如下:

SQL  BEGIN

 2 DBMS_SCHEDULER.DEFINE_PROGRAM_ARGUMENT (

 3 program_name =   my_program1 ,

 4 argument_position =  1,

 5 argument_name =   dirpath ,

 6 argument_type =   VARCHAR2 ,

 7 default_value =   /home/oracle

 8 END;

 9 /

PL/SQL procedure successfully completed.

查詢為 program 定義的參數,可以通過 USER_SCHEDULER_PROGRAM_ARGS 視圖,例如:

SQL  select program_name,argument_name,argument_position,argument_type, default_value from user_scheduler_program_args;

PROGRAM_NAME ARGUMENT_NAME ARGUMENT_POSITION DEFAULT_VALUE

——————– ——————– —————– ——————–

MY_PROGRAM1 DIRPATH 1 VARCHAR2

刪除 program 的 argument 操作也很簡單,使用 DROP_PROGRAM_ARGUMENT 過程即可,例如:

SQL  exec dbms_scheduler.drop_program_argument(my_program1 , dirpath

PL/SQL procedure successfully completed.

該過程第一個參數指定 program 名稱,第二個參數指定定義的 argument 名稱,當然此處也可以指定 argument 的位置,即前例視圖返回結果中的 ARGUMENT_POSITION 列值。

要刪除 program 的話就更簡單了,使用 DROP_PROGRAM 過程即可,例如:

SQL  exec dbms_scheduler.drop_program(my_program1

PL/SQL procedure successfully completed.

當然啦,刪除 program 的同時,也會刪除該 program 對應的所有 arguments。

實際上 SCHEDULER 中創建 job 時,也可以指定執行外部的程序。SCHEDULER 中的 Job 更像是之前版本繼承過來的 JOBS,只不過 10g 中 SCHEDULER 管理的 JOBS 功能更加強大。Programs 與 Jobs 不同的是,Jobs 是定義好的,定時執行的任務,而 Programs 則是定義好的,等待被執行的對象。

以上是“ORACLE 中如何使用 Programs”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注丸趣 TV 行業資訊頻道!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-24發表,共計3919字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 饶阳县| 永嘉县| 务川| 左贡县| 亳州市| 宁陵县| 新绛县| 苗栗县| 岢岚县| 沽源县| 屏东市| 岚皋县| 简阳市| 宁安市| 威远县| 醴陵市| 沙河市| 确山县| 阜新市| 汉沽区| 肇庆市| 台东县| 彰化市| 达日县| 长治市| 利川市| 昆明市| 教育| 辽阳县| 巩留县| 沾益县| 清新县| 丰城市| 德安县| 东海县| 鄂托克旗| 土默特右旗| 壤塘县| 巢湖市| 棋牌| 肇州县|