oracle执行cmd的实现方法

2016-02-19 09:29 54 1 收藏

下面是个oracle执行cmd的实现方法教程,撑握了其技术要点,学起来就简单多了。赶紧跟着图老师小编一起来看看吧!

【 tulaoshi.com - 编程语言 】

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

来源:http://www.tulaoshi.com/n/20160219/1590990.html

延伸阅读
--在users表的userid列上实现自动增长列 --需要同时使用序列和行级触发器 create sequence seq_userid;   --创建序列 create or replace trigger users_bir  --创建行级触发器 before insert on users for each row declare   tempnum number; begin   select seq_userid.nextval into tempnum from dual;   :...
1。Oracle中: select org_id from organizations start with org_id= :org_id connect by prior org_id=supervision_org_id order by supervision_org_id 2。Sql Functiong:  FunctionNo SubFunctionNo SubFunctionType     01.   systemadmin Privilege 0     01.   systemadmin subsysadmin 1(表示樹...
标签: Web开发
Author:月影  Form:http://bbs.51js.com/thread-66361-1-1.html input type="button" value="继续" onclick='st();'/ script /*基本原理*/ var st = (function(){   alert(1);   alert(2);   return function()   {     ale...
问题:假设有一个存储过程p_test,如何才能每20分钟执行一次? 解答: 1、把init.ora中如下两个参数打开 JOB_QUEUE_INTERVAL=60 JOB_QUEUE_PROCESSES=4 job_queue_keep_connections=true 然后重启一个库,如果原来已经打开了则不用这步了 2、示例,以下由sqlplus 来执行,具体参照一下相关的文档 VARIABLE jobno numb...
如何简单实现可执行文件的自我删除 作者:zyq654321 可执行文件即 EXE 文件在运行过程中,由系统管理其打开的句柄。此时对该文件的一些操作是被系统禁止的,比如删除操作。然而在某些场合,可能须要程序有自我删除的功能,也就是程序运行结束后删除自身。基于这个想法,可以有一种很简单的方法来实现这个基本功能...

经验教程

328

收藏

10
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部