1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > java 执行oracle命令_利用oracle存储过程执行操作系统命令

java 执行oracle命令_利用oracle存储过程执行操作系统命令

时间:2020-07-23 12:34:17

相关推荐

java 执行oracle命令_利用oracle存储过程执行操作系统命令

以下方法在WINNT,LINUX下的oracle9i上测试通过,java过程调用系统命令

首先给使用java存储过程的用户授予一定的权限

<>表示所有文件,也可以单独指定文件。

r w e d表示四种操作

Code:

Dbms_Java.Grant_Permission('HR',

'java.io.FilePermission', '<>',

'read ,write, execute, delete');

Dbms_Java.Grant_Permission('HR',

'java.io.FilePermission', 'd:aa.bat',

'read ,write, execute, delete');

dbms_java.grant_permission

('HR',

'java.lang.RuntimePermission',

'*',

'writeFileDescriptor' );

end;

/

PL/SQL procedure successfully completed.

See

/j2se/1.3/doc ... timePermission.html

/j2se/1.3/doc ... rityPermission.html

/j2se/1.3/docs/api/java/io/FilePermission.html

and

http://download-/ ... 53/perf.htm#1001971

From the “Java Developer’s Guide”, Part No. A81353-01, Chapter 5:

Table 5?1 Permission Types

n java.util.PropertyPermission

n java.io.SerializablePermission

n java.io.FilePermission

n Permission

n .SocketPermission

n java.lang.RuntimePermission

n java.lang.reflect.ReflectPermission

n java.security.SecurityPermission

n oracle.aurora.rdbms.security.PolicyTablePermission

n oracle.aurora.security.JServerPermission

相关的java类如下

SQL> connect hr/hr@ts

已连接。

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();

intrc = -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;

}

}

}

/

Java created.

建立函数

create or replace

function RUN_CMD(p_cmd in varchar2) return number

as

language java

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

/

Function created.

建立一过程调用函数

create or replace procedure RC(p_cmd in varchar2)

as

x number;

begin

x := run_cmd(p_cmd);

end;

/

Procedure created.

SQL> variable x number;

SQL>set serveroutput on

SQL> exec dbms_java.set_output(100000);

PL/SQL procedure successfully completed.

可以执行相应的命令和bat文件

SQL>exec :x := RUN_CMD('ipconfig');

Windows 2000 IP Configuration

Ethernet adapter 本地连接

:

Connection-specific DNS Suffix. :

IP Address. . . . . . . . . . . . : 172.18.25.102

Subnet Mask . . . . . . .

. . . . : 255.255.255.0

Default Gateway . . . . . . . . . : 172.18.25.1

PL/SQL 过程已成功完成。

也可以执行服务器上的bat文件

SQL> exec :x := RUN_CMD('c:aa.bat');

c:oracleora92DATABASE>cmd /c

c:oracleora92DATABASE>dir

Volume in drive C is 本地磁盘

Volume Serial Number is 5CE1-2622

Directory of c:oracleora92DATABASE

-05-1515:47 .

-05-1515:47 ..

2002-12-2420:13 archive

1998-09-0918:31 31,744 oradba.exe

-05-0811:48568 OraDim.Log

-03-1711:531,536 PWDweblish.ora

-05-1515:471,871,872 SNCFWEBLISH.ORA

-12-2913:242,560 SPFILEWEBLISH.ORA

-05-0811:48 12,852 sqlnet.log

6 File(s)1,921,132 bytes

3 Dir(s) 7,141,621,760 bytes free

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

c:aa.bat如下:

cmd /c

dir[@more@]

来自 “ ITPUB博客 ” ,链接:/18921899/viewspace-1017123/,如需转载,请注明出处,否则将追究法律责任。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。