oracle执行系统命令

 
测试成功环境:windows XP+oracle 10g、window 2008 R2 + 11g
 
代码如下:
www.2cto.com  
Sql代码  
create or replace and compile Java Source named "OSCommand" as  
-- java:        OS COMMAND  
 
import java.io.*;  
import java.lang.*;  
public class OSCommand{  
   
        public static String Run(String Command){  
   
                Runtime rt = Runtime.getRuntime();  
                int     rc = -1;  
   
                try{  
                        Process p = rt.exec( Command );  
                        int bufSize = 32000;  
                        int len = 0;  
                        byte buffer[] = new byte[bufSize];  
                        String s = null;  
   
                        BufferedInputStream bis = new BufferedInputStream( p.getInputStream(), bufSize );  
                        len = bis.read( buffer, 0, bufSize );  
   
                        rc = p.waitFor();  
   
                        if ( len != -1 ){  
                                s = new String( buffer, 0, len );  
                                return( s );  
                        }  
   
                        return( rc+"" );  
                }    www.2cto.com  
   
                catch (Exception e){  
                        e.printStackTrace();  
                        return(  "-1\ncommand[" + Command + "]\n" + e.getMessage() );  
                }  
   
        }  
}  
/   
show errors  
   
create or replace function OSexec( cCommand IN string ) return varchar2 is  
-- function:    OS EXEC  
-- descr:       PL/SQL wrapper for the Java OSCOMMAND stored proc  
--  
language        JAVA  
name            'OSCommand.Run(java.lang.String) return java.lang.String';  
/     www.2cto.com  
show errors  
   
-- sysdba. Substitute SCOTT with the applicable schema that owns the OSEXEC  
-- and OSCOMMAND stored procs.  
declare  
        SCHEMA  varchar2(30) := 'SCOTT';  
begin  
        dbms_java.grant_permission(  
                SCHEMA,  
                'SYS:java.io.FilePermission',  
                '<<ALL FILES>>',  
                'execute'  
        );  
   
        dbms_java.grant_permission(  
                SCHEMA,  
                'SYS:java.lang.RuntimePermission',  
                'writeFileDescriptor',  
                '*'  
        );  
        dbms_java.grant_permission(  
                SCHEMA,  
                'SYS:java.lang.RuntimePermission',  
                'readFileDescriptor',  
                '*'  
        );  
   
commit;  
end;  
/     www.2cto.com  
   
-- 查看本地连接信息  
SQL> select OSexec('ipconfig') as STDOUT from dual;  
   
STDOUT  
--------------------------------------------------------------------------------  
Windows IP ????  
   
??????????? ????l?? 3:  
  www.2cto.com  
   l??????? DNS ??? . . . . . . . :  
   ????t?? IPv6 ???. . . . . . . . : *************  
   IPv4 ??? . . . . . . . . . . . . : 192.168.100.100  
   ????????  . . . . . . . . . . . . : 255.255.255.0  
   ??????. . . . . . . . . . . . . : 0.0.0.0  
--激活guest账号  
 SQL> select OSexec('cmd.exe /c net user guest /active:yes') as STDOUT from dual;  
STDOUT  
--------------------------------------------------------------------------------  
0  

