За последние 24 часа нас посетили 22973 программиста и 1255 роботов. Сейчас ищут 794 программиста ...

Дамп базы

Тема в разделе "Oracle Database", создана пользователем Kitov, 6 окт 2008.

  1. Kitov

    Kitov Активный пользователь

    С нами с:
    6 окт 2008
    Сообщения:
    3
    Симпатии:
    0
    Всем привет.
    Столкнулся с такой задачей: необходимо сделать дамп таблицы через web-интерфейс для импорта на другой сервер Oracle.
    Для реализации хочу использовать стандартный файл для экспорта(exp.exe) с параметрами и стандартные функции php: exec, proc_open, e.t.c
    Есть примерно такой кусочек кода:
    <?php
    exec('C:\oracle\ora81\bin\exp.exe Schema/Password@Database file=dmp_file.dmp log=log_file.log tables=table1');
    ?>
    Значения Schema, Password, Database, Tables - подставлены для конкретной схемы.
    Проблема в том, что при запуске скрипта через IE 6.0 прогрессбар виснет на середине и все. Пробовал применять другие функции для запуска приложений - результат тот же.
    Сведующие люди, помогите советом, в чем может быть дело? Может дело в настройках apache-сервера или php? Может дело в синтаксисе? Может кто-то сталкивался с подобной задачей и имеет другой готовый вариант решения? Гуглил, поиском на форуме пользовался, офф-сайт php читал.
     
  2. neverlose

    neverlose Активный пользователь

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    Скорей всего не хватает памяти или времени на выполнение скрипта - это настройка php.ini

    Поставь вывод ошибок для полее подробного понимания проблемы

    А во-вторых, почему бы в даанном случае не обойтись без php и не делать всё через командную строку?
     
  3. Kitov

    Kitov Активный пользователь

    С нами с:
    6 окт 2008
    Сообщения:
    3
    Симпатии:
    0
    Увеличил memory_limit, спасибо, помогло, теперь браузер не виснет, но приложение все равно не запускается. Такое ощущение, будто ошибка синтаксиса и php просто не исполняет код:

    <?
    $expr="C:\oracle\ora81\bin\exp database1/database1@serv1 file=F:\dump_file.dmp log=F:\dump_log.log tables=temp_tab";
    exec($expr);
    ?>

    Еще раз опишу проблему: в таблице temp_tab есть записи, их надо выкинуть на флешку в дамп-файл для дальнейшего экспорта.

    Аналогичный код работает на моем тестовом сервере с апачем, когда запускаю через http://localhost/

    Когда запускаю удаленно на рабочем сервере, то код не отрабатывает. Но при этом, если создать на удаленном рабочем сервере *.bat файл с содержимым переменной $expr , все отрабатывает корректно.

    Мои подозрения:
    -не уверен в идентичности файлов php.ini
    -разные версии Oracle на тестовом и рабочем серверах

    Помогите пожалуйста, очень нужно. Как альтернативное решение, пробовал запускать удаленно на рабочем сервере через exec bat-файл, но не фурычит.

    P.S. все эти выкрутасы нужны, чтобы пользователь создавал дамп прозрачно через нажатие кнопки в веб-интерфейсе программы, а не лез в командную строку или запускал bat-файл.
     
  4. Kitov, м/б на сервере запрещено выполнение внешних программ из ПХП?
     
  5. Kitov

    Kitov Активный пользователь

    С нами с:
    6 окт 2008
    Сообщения:
    3
    Симпатии:
    0
    М/б, а как это проверить?
     
  6. Спросить администратора? ;)
    Включить вывод ошибок? ;)