网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.如何用保存数据库连接参数代码及.
.oracle startup时 ORA-00600错误.
.移植Oracle是这样做的.
.oracle函数之常见单行字符串函数.
.Oracle 分布式数据库远程数据访问.
.包含复制环境的数据库迁移.
.Oracle快速入门.
.oracle数据库性能监控的SQL的几种.
.不让redo log日志组处于高激活状.
.Oracle10g废弃log_archive_start.
.当数据积累到一定时间后执行会越.
.Oracle 恢复管理器 (RMAN) 的功能.
.建立一个内嵌的柱状表.
.详细讲解Oracle在Solaris下的性能.
.在Windows下管理Oracle9i服务.
.数据库视图的使用.
.详解 Oracle 10g 中 MERGE 功能的.
.使用数据字典.
.Oracle培训热点问题.
.[基础]9i新特性之一连接篇.

如何利用java过程执行操作系统命令

发表日期:2008-2-9



  以下方法在WINNT,Linux下的Oracle9i上测试通过
  
  首先给使用Java存储过程的用户授予一定的权限
  <>表示所有文件,也可以单独指定文件。
  r w e d表示四种操作
  
  
   Code:
  Dbms_Java.Grant_Permission('HR',
  'java.io.FilePermission', '<<ALL FILE>>',
  'read ,write, execute, delete');
  
  Dbms_Java.Grant_Permission('HR',
  'java.io.FilePermission', 'd:\aa.bat',
  'read ,write, execute, delete');
  
   dbms_java.grant_permission
    ('HR',
    'java.lang.RuntimePermission',
    '*',
    'writeFileDescriptor' );
   end;
   /
  PL/SQL procedure sUCcessfully completed.
  
  See
  
  http://java.sun.com/j2se/1.3/doc ... timePermission.Html
  
  http://java.sun.com/j2se/1.3/doc ... rityPermission.html
  
  http://java.sun.com/j2se/1.3/docs/api/java/io/FilePermission.html
  
  and
  
  http://download-east.oracle.com/ ... 53/perf.htm#1001971
  From the “Java Developer’s Guide”, Part No. A81353-01, Chapter 5:
  
  Table 5–1 Permission Types
  n java.util.PropertyPermission
  n java.io.SerializablePermission
  n java.io.FilePermission
  n java.net.NetPermission
  n java.net.SocketPermission
  n java.lang.RuntimePermission
  n java.lang.reflect.ReflectPermission
  n java.security.SecurityPermission
  n oracle.aurora.rdbms.security.PolicyTablePermission
  n oracle.aurora.security.JServerPermission
  
  相关的java类如下
  SQL> connect hr/hr@ts
  已连接。
  
  create or replace and compile
    java source named "Util"
    as
    import java.io.*;
   import java.lang.*;
    public class Util extends Object
    {
    public static int RunThis(String args)
    {
    Runtime rt = Runtime.getRuntime();
    int    rc = -1;
    try
    {
    Process p = rt.exec(args);
    int bufSize = 4096;
    BufferedInputStream bis =
     new BufferedInputStream(p.getInputStream(), bufSize);
     int len;
     byte buffer[] = new byte[bufSize];
     // Echo back what the program spit out
    while ((len = bis.read(buffer, 0, bufSize)) != -1)
       System.out.write(buffer, 0, len);
      rc = p.waitFor();
    }
     catch (Exception e)
     {
      e.printStackTrace();
      rc = -1;
     }
    finally
    {
      return rc;
     }
     }
    }
   /
  
  Java created.
  
  建立函数
  
  create or replace
  function RUN_CMD(p_cmd in varchar2) return number
    as
   language java
    name 'Util.RunThis(java.lang.String) return integer';
  /
  
  Function created.
  
  建立一过程调用函数
   create or replace procedure RC(p_cmd in varchar2)
   as
    x number;
   begin
    x := run_cmd(p_cmd);
   end;
   /
  
  Procedure created.
  
  SQL> variable x number;
  SQL> set serveroutput on
  SQL> exec dbms_java.set_output(100000);
  
  PL/SQL procedure successfully completed.
  
  可以执行相应的命令和bat文件
  SQL> exec :x := RUN_CMD('ipconfig');
  
  windows 2000 IP Configuration
  
  Ethernet adapter 本地连接
  :
  
      Connection-specific DNS Suffix . :
      IP Address. . . . . . . . . . . . : 172.18.25.102
      Subnet Mask . . . . . . .
  . . . . : 255.255.255.0
      Default Gateway . . . . . . . . . : 172.18.25.1
  
  PL/SQL 过程已成功完成。

  
  也可以执行服务器上的bat文件
  SQL>  exec :x := RUN_CMD('c:\aa.bat');
  c:\oracle\ora92\DATABASE>cmd /c
  c:\oracle\ora92\DATABASE>dir
  Volume in drive C is 本地磁盘
  Volume Serial Number is 5CE1-2622
  Directory of c:\oracle\ora92\DATABASE
  2004-05-15 15:47    <DIR>     .
  2004-05-15 15:47    <DIR>     ..
  2002-12-24 20:13    <DIR>     archive
  1998-09-09 18:31        31,744 oradba.exe
  2004-05-08 11:48         568 OraDim.Log
  2004-03-17 11:53        1,536 PWDweblish.ora
  2004-05-15 15:47      1,871,872 SNCFWEBLISH.ORA
  2003-12-29 13:24        2,560 SPFILEWEBLISH.ORA
  2004-05-08 11:48        12,852 sqlnet.log
  6 File(s)   1,921,132 bytes
  3 Dir(s)  7,141,621,760 bytes free
  
  -----------------
  c:\aa.bat如下:
  
  cmd /c
  dir
上一篇:移动数据库和J2ME工具构建应用程序 II 人气:573
下一篇:现流行数据库程序开发工具的比较分析 人气:1247
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