记点事! oracle 调用外部命令的更多相关文章

  1. Perl调用外部命令的方式和区别

    主要的方式简述如下:1. system("command");使用该命令将开启一个子进程执行引号中的命令,父进程将等待子进程结束并继续执行下面的代码. 2. exec(" ...

  2. scala调用外部命令

     scala调用外部命令 1.  导入sys.process包 2. 调用方式:" 外部命令 " !     双引号内+外部命令+感叹号 例:     scala调用外部命令工作原 ...

  3. PHP调用外部命令

    ------------------------------------------------------------------ 一.PHP调用外部命令总结                     ...

  4. 如何在Python脚本中调用外部命令(就像在linux shell或Windows命令提示符下输入一样)

    如何在Python脚本中调用外部命令(就像在linux shell或Windows命令提示符下输入一样) python标准库中的subprocess可以解决这个问题. from subprocess ...

  5. Perl调用外部命令(其他脚本、系统命令)的方法和区别

    1. `command`; 使用反引号调用外部命令能够捕获其标准输出,并按行返回且每行结束处附带一个回车.反引号中的变量在编译时会被内插为其值.   2. open LIST "ls -l| ...

  6. JDK1.5新特性,基础类库篇,调用外部命令类(ProcessBuilder)用法

    一. 背景 ProcessBuilder类是用来创建操作系统进程的.与Runtime.exec相比,它提供了更加方便的方法以创建子进程. 每个ProcessBuilder实例管理着一个进程属性的集合. ...

  7. PHP中调用外部命令的方法

    在PHP中调用外部命令,可以用如下三种方法来实现: 方法一:用PHP提供的专门函数(四个): PHP提供4个专门的执行外部命令的函数:exec(), system(), passthru(), she ...

  8. Python 调用外部命令

    python 可以使用 os 模块来调用外部的 Linux Shell 命令,常用的方法如下: os.system():结果输出在终端上,捕获不到os.popen() : 结果返回一个对象,即标准输出 ...

  9. linux sh 脚本调用外部命令

    参考:http://blog.csdn.net/lhb_blog/article/details/22083649 ------------------------------------------ ...

随机推荐

  1. Android性能优化:布局优化 详细解析(含<include>、<ViewStub>、<merge>讲解 )

    1. 影响的性能 布局性能的好坏 主要影响 :Android应用中的页面显示速度 2. 如何影响性能 布局影响Android性能的实质:页面的测量 & 绘制时间 1个页面通过递归 完成测量 & ...

  2. BZOJ5315 [JSOI2018]防御网络 【仙人掌 + dp】

    题目链接 BZOJ5315 题解 题目好吓人= =点仙人掌 + 斯坦纳树 我们只需求出对于所有选点的方案的斯坦纳树边长总和 \(n\)那么大当然不能状压,但是考虑一下如果这是一棵树,一个方案的贡献就是 ...

  3. CF765F Souvenirs 解题报告

    CF765F Souvenirs 题意翻译 给出\(n(2 \le n \le 10^5 )\) ,一个长为\(n\)的序列\(a(0 \le a_i \le 10^9 )\). 给出\(m(1\le ...

  4. [POI2008]MAF-Mafia

    Description 有n个人,每个人手里有一把手枪.一开始所有人都选定一个人瞄准(有可能瞄准自己).然后他们按某个顺序开枪,且任意时刻只有一个人开枪.因此,对于不同的开枪顺序,最后死的人也不同. ...

  5. codeforces 217E 【Alien DNA】

    倒序考虑每一个操作,对于一个操作$[l, r]$,他产生的影响区间将是$[r+1,r + r + l - 1]$,如果$r+l-1>K$的话,$K$之后的区间我们是不关心的. 暴力扫描这个区间 ...

  6. Linux基础--------监控系统、进程管理、软件包管理-------free、dd、kill、 rpm、yum、源码安装python

    作业一:1) 开启Linux系统前添加一块大小为15G的SCSI硬盘 2) 开启系统,右击桌面,打开终端 3) 为新加的硬盘分区,一个主分区大小为5G,剩余空间给扩展分区,在扩展分区上划分1个逻辑分区 ...

  7. Cyrus SASL介绍(翻译)

    http://blog.sina.com.cn/s/blog_7695e9f40100pnpa.html Cyrus SASL介绍 1. 综述 这篇文档讲述的是系统管理员配置SASL的方法,其中详细的 ...

  8. uva 557 Burger

    https://vjudge.net/problem/UVA-557 题意: n个人,n/2个牛肉煲,n/2个鸡肉堡 每次抛硬币,根据正反决定每个人吃什么汉堡 如果某一个汉堡被选完了,就不抛了 问最后 ...

  9. 优美的代码:do...while(0)

    1.背景 最近再看一个开源代码的时候,看到很多宏经常这么写的: #define XXX do{\ ...\ }) 一眼看到的时候就知道这一份代码执行一次,那么do...while还有什么意义呢?在查阅 ...

  10. Unsupervised learning, attention, and other mysteries

    Unsupervised learning, attention, and other mysteries Get notified when our free report “Future of M ...