当前位置:  数据库>oracle

在Oracle数据库中运行操作系统命令

    来源: 互联网  发布时间:2017-03-16

    本文导语:  在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语句如下:
 
  /*创建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程序包。










    
 
 

您可能感兴趣的文章:

  • linux下安装oracle后使用命令行启动的方法 linux启动oracle
  • Oracle 10G for Linux常用命令
  • Linux 下 Oracle 命令学习笔记
  • ubuntu系统中运行java程序调用oracle 的sqlplus,为什么找不到sqlplus呢?在线等 iis7站长之家
  • 请问,在unix下,关闭oracle数据库和重起unix,的正确顺序和命令应该是怎样的!请教!
  • Linux下命令行启动oracle时报错的解决
  • Linux下启动Oracle database EM及isqlplus等命令
  • oracle for linux 下面的sqlca.sqlcode是一个什么命令去查?
  • 查看Oracle的执行计划一句话命令
  • Oracle中备份表的简单sql命令语句
  • Oracle 10g各个帐号的访问权限、登录路径、监控状态命令查询等等
  • 要装oracle,设置好环境变量。之后就啥命令也用不了了
  • Oracle如何直接运行OS命令(上)第1/2页
  • UNIX服务器上使用“kill"命令终止"Oracle”过程
  • oracle命令行删除与创建用户的代码
  • 剖析用UNIX的kill命令终止Oracle详细过程
  • 用UNIX的kill命令来终止所有的Oracle过程
  • 学习登录oracle数据库时常用的操作命令
  • ubuntu如何用apt-get命令安装Oracle的vituralBox呢?
  • oracle创建删除用户示例分享(oracle删除用户命令及授权)
  • 在unix(sun的)上如何运行oracle
  • oracle的job不能运行问题的解决方法
  • Oracle数据库运行Oracle form时避免出现提示信息
  • 只能运行文字界面,可否安装Oracle数据库!!!
  • linux 安装 oracle 运行./runinstall 提示没有这个文件
  • 急急急!!!Solaris中JSP运行环境(tomcat)应如何设置才能使jsp连接到ORACLE???
  • 在CentOS5.3下运行oracle10g(10.2.0.4)速度慢,硬盘读写慢
  • 如何让java application运行时不显示Dos窗口!象oracle,jb那样!
  • Sun Solaris运行Oracle数据库所需的内核参数
  • ubuntu系统中运行java程序调用oracle 的sqlplus,为什么找不到sqlplus呢?在线等
  • ■帮一个朋友维护网站,oracle运行半小时就自动锁死,用top发现是其狂吃内存,直到吃完为止。怎么办啊
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • ORACLE日期相关操作
  • Linux下如何用C语言操作Oracle数据库相关的图书推荐
  • Oracle终于涉入支持Linux操作系统了
  • Linux平台下Oracle的操作
  • linux c 怎样利用pro*c/c++操作 win2000 下 oracle 谢谢
  • Window客户端通过ADO是否能够连接和操作Unix平台下的Oracle数据库?
  • Oracle将字符编码从GBK转到UTF8,如何操作比较稳妥?
  • 如何设定linux red hat 9的oracle9,让window的电脑可以操作数据库
  • linux oracle数据库删除操作指南
  • Linux环境中Oracle数据导入与导出备份操作
  • Oracle针对数据库某一行进行操作的时候,如何将这一行加行锁
  • oracle的plsql里有没有位操作的功能
  • fedora core5 (FC5) 下面不能装 Oracle 10g 么? (检查操作系统就通不过啊,晕)
  • Linux操作系统下Oracle数据库多实例启动方式及修改内存
  • 怎样在c语言的代码里内嵌的操作oracle数据库,各位大虾谢谢了
  • 一个关于JAVA操作oracle数据库时UPDATE权限的问题
  • Oracle中操作分页
  • Oracle 数据库操作技巧集
  • secureCRT远程连接服务器操作oracle数据库出现的问题
  • 请教各位:JAVA操作ORACLE的问题 急!!!
  • Linux平台上OCI操作ORACLE数据库时乱码问题的解决
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3