援引:Doc ID 109095.1

首先,在数据库端创建调用Unix shell的java类,用Runtime.getRuntime().exec()实现

1.

CREATE OR REPLACE JAVA SOURCE NAMED "CaptureStream" as
import java.util.*;
import java.io.*;
class CaptureStream implements Runnable {
private final InputStream is;
private final String type;
private final OutputStream redirect;
private boolean  redirected = false;
CaptureStream(InputStream is, String type, OutputStream redirect)
{
this.is = is;
this.type = type + ">";
this.redirect = redirect;
}
CaptureStream(InputStream is, String type)
{
this(is, type, null);
}
CaptureStream(InputStream is)
{
this(is, " ", null);
}
public void run()
{
try {
PrintWriter pw = null;
if (redirect != null) {
pw = new PrintWriter(redirect);
redirected = true;
}
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line=null;
while ( (line = br.readLine()) != null) {
System.out.println(type + line);
if (redirected) {
pw.println(line);
}
}
if (redirected) {
pw.flush();
pw.close();
}
br.close();
isr.close();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
};
/

2.

CREATE OR REPLACE JAVA SOURCE NAMED "ExecOSCmd" as
import java.util.*;
import java.io.*;
public class ExecOSCmd {
public static void main (String args[])
{
int rc = 0;
if (args.length < 1) {
System.out.println("USAGE: java ExecOSCmd \'cmd\' ");
System.exit(1);
}
try {
String cmd = args[0];
FileOutputStream fos = null;
if (args.length == 2 ) {
fos = new FileOutputStream(args[1]);
}
Runtime rt = Runtime.getRuntime();
Process p = rt.exec(cmd);
CaptureStream err = new CaptureStream(p.getErrorStream(), "ERR");
Thread e = new Thread(err);
/* NOTE we do not join the error thread.  If there was no
Error it may never return.  We would wait forever for it to
return thus janging this process */
e.start();
CaptureStream out = new CaptureStream(p.getInputStream(),
"OUT", fos);
Thread o = new Thread(out);
o.start();
try {
rc = p.waitFor();
/* Handle exceptions for waitFor() */
} catch (InterruptedException intexc) {
System.out.println("Interrupted Exception on waitFor: " +
intexc.getMessage());
}
if (fos !=null) {
o.join();      // need to wait for the output to finish.
fos.flush();
fos.close();
}
System.out.println("ExitValue: " + rc);
} catch (Throwable t) {
System.out.println("ExitValue: " + rc);
t.printStackTrace();
}
}
};
/

3.定义调用2的存储过程

CREATE OR REPLACE PROCEDURE executecmd
AS
language java name 'ExecOSCmd.main(java.lang.String[])';

4.在数据库Command Window调用步骤3

首先,设置将输出项显示

SQL> set serveroutput on
SQL> call dbms_java.set_output(5000);

Method called

SQL> exec executecmd('ls -ls');

OUT>total 895254

Oracle Java Stored Procedure调用Unix shell相关推荐

  1. 无效的参数oracle,java.sql.SQLException: 调用中无效的参数

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:180) at oracle ...

  2. oracle 存储过程 stored procedure 查询一条记录或多条记录

    创建基本表 -- Create table create table USER_INFORMATION ( P_ID            NUMBER, USER_LOGIN_NAME NVARCH ...

  3. Linux/Unix shell 监控Oracle告警日志(monitor alter log file)

    使用shell脚本实现对Oracle数据库的监控与管理将大大简化DBA的工作负担,如常见的对实例的监控,监听的监控,告警日志的监控,以及数据库的备份,AWR report的自动邮件等.本文给出Linu ...

  4. linux shell spool,Linux/Unix shell 脚本中调用SQL,RMAN脚本

    Linux/Unix shell脚本中调用或执行SQL,RMAN 等为自动化作业以及多次反复执行提供了极大的便利,因此通过Linux/Unix shell来完成Oracle的相关工作,也是DBA必不可 ...

  5. oracle spool生成文件,用spool+unix shell生成文本文件

    比较熟悉使用ORACLE的人一般都会用spool命令来生成OS下的文本文件. 例如我们把scott.dept表生成文本文件的语句写成dept.sql,内容如下: set pages 50000; se ...

  6. java sharepoint 2010,安装SharePoint2010出现“Could not find stored procedure ‘sp_dboption’.”的解决方法...

    要使用sharepoint开发一个项目,下载sharepoint server 2010并安装,我的开发环境是win 7(x64),因此需要进行特定的设置才可以安装,可以参考 参考上述文章进行安装都很 ...

  7. Oracle存储过程创建及调用(转)

    在大型数据库系统中,有两个很重要作用的功能,那就是存储过程和触发器.在数据库系统中无论是存储过程还是触发器,都是通过SQL 语句和控制流程语句的集合来完成的.相对来说,数据库系统中的触发器也是一种存储 ...

  8. java 存储过程_Java 调用存储过程

    本文阐述了怎么使用DBMS存储过程.我阐述了使用存储过程的基本的和高级特性,比如返回ResultSet.本文假设你对DBMS和JDBC已经非常熟悉,也假设你能够毫无障碍地阅读其它语言写成的代码(即不是 ...

  9. java主程序怎样调用子程序_存过和函数以及在Java程序中的调用

    存储过程,函数都是数据库的对象. 创建和调用 存储在数据库中的子程序,是由plsql语言写的,完成特定功能的程序. 函数可以返回值,存过不能返回值.除此之外,一致. create procedure ...

最新文章

  1. 那些年,让我面试头大的几个排序算法,今天终于搞懂了!
  2. Struts2 标签配置详细
  3. java sessionstorage_sessionStorage的使用
  4. TaskTracker获取并执行map或reduce任务的过程(一)
  5. Spring Boot 动态注入的两种方式
  6. 黑客SQL服务器入侵实战演习
  7. Python中的join函数
  8. 杨潮观《偷桃捉住东方朔》
  9. python连续质数计算_GitHub - xxqfft/AlgorithmsByPython: 算法/数据结构/Python/剑指offer/机器学习/leetcode...
  10. Win10使用Xrdp脚本远程桌面连接Ubuntu主机
  11. vue-cli中的babel配置文件.babelrc详解
  12. 三星g9500Android9.0,三星G9550/9500刷机包 V9.0 国行港行通刷 极光设置功能微调 完美ROOT权限 稳定流畅省电...
  13. Python时钟代码——利用python turtle实现模拟时钟
  14. python妹子图软件下载_【简单爬虫】 爬取妹子图 自动下载 [改进]
  15. 佳能Canon imageCLASS MF4712 打印机驱动
  16. java编译的类包含美元符号 $
  17. 基于Python构建机器学习Web应用
  18. 复数——概念和代数运算
  19. 核高基向左,生产性服务向右,只是完整的左右手而已
  20. 石英晶体谐振器不良问题归纳

热门文章

  1. 网站管理助手安装多版本php
  2. 华为代工用海思处理器 新Nexus手机曝光
  3. 唐玄宗:谁想跟朕去打马球?在线等,挺急的
  4. 光谱分辨率单位_A1、光谱及基本单位
  5. 前端面试大全(序篇)
  6. 「太阁实验篇」SLA 联动静态路由实验
  7. Visual Studio中使用EF框架的过程
  8. 二、物流系统|2.1物流系统的概念
  9. linux平台开源oa系统
  10. 目前种类繁多的B2B2C系统,企业该如何正确选择?