oracle在哪些系统运行,如何正确在Oracle运行操作系统命令?

在Oracle8i数据库中,虽然OracleEnterpriseManager可以设置作业,但其灵活性不足。文章介绍了如何通过DBMS_PIPE程序包创建一个名为DAEMON的程序包,实现运行操作系统命令的功能。DAEMON包含execute_system函数用于执行命令,以及stop过程用于停止进程。用户可以通过Sql*Plus创建这个程序包,从而在SQL语句中执行操作系统命令。
摘要由CSDN通过智能技术生成

我们大家都知道在Oracle 8i数据库中,我们经常会发现出现会Oracle运行操作的系统命令.就一般情况而言,利用Oracle Enterprise Manager来设定作业能达到我们想要的目的.但是由于OEM在设定作业缺乏灵活性,设定的作业的参数是固定的。

在实际应用当中往往需要在SQL语句当中运行需要随时Oracle运行操作系统命令.Oracle 8i没有直接运行OS命令的语句,我们可以利用DBMS_PIPE程序包实现这一要求.

DBMS_PIPE通过创建管道,可以让至少两个进程进行通信.Oracle的管道与操作系统的管道在概念上有相同的地方,但是在实现机制不同.

下面介绍实现具体步骤:

1 创建一个程序包,姑且起名叫DAEMON,SQL语句如下:

创建daemon程序包

CREATE OR REPLACE PACKAGE BODY daemon AS

execute_system是实现运行os命令的函数

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管道发送表示命令的字符

status:=DBMS_PIPE.SEND_MESSAGE(''daemon'', timeout);

IF status<>0 THEN

RAISE_APPLICATION_ERROR(-20010,

''Execute_system: Error while sending.Status=''|| status);

END IF;

status:=DBMS_PIPE.RECEIVE_MESSAGE(pipe_name, timeout);

IF status<>0 THEN

RAISE_APPLICATION_ERROR(-20011,

''Execute_system: Error while receiving.

Status=''|| status);

END IF;

获取返回结果

DBMS_PIPE.UNPACK_MESSAGE(result);

IF result<>''done'' THEN

RAISE_APPLICATION_ERROR(-20012,

''Execute_system: Done not received.'');

END IF;

DBMS_PIPE.UNPACK_MESSAGE(command_code);

DBMS_OUTPUT.PUT_LINE(''System command executed.result=''||

command_code);

RETURN command_code;

END execute_system;

stop是让daemon停止*/

PROCEDURE stop(timeout NUMBER DEFAULT 10) IS

status NUMBER;

BEGIN

DBMS_PIPE.PACK_MESSAGE(''STOP'');

status:=DBMS_PIPE.SEND_MESSAGE(''daemon'', timeout);

IF status<>0 THEN

RAISE_APPLICATION_ERROR(-20030,

''stop: error while sending.status=''|| status);

END IF;

END stop;

END daemon;

通过Sql*Plus运行以上语句,将为当前用户创建daemon程序包. 以上的相关内容就是对在Oracle运行操作系统命令的创建一个程序包介绍,望你能有所收获。

【编辑推荐】

【责任编辑:孙巧华 TEL:(010)68476606】

点赞 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值