Caros, uma dica interessante: Como criar uma Java Stored Procedure em Oracle que acessa o Unix local.
Para da grant (com SYS ou DBA):
[code]begin
dbms_java.grant_permission
(‘ICD’,
‘java.io.FilePermission’,
‘/usr/bin/ps’,
‘execute’);
    dbms_java.grant_permission
    ('ICD',
    'java.lang.RuntimePermission',
    '*',
    'writeFileDescriptor' );
end;
/[/code]
Então criar com o usuário owner que vc vai executar.
[code]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[0]);
    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;
 }
 }
}
/[/code]
[code]create or replace
function RUN_CMD( p_cmd  in varchar2) return number
as
language java
name ‘Util.RunThis(java.lang.String[]) return integer’;
/
create or replace procedure RC(p_cmd in varchar2)
as
x number;
begin
x := run_cmd(p_cmd);
end;
/[/code]
E para executar:
set serveroutput on size 1000000
exec dbms_java.set_output(1000000)
exec rc('/usr/bin/pwd');
Mas infos: http://asktom.oracle.com/pls/ask/f?p=4950:8:::::F4950_P8_DISPLAYID:952229840241