欢迎您访问我爱IT技术网,今天小编为你分享的是oracle数据库教程:【在Oracle运行操作系统命令_Oracle_领测软件测试网】,通过学习这些教程,你能够更深层次的掌握Oracle数据库!
在Oracle运行操作系统命令_Oracle_领测软件测试网
在Oracle 8i中,往往会出现要在存储过程中运行操作系统命令的情况.一般来说,利用Oracle Enterprise Manager设定作业时可以达到这个目的.但是由于OEM在设定作业缺乏灵活性,设定的作业的参数是固定的.在实际应用当中往往需要在 SQL 语句当中运行需要随时运行操作
在Oracle 8i中,往往会出现要在存储过程中运行操作系统命令的情况.一般来说,利用Oracle Enterprise Manager设定作业时可以达到这个目的.但是由于OEM在设定作业缺乏灵活性,设定的作业的参数是固定的.在实际应用当中往往需要在SQL语句当中运行需要随时运行操作系统命令. Oracle 8i没有直接运行OS命令的语句,我们可以利用DBMS_PIPE程序包实现这一要求. DBMS_PIPE通过创建管道,可以让至少两个进程进行通信.Oracle的管道与操作系统的管道在概念上有相同的地方,但是在实现机制不同.
下面介绍实现具体步骤:
1、创建一个程序包,姑且起名叫DAEMON,SQL语句如下:
CREATE OR REPLACE PACKAGE BODY daemon AS
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);
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;
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;
关于在Oracle运行操作系统命令_Oracle_领测软件测试网的用户使用互动如下:
相关问题:在linux上安装了oracle客户端,10g,64位操作系统...
答:是你的Oracle安装没有成功,在安装的时候有报错导致部分软件没有安装上。原因是你Linux操作系统缺少了相关的安装包导致安装报错的,找到Oracle安装必须的Linux的 rpm包安装上,然后在重新安装数据库。 >>详细
相关问题:在Linux平台下 怎样搭建Oracle数据库 ? 越详细越...
答:刚刚配置好的一个,发给你参考一下。 在 Linux x86 上安装 Oracle 数据库 10g uname -r 例如: # uname -r 2.4.21-4.0.1.ELsmp 其他所需程序包的版本(或更高版本): ? gcc-3.2.3-2 ? make-3.79 ? binutils-2.11 ? openmotif-2.2.2-16 ? setarc... >>详细
相关问题:oracle11g在linux中安装时使用dbca命令提示commond...
答:su - oracle export PATH=$ORACLE_HOME/bin:$PATH 当然你要配置ORACLE_HOME 如果你连ORACLE_HOME都不会配置,建议还是先别安装了,先看看oracle安装的基础知识在安装,不然即使解决了这个问题,以后还会出现很多问题。仍然解决不了。 >>详细
- 数据库中Oracle索引的优化设计_Oracle_领测软件测
- oracle性能Statspack使用之命中率调整_Oracle_领
- Oracle数据库和JSP连接要注意的一些问题[1]_Oracl
- 软件测试开发技术Oracle数据块损坏及其恢复的总结
- Oracle数据库集中复制方法浅议_Oracle_领测软件测
- ORACLE数据库的统计数据及其生成方式_Oracle_领测
- Oracle游标使用大全_Oracle_领测软件测试网
- 程序员需要一本面向对象的实践指南吗?_Oracle_领
- Oracle数据库环境下数据文件丢失的恢复_Oracle_领
- 揭开Oracle 10G手工创建数据库的神秘面纱_Oracle_
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
