cmd执行sql文件路径 oracle_oracle执行cmd的实现方法

本文介绍了在Oracle数据库中执行CMD命令的几种方法,包括使用`HOST`命令、创建库和包以及编写Java源码的方式。在Windows环境下,通过这些方法可以在SQL*Plus中调用系统命令,如`DIR`和`IPCONFIG`。文章还提到了在执行过程中遇到的错误和解决办法,以及权限设置的重要性。
摘要由CSDN通过智能技术生成

oracle执行cmd的实现方法

更新时间:2009年04月20日 14:51:39   作者:

装了一个oracle db11g,于是想试一下网上流传的在sqlplus中执行cmd的一些命令,也不知怎么的,没一个好用的,可能是网上转来转去的转错了.

不过有一个简单的执行cmd命令方法:

SQL> host net user

User accounts for \\PC-ATQHJ4UG1SDA

----------------------------------------------------------------------------

__vmware_user__ admin Administrator

ASPNET Guest IUSR_PC-ATQHJ4UG1SDA

IWAM_PC-ATQHJ4UG1SDA SUPPORT_388945a0

The command completed successfully.

unix或linux下用

! command

======================补充======================

网上的另两种方法:

1是利用msvcrt.dll

写一个c:\orac.sql

内容:

Rem

Rem oracmd.sql

Rem

Rem Run system commands via Oracle database servers

Rem

Rem Bugs to david@ngssoftware.com

Rem

CREATE OR REPLACE LIBRARY exec_shell AS

'C:\windows\system32\msvcrt.dll';

/

show errors

CREATE OR REPLACE PACKAGE oracmd IS

PROCEDURE exec (cmdstring IN CHAR);

end oracmd;

/

show errors

CREATE OR REPLACE PACKAGE BODY oracmd IS

PROCEDURE exec(cmdstring IN CHAR)

IS EXTERNAL

NAME "system" LIBRARY exec_shell

LANGUAGE C;

end oracmd;

/

show errors

然后C:\>sqlplus /nolog

SQL*Plus: Release 8.1.7.0.0 - Production on Thu Jun 7 14:25:38 2001

(c) Copyright 2000 Oracle Corporation. All rights reserved.

SQL> connect system/manager@orcl (分别是用户名密码和sid)

Connected.

SQL> @c:\orac.sql

Library created.

No errors.

Package created.

No errors.

Package body created.

No errors.

SQL>

SQL> exec oracmd.exec ('dir > c:\oracle.txt');

结果在我本机出现

第 1 行出现错误:

ORA-28595: Extproc 代理: DLL 路径无效

ORA-06512: 在 "SYSTEM.ORACMD", line 2

ORA-06512: 在 line 1

没有成功。

第二种方法

c:\1.sql

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;

}

}

}

c:\2.sql

create or replace

function RUN_CMz(p_cmd in varchar2) return number

as

language java

name 'util.RunThis(java.lang.String) return integer';

c:\3.sql

create or replace procedure RC(p_cmd in varChar)

as

x number;

begin

x := RUN_CMz(p_cmd);

end;

登陆上去后依旧是依次执行

SQL> @c:\1.sql

/

@c:\2.sql

/

@c:\3.sql

/

variable x number;

set serveroutput on;

exec dbms_java.set_output(100000);

grant javasyspriv to system;

grant javauserpriv to system;(网上的方法没有这一行,我无法成功,加上去可以)

exec :x:=run_cmz('ipconfig'); 成功运行了命令

测试环境win2003+oracle11g

相关文章

1a1b05c64693fbf380aa1344a7812747.png

oracle数据库维护中,备份或恢复是重中之重的问题,本文就讲一下oracle联机数据库备份的方法2013-11-11

4f55910a645b073bc4fc65dc10dc14bd.png

这篇文章主要介绍了Oracle用户密码设为不过期的两种方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下2016-12-12

0ea3c7666119d5615e582f823fb3fad6.png

这篇文章主要介绍了Oracle中简单查询、限定查询、数据排序SQL语句范例和详细注解,对查询语法一并做了介绍,需要的朋友可以参考下2014-07-07

4f96a78db829b1556ff16de21e013c7a.png

这篇文章主要介绍了Windows系统下Oracle客户端版本及位数查看方法,感兴趣的小伙伴们可以参考一下2016-08-08

8cc1031babc6aff2319f1c6af8544aa0.png

这篇文章主要介绍了Oracle数据库中表空间的基本管理方法小结,包括创建表空间和获取表空间大小等的操作命令,需要的朋友可以参考下2015-12-12

0c932a99bb7b6f23c937db507070cc7b.png

本篇文章主要介绍了Oracle之SQL语句性能优化,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2016-11-11

cca732bf65a93ed2ec0ac80c638460fe.png

安装Oracle加载数据库错误areasQueries的解决...2007-03-03

2d9f31f2af7b675a3d153d2b7f1035a7.png

这篇文章主要介绍了Oracle使用触发器和mysql中使用触发器的案例比较,本文通过示例讲解,给大家介绍的非常详细,需要的朋友参考下2016-12-12

b452cee8ec5cd9e58ab98eba17281e59.png

Oracle启动例程:STARTUP参数说明(2008-07-28 20:51:20)标签:startup shutdown 事例 it 分类:Oracle数据管理2009-07-07

f4838ec7e2d4da28e0b57d4e852dadd4.png

这篇文章主要为大家详细介绍了Oracle11.2.0.1如何升级到11.2.0.3的过程,Oracle同版本升级的方法,感兴趣的小伙伴们可以参考一下2016-07-07

最新评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值