Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Может ли Oracle запустить EXE? 
:(
    Опции темы
Atomic63
Дата 16.2.2008, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 23.3.2007

Репутация: нет
Всего: нет



Добрый день уважаемые профессионалы, знаю что ОРАКЛ очень умный, подскажите пожалуйста может ли он запускать EXE файлы внешних программ??
PM MAIL   Вверх
Atomic63
Дата 16.2.2008, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 23.3.2007

Репутация: нет
Всего: нет



Вычитал следующую процедурку у вас на сайте  но к сожалению она не компилируется пишет JAVA SOURCE SERVER_EXEC compiled with warnings, status INVALID
Код

create or replace and compile java source named server_exec as
public class Exec
{
  public static int exec(String cmd) throws IOException, InterruptedException
  {
    Process proc = Runtime.getRuntime().exec(cmd);
    new Streamer(proc.getInputStream()).start();
    new Streamer(proc.getErrorStream()).start();
    return proc.waitFor();
  }

  private static class Streamer extends Thread
  {
    private InputStream in;

    public Streamer(InputStream in)
    {
      this.in = in;
    }

    public void run()
    {
      byte[] buffer = new byte[1024];
      try
      {
        while(in.read(buffer) != -1)
        {}
      }
      catch(IOException e)
      {}
    }
  }
}
/

PM MAIL   Вверх
LSD
Дата 16.2.2008, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 18
Всего: 538



Ты пропустил import-ы:
Код

create or replace and compile java source named server_exec as

import java.io.IOException;
import java.io.InputStream;

public class Exec
{
  public static int exec(String cmd) throws IOException, InterruptedException
  {
    Process proc = Runtime.getRuntime().exec(cmd);
    new Streamer(proc.getInputStream()).start();
    new Streamer(proc.getErrorStream()).start();
    return proc.waitFor();
  }

  private static class Streamer extends Thread
  {
    private InputStream in;

    public Streamer(InputStream in)
    {
      this.in = in;
    }

    public void run()
    {
      byte[] buffer = new byte[1024];
      try
      {
        while(in.read(buffer) != -1)
        {
        }
      }
      catch(IOException e)
      {
      }
    }
  }
}
/


P.S. Дай ссылку на топик где ты нашел этот код.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Atomic63
Дата 16.2.2008, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 23.3.2007

Репутация: нет
Всего: нет



Спасибо за подсказку вот ссылка 
http://forum.vingrad.ru/forum/topic-69617/hl/exe/index.html

Добавлено через 2 минуты и 6 секунд
LSD подскажи пожалуйста пример этой функции, как нужно указывать путь к файлу?
PM MAIL   Вверх
LSD
Дата 16.2.2008, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 18
Всего: 538



В простейшем случае просто передаешь полный путь к исполняемому файлу и параметры. Можно указать просто имя исполняемого файла, если он прописан в path.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Atomic63
Дата 16.2.2008, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 23.3.2007

Репутация: нет
Всего: нет



Пишу так  exec (sqlmon);
ничего не выходит, приведи пожалуйста какой нибудь пример
PM MAIL   Вверх
LSD
Дата 16.2.2008, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 18
Всего: 538



1. Ты сделал:
Код

create or replace function EXEC(command varchar2) return number as
language java name 'Exec.exec(java.lang.String) return int';

?

2. Если ты запускаешь этот код под Windows то надо писать
Код

select exec('sqlmon.exe') from dual

при условии, что %ORACLE_HOME%\bin прописан в PATH, иначе надо указывать полный путь.

Добавлено через 2 минуты и 18 секунд
И начни уже писать, что именно не выходит - ошибку выдает или что, а то все штатные телепаты в отпуске.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Atomic63
Дата 16.2.2008, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 23.3.2007

Репутация: нет
Всего: нет



Спасибо, но Oracle почему то подвисает, и ничего не запускает
PM MAIL   Вверх
LSD
Дата 16.2.2008, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 18
Всего: 538



1. Как ты определил, что он ничего не запускает?

2. Скорее всего он запускает sqlmon просто тот ждет ввода пользовательских команд. А посколько никто ничего не вводит, то ничего и не происходит.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Gudinya
Дата 18.2.2008, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 2.2.2008

Репутация: 5
Всего: 8



Возможно я не правильно понял вопрос, но если нужно просто запустить какое-нибудь приложение можно сделать так
Код

host calc

выполняешь это конечно в SQL Plus
PM MAIL ICQ   Вверх
Nuzur
Дата 18.2.2008, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 4.7.2004

Репутация: нет
Всего: 5



LSD, а как потом drop сделать? Для Функции которая создана в 3м посте.


--------------------
Never again...
PM MAIL   Вверх
LSD
Дата 18.2.2008, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 18
Всего: 538



Цитата(Gudinya @  18.2.2008,  12:01 Найти цитируемый пост)
Возможно я не правильно понял вопрос, но если нужно просто запустить какое-нибудь приложение можно сделать так

1. Так можно запустить приложение только на машине пользователя, а не на сервере.
2. Таким способом нельзя запустить приложение из PL/SQL.


Цитата(Nuzur @  18.2.2008,  12:05 Найти цитируемый пост)
а как потом drop сделать? Для Функции которая создана в 3м посте.

Код

drop function EXEC;
drop java source server_exec;



--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Atomic63
Дата 19.2.2008, 07:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 23.3.2007

Репутация: нет
Всего: нет



А можно поточнее как запустить команду host, из Oracle нальзя?
PM MAIL   Вверх
Atomic63
Дата 19.2.2008, 07:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 23.3.2007

Репутация: нет
Всего: нет



Можно ли переделать функцию exec таким образом, что бы приложение запускалось на локальном компьютере???
PM MAIL   Вверх
batigoal
Дата 19.2.2008, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 2
Всего: 151



Цитата(Atomic63 @  19.2.2008,  08:49 Найти цитируемый пост)
Можно ли переделать функцию exec таким образом, что бы приложение запускалось на локальном компьютере??? 

Может, тогда проще вынести её запуск за пределы PL/SQL?

Это сообщение отредактировал(а) batigoal - 19.2.2008, 10:29


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Oracle"
Zloxa
LSD

Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:

  • при создании темы давайте ей осмысленное название, описывающее суть проблемы
  • указывайте используемую версию базы, способ соединения и язык программирования
  • при ошибках обязательно приводите код ошибки и сообщение сервера
  • приводите код в котором возникла ошибка, по возможности дайте тестовый пример демонстрирующий ошибку
  • при вставке кода используйте соответсвующие теги: [code=sql] [/code] для подсветки SQL и PL/SQL кода, [code=java] [/code] - для Java, и т.д.

  • документация по Oracle: 9i, 10g, 11g
  • книги по Oracle можно поискать здесь
  • действия модераторов можно обсудить здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Oracle | Следующая тема »


 




[ Время генерации скрипта: 0.0895 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.