知识大全 Oracle中如何直接运行OS命令(上)
Posted 命令
篇首语:旦旦而学之,久而不怠焉,迄乎成。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Oracle中如何直接运行OS命令(上)相关的知识,希望对你有一定的参考价值。
Oracle中如何直接运行OS命令(上) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
在Oracle i中 往往会出现要在存储过程中运行操作系统命令的情况 一般来说 利用Oracle EntERPrise Manager设定作业时可以达到这个目的 但是由于OEM在设定作业缺乏灵活性 设定的作业的参数是固定的 在实际应用当中往往需要在SQL语句当中运行需要随时运行操作系统命令 Oracle i没有直接运行OS命令的语句 我们可以利用DBMS_PIPE程序包实现这一要求 DBMS_PIPE通过创建管道 可以让至少两个进程进行通信 Oracle的管道与操作系统的管道在概念上有相同的地方 但是在实现机制不同 下面介绍实现具体步骤: 创建一个程序包 姑且起名叫DAEMON SQL语句如下: /*创建daemon程序包*/ CREATE OR REPLACE PACKAGE BODY daemon AS /*execute_system是实现运行os命令的函数*/ FUNCTION execute_system(mand VARCHAR timeout NUMBER DEFAULT ) RETURN NUMBER IS status NUMBER result VARCHAR ( ) mand_code NUMBER pipe_name VARCHAR ( ) BEGIN pipe_name := DBMS_PIPE UNIQUE_SESSION_NAME DBMS_PIPE PACK_MESSAGE( SYSTEM ) DBMS_PIPE PACK_MESSAGE(pipe_name) DBMS_PIPE PACK_MESSAGE(mand) /*向daemon管道发送表示命令的字符*/ status := DBMS_PIPE SEND_MESSAGE( daemon timeout) IF status <> THEN RAISE_APPLICATION_ERROR( Execute_system: Error while sending Status = || status) END IF [page] status := DBMS_PIPE RECEIVE_MESSAGE(pipe_name timeout) IF status <> THEN RAISE_APPLICATION_ERROR( Execute_system: Error while receiving Status = || status) END IF /*获取返回结果*/ DBMS_PIPE UNPACK_MESSAGE(result) IF result <> done THEN RAISE_APPLICATION_ERROR( Execute_system: Done not received ) END IF DBMS_PIPE UNPACK_MESSAGE(mand_code) DBMS_OUTPUT PUT_LINE( System mand executed result = || mand_code) RETURN mand_code END execute_system /*stop是让daemon停止*/ PROCEDURE stop(timeout NUMBER DEFAULT ) IS status NUMBER BEGIN DBMS_PIPE PACK_MESSAGE( STOP ) status := DBMS_PIPE SEND_MESSAGE( daemon timeout) IF status <> THEN RAISE_APPLICATION_ERROR( stop: error while sending status = || status) END IF END stop END daemon 通过Sql*Plus运行以上语句 将为当前用户创建daemon程序包 创建在OS上运行的守护进程 监听由上面的daemon程序包发来的要求执行os命令的语句 以下Pro*C的代码 必须由pro*c先进行预编译 #include #include EXEC SQL INCLUDE SQLCA EXEC SQL BEGIN DECLARE SECTION char *uid = scott/tiger ;/*在这个地方改为你自己访问的用户 密码 服务名*/ int status VARCHAR mand[ ] VARCHAR value[ ] VARCHAR return_name[ ] EXEC SQL END DECLARE SECTION void connect_error() char msg_buffer[ ] int msg_length int buffer_size = cha138/Article/program/Oracle/201311/17032相关参考
Oracle中通过命令行实现定时操作详解 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Orac
Oracle服务器常用命令行工具一览 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! ()数据库管
详细讲解Oracle服务器的常用命令行 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!数据库管理相关
Oracle数据导入导出imp/exp就相当于oracle数据还原与备份exp命令可以把数据从远程数据库服务器导出到本地的dmp文件imp命令可以把dmp文件从本地导入到远处的数据库服务器中利用这
重装OS及Oracle软件,巧用RMAN恢复数据 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
今天参考了一些文档作了以下一点实验记录了整个过程留个记录吧 一插入时锁的情况 打开一个命令行窗口用sqlplus登陆到oracle c[oracle@qatest~]$sqlplusfort
Oracle中tnsping命令解析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Oracle
哎一学期又结束了我想把这些简单命令记录下虽然可能我不会深入研究oracle搞不好以后也会要用到的时候现在花点时间把它给存起来 怎么安装oracle软件我就不介绍了只要下个安装包接下来的安装就不在
Oracle设置归档模式的命令 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Oracle数据库
createtablespacejfxtdatafileE:\\oracle\\oradata\\oradb\\jfxtorasizemreusedefaultstorage(initialkne