首页 电脑 电脑学堂 查看内容

oracle执行cmd

2009-4-4 10:30 519 0

摘要: 作者:lcx  来源:转载 装了一个oracle db11g,于是想试一下网上流传的在sqlplus中执行cmd的一些命令,也不知怎么的,没一个好用的,可能是网上转来转去的转错了...
关键词: nbsp SQL system oracmd exec REPLACE oracle bufSize PACKAGE 方法

作者:lcx  来源:转载 装了一个oracle db11g,于是想试一下网上流传的在sqlplus中执行cmd的一些命令,也不知怎么的,没一个好用的,可能是网上转来转去的转错了.不过有一个简单的执行cmd命令方法: SQL> host net user User accounts for \\PC-ATQHJ4UG1SDA ----------------------------------------------------------------------------__vmware_user__          admin                    AdministratorASPNET                   Guest                    IUSR_PC-ATQHJ4UG1SDAIWAM_PC-ATQHJ4UG1SDA     SUPPORT_388945a0The command completed successfully.   unix或linux下用 ! command ======================补充====================== 网上的另两种方法: 1是利用msvcrt.dll 写一个c:\orac.sql 内容: Rem Rem oracmd.sqlRem Rem Run system commands via Oracle database serversRemRem Bugs to [email protected] CREATE OR REPLACE LIBRARY exec_shell AS'C:\windows\system32\msvcrt.dll';/show errorsCREATE OR REPLACE PACKAGE oracmd ISPROCEDURE exec (cmdstring IN CHAR);end oracmd;/show errorsCREATE OR REPLACE PACKAGE BODY oracmd ISPROCEDURE exec(cmdstring IN CHAR)IS EXTERNALNAME "system" LIBRARY exec_shellLANGUAGE 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.sqlLibrary 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 2ORA-06512: 在 line 1 没有成功。 第二种方法 c:\1.sql create or replace and compilejava souRCe named "util"asimport 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 outwhile ((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 replacefunction RUN_CMz(p_cmd in varchar2) return numberaslanguage javaname 'util.RunThis(java.lang.String) return integer'; c:\3.sql create or replace procedure RC(p_cmd in varChar)asx 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
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部