Fala pessoal, como vão ?
Estou com um problema, que talvez seja simples de resolver.
Preciso executar uma rotina .bat (armazenado em um diretorio de rede) através de uma procedure. Isso porque tenho um processo no banco de dados e logo após tenho que executar esse .bat ...
alguém sabe como chamar um bat via uma procedure ?
Abraços.
Execução de .bat via PL/SQL
-
- Moderador
- Mensagens: 2016
- Registrado em: Qua, 12 Jan 2005 3:25 pm
- Localização: Araraquara - SP
Abraço,
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Brother,
Creio que dê pra fazer, criando uma classe Java dentro do BD Oracle e, nesta classe fazendo a chamada.
Vou ver se acho algum exemplo e posto aqui...
Abraço,
Creio que dê pra fazer, criando uma classe Java dentro do BD Oracle e, nesta classe fazendo a chamada.
Vou ver se acho algum exemplo e posto aqui...
Abraço,
- gpereira
- Rank: Programador Sênior
- Mensagens: 61
- Registrado em: Sáb, 10 Dez 2011 10:56 am
Gustavo Antonio Pereira
OCA Oracle Database 10g Administrator Certified Associate
OCA Oracle Database 10g Administrator Certified Associate
Legal, Se você puder fico agradecidissimo.
Estava partindo pelo lado dos "Jobs externos", disponivel na versão 11 g .
Criar um job externo e chama-lo na procedure. Isso e possivel ? Lembrando que o servidor do Oracle é Linux e a maquina que esta o bath é Windows.
Estava partindo pelo lado dos "Jobs externos", disponivel na versão 11 g .
Criar um job externo e chama-lo na procedure. Isso e possivel ? Lembrando que o servidor do Oracle é Linux e a maquina que esta o bath é Windows.
-
- Rank: Programador Júnior
- Mensagens: 29
- Registrado em: Sáb, 28 Ago 2010 10:45 am
- Localização: Torres-RS
Emerson E. Rosa
da sim, faço isso em varias procedures, é bem simples, cria o arquivo .bat da sequinte maneira:
e coloca a procedure dentro do arquivo script.sql dentro do mesmo diretorio. Prontinho, so não esquece de terminar a procedure com / para funcionar no sqlplus.
Qualquer duvida manda aí, uso bastante arquivos .bat para executar procedures.
sqlplus useroracle/senhaoracle@instanciaoracle @script.sql
Qualquer duvida manda aí, uso bastante arquivos .bat para executar procedures.
- gpereira
- Rank: Programador Sênior
- Mensagens: 61
- Registrado em: Sáb, 10 Dez 2011 10:56 am
Gustavo Antonio Pereira
OCA Oracle Database 10g Administrator Certified Associate
OCA Oracle Database 10g Administrator Certified Associate
Ola Emerson,
Acho que não é bem isso ! é meio que ao contrario do enviado.
Precido de uma procedure que chame bat em outro servidor. Ou seja, a automatização de dentro de minha sessão oracle executar um bat (que chama uma aplicação) em outro servidor.
Da forma que você enviou, esta chamando um arquivo .sql com comandos SQL para executação dentro da sua sessao no Oracle. Isso realmente é muito usado.
Obrigado pela ajuda.
Acho que não é bem isso ! é meio que ao contrario do enviado.
Precido de uma procedure que chame bat em outro servidor. Ou seja, a automatização de dentro de minha sessão oracle executar um bat (que chama uma aplicação) em outro servidor.
Da forma que você enviou, esta chamando um arquivo .sql com comandos SQL para executação dentro da sua sessao no Oracle. Isso realmente é muito usado.
Obrigado pela ajuda.
-
- Moderador
- Mensagens: 2016
- Registrado em: Qua, 12 Jan 2005 3:25 pm
- Localização: Araraquara - SP
Abraço,
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Brothers,
Fiz aqui um exemplo de chamada de classe java, de dentro do banco de dados Oracle.
É um exemplo bem simples, apenas da chamada do Java, sem executar o .bat ainda.
Essa parte do .bat precisa ser implementada.
Dei uma lida na internet e, pra se chamar um arquivo do SO, é utilizado o comando:
Passando-se o diretório e o arquivo.
Acho que com isso , consegue montar o que precisa.
Qualquer coisa, manda pra gente.
Abraço,
Fiz aqui um exemplo de chamada de classe java, de dentro do banco de dados Oracle.
-- 1) Criação da Java Source no BD
-- Java Source no BD
create or replace and compile java source named gerenciabat as
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.nio.channels.FileChannel;
import java.io.FileNotFoundException;
import java.io.IOException;
-- Classe Java
public class gerenciaBat {
/**
* Executa um .bat do SO.
* @nomeArquivo - passar diretório e arquivo .BAT
* @return String
* @since 1.1
*/
public static String executaArquivo(String nomeArquivo){
String retorno = "";
String ponto = "";
return "Arquivo: "+nomeArquivo;
}
};
-- 2) Criação da função que irá chamar a classe
CREATE OR REPLACE FUNCTION fun_gerencia_bat(pArquivo in varchar2)
RETURN VARCHAR2 IS
LANGUAGE JAVA
NAME 'gerenciaBat.executaArquivo(java.lang.String) return String';
-- 3) Execução
select fun_gerencia_bat('teste.bat') from dual;
Essa parte do .bat precisa ser implementada.
Dei uma lida na internet e, pra se chamar um arquivo do SO, é utilizado o comando:
Runtime.getRuntime().exec("..\bla\arquivo.bat")
Acho que com isso , consegue montar o que precisa.
Qualquer coisa, manda pra gente.
Abraço,
- stcoutinho
- Moderador
- Mensagens: 850
- Registrado em: Qua, 11 Mai 2011 5:15 pm
- Localização: são Paulo - SP
Olá gpereira,
Acho que por medida de segurança, o ORACLE não permite este tipo de operação (executar um arquivo em outro servidor que não seja o servidor de banco de dados).
Talvez você pudesse adotar uma destas alternativas.
A) No seu servidor WINDOWS você instala um banco de dados ORACLE (não poderia ser o XE, pois precisaria do JAVA instalado como componente). Ambas as bases (UNIX/WINDOWS) estariam ligadas por DBLINK. Assim, você executaria seu procedimento do UNIX e atualizaria alguma tabela de controle situada na base WINDOWS. Na base WINDOWS, haveria uma rotina que constantemente verificaria a execução da procedure remota. Quando detecta-se a execução da procedure, dispararia uma procedure armazenada Java na base ORACLE do Windows para executar este comando no SO do WINDOWS;
B) Em um forum OTN da Oracle me deparei com a idéia de um forista de desenvolver um programa SO do UNIX que se conectaria no WINDOWS via telnet e executaria o arquivo BAT. Esta solução talvez acarrete um risco de segurança, pois você precisaria manter no código o ip, usuário e senha de acesso. Independente disso, ao executar seu procedimento no banco, seria disparado um procedimento armazenado de banco em JAVA que executaria este programa Java no SO da máquina UNIX. Veja esta sugestão ao final da página deste forum de discussão: https://forums.oracle.com/forums/thread ... ID=2056768
Abraços e boa sorte,
Sergio Coutinho
Acho que por medida de segurança, o ORACLE não permite este tipo de operação (executar um arquivo em outro servidor que não seja o servidor de banco de dados).
Talvez você pudesse adotar uma destas alternativas.
A) No seu servidor WINDOWS você instala um banco de dados ORACLE (não poderia ser o XE, pois precisaria do JAVA instalado como componente). Ambas as bases (UNIX/WINDOWS) estariam ligadas por DBLINK. Assim, você executaria seu procedimento do UNIX e atualizaria alguma tabela de controle situada na base WINDOWS. Na base WINDOWS, haveria uma rotina que constantemente verificaria a execução da procedure remota. Quando detecta-se a execução da procedure, dispararia uma procedure armazenada Java na base ORACLE do Windows para executar este comando no SO do WINDOWS;
B) Em um forum OTN da Oracle me deparei com a idéia de um forista de desenvolver um programa SO do UNIX que se conectaria no WINDOWS via telnet e executaria o arquivo BAT. Esta solução talvez acarrete um risco de segurança, pois você precisaria manter no código o ip, usuário e senha de acesso. Independente disso, ao executar seu procedimento no banco, seria disparado um procedimento armazenado de banco em JAVA que executaria este programa Java no SO da máquina UNIX. Veja esta sugestão ao final da página deste forum de discussão: https://forums.oracle.com/forums/thread ... ID=2056768
Abraços e boa sorte,
Sergio Coutinho
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante