萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> oracle教程 >> ORACLE提供的重要的包

ORACLE提供的重要的包

前言

Oracle提供了幾個包,它們可以用來完成很多任務,從內部進程通信到文件I/O,到在PL/SQL塊中動態創建和執行SQL語句。所有這些包由SYS用戶所擁有—當Oracle最初安裝時兩個用戶中的一個,這些包中最重要的包括:

DBMS_Alert 不用輪詢就允許應用命名並發出警告條件信號的過程與函數

DBMS_DDL 允許獲取PL/SQL程序內部一定數量的DDL語句的過程

DBMS_Describe 為存儲過程與函數描述API的過程

DBMS_Job 管理BLOBs、CLOBs、NCLOBs與BFILEs的過程與函數

DBMS_Output 允許PL/SQL程序生成終端輸出的過程與函數

DBMS_Pipe 允許數據庫會話使用管道通信(通信頻道)的過程與函數

DBMS_SQL 在PL/SQL程序內部執行動態SQL的過程與函數

DBMS_Utility

UTL_File 允許PL/SQL程序讀寫服務器文件系統上的文本文件的過程與函數

用DBMS_JOB來實現高級計劃任務

程序有三個參數:需要提交的任務的名字、啟動任務的時間已經執行該任務的間隔時間。

dbms_job.submit(what='statspack_alert.sql;',

next_date=sysdate+1/24,——在下一個小時後啟動

interval='sysdate+1/24');——每小時運行一次

問題是,盡管我們在這個程序中指定了任務起始時間和重新執行的時間間隔,但是我們看不到在預定時間運行該任務的機制。例如,如何讓一個任務在早上8點啟動、每小時 運行一次、最後在下午5點終止呢?

上面的例子讓該任務每小時運行一次,但是為了獲得時間間隔,它有必要創建兩個其它任務:

一個任務在下午5點終止(主)任務,

另一個任務在第二天早上8點啟動(主)任務。

為了實現高級計劃任務,我們可以創建自定義間隔,讓任務在特定的時間間隔來啟動和終止。下面是一個例子:

Schedule a snapshot to be run on this instance every hour
variable jobno number;
   variable instno number;
   begin
   select instance_number into :instno from v$instance;

提交任務從6:00開始,每小時運行一次

dbms_job.submit(
   jobno, 'statspack.snap; ',
   trunc(sysdate)+6/24,
   'trunc(SYSDATE+1/24,''HH'')',
   TRUE,
   instno);

  • 共3頁:
  • 上一頁
  • 1
  • 2
  • 3
  • 下一頁
copyright © 萬盛學電腦網 all rights reserved