Oracle如何直接運(yùn)行OS命令(上)第1/2頁(yè)
在Oracle 8i中,往往會(huì)出現(xiàn)要在存儲(chǔ)過(guò)程中運(yùn)行操作系統(tǒng)命令的情況。一般來(lái)說(shuō),利用Oracle Enterprise Manager設(shè)定作業(yè)時(shí)可以達(dá)到這個(gè)目的。但是由于OEM在設(shè)定作業(yè)缺 乏靈活性,設(shè)定的作業(yè)的參數(shù)是固定的。在實(shí)際應(yīng)用當(dāng)中往往需要在SQL語(yǔ)句當(dāng)中運(yùn)行需要隨時(shí)運(yùn)行操作系統(tǒng)命令。Oracle 8i沒(méi)有直接運(yùn)行OS命令的語(yǔ)句,我們可以利用DBMS_PIPE程序包實(shí)現(xiàn)這一要求。
DBMS_PIPE通過(guò)創(chuàng)建管道,可以讓至少兩個(gè)進(jìn)程進(jìn)行通信。Oracle的管道與操作系統(tǒng)的管道在概念上有相同的地方,但是在實(shí)現(xiàn)機(jī)制不同。
下面介紹實(shí)現(xiàn)具體步驟:
1、創(chuàng)建一個(gè)程序包,姑且起名叫DAEMON,SQL語(yǔ)句如下:
/*創(chuàng)建daemon程序包*/
CREATE OR REPLACE PACKAGE BODY daemon AS
/*execute_system是實(shí)現(xiàn)運(yùn)行os命令的函數(shù)*/
FUNCTION execute_system(command VARCHAR2,
timeout NUMBER DEFAULT 10)
RETURN NUMBER IS
status NUMBER;
result VARCHAR2(20);
command_code NUMBER;
pipe_name VARCHAR2(30);
BEGIN
pipe_name := DBMS_PIPE.UNIQUE_SESSION_NAME;
DBMS_PIPE.PACK_MESSAGE('SYSTEM');
DBMS_PIPE.PACK_MESSAGE(pipe_name);
DBMS_PIPE.PACK_MESSAGE(command);
/*向daemon管道發(fā)送表示命令的字符*/
status := DBMS_PIPE.SEND_MESSAGE('daemon', timeout);
IF status <> 0 THEN
RAISE_APPLICATION_ERROR(-20010,
'Execute_system: Error while sending. Status = ' || status);
END IF;
相關(guān)文章
oracle分頁(yè)存儲(chǔ)過(guò)程 oracle存儲(chǔ)過(guò)程實(shí)例
這篇文章主要介紹了oracle存儲(chǔ)過(guò)程實(shí)例,實(shí)現(xiàn)oracle查詢數(shù)據(jù)分頁(yè),大家參考使用吧2014-01-01Oracle配置dblink訪問(wèn)PostgreSQL的操作方法
本文給大家介紹下Oracle配置dblink訪問(wèn)PostgreSQL的操作方法,通過(guò)dblink訪問(wèn)PostgreSQL的詳細(xì)過(guò)程,對(duì)Oracle?dblink訪問(wèn)PostgreSQL相關(guān)知識(shí)感興趣的朋友一起看看吧2022-03-03ORACLE SQL-UPDATE、DELETE、INSERT優(yōu)化和使用技巧分享
這篇文章主要介紹ORACLE中SQL-UPDATE、DELETE、INSERT優(yōu)化和使用技巧,需要的朋友可以參考下2013-03-03Oracle 11g數(shù)據(jù)庫(kù)安裝與卸載的方法圖解
如果小編使用的是win7系統(tǒng),最好采用11g,否則很可能10g出現(xiàn)不兼容安裝不成功的情況。下面給大家分享Oracle 11g數(shù)據(jù)庫(kù)安裝與卸載的方法圖解,非常不錯(cuò),感興趣的朋友一起看看吧2016-09-09