| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Oracle > Запуск внешней программы из SQL-скрипта |
| Автор: stron 12.10.2006, 10:35 |
| Собственно, как это сделать? Или хотя бы в какую сторону копать? |
| Автор: LSD 12.10.2006, 10:40 |
| http://download-east.oracle.com/docs/cd/B19306_01/server.102/b14357/ch12026.htm#sthref2314 |
| Автор: stron 12.10.2006, 13:24 |
| Чего-то я не понял как он работает Не знает он команды Host, а как её включить я не понял |
| Автор: LSD 12.10.2006, 13:38 |
| Дело в том, что host это не команда SQL, а команда SQL*Plus. Т.е. когда ты выполняешь из SQL*Plus скрипт, он парсит его и когда видит свои команды, то он их выполняет. Естественно host выполняется на том же компьютере что и сам SQL*Plus и от его имени. Другие SQL клиенты могут этого и не делать. В Oracle нет стандартного способа выполнить команду ОС. Если надо выполнять команду на сервере, то надо писать хранимую процедуру на Java. |
| Автор: stron 12.10.2006, 13:54 |
| Ok, тогда может подскажешь, как лучше реализовать такую задачу: Мне раз в неделю надо заливать данные из файла в таблицу базы( 7-8 млн. записей ), далее, на основе этой таблицы производить расчёты и строить другие таблицы. Записей достаточно много, поэтому хотелось бы перед каждой заливкой обнулять Sequence( возможно, производить ещё какие-нибудь действия ). Мне видится такой алгоритм: Создать в Oracle Job, который бы вызывал SP выполняющую: - подготовительные действия - вызов SQL Loader'a - вызов процедуры, производящей дальнейщие манипуляции |
| Автор: Paradox 12.10.2006, 14:29 |
| реализуйте это не через job а через shell-скрипт, который сделает вам все эти вещи ну или через виндовский шедулер и батник Добавлено @ 14:31 или вместо лоадера используйте external table |
| Автор: stron 12.10.2006, 14:50 |
| Первое решение не нравится - хочу всё оставить в Оракле. Пока буду смотреть в сторону 2-ого |
| Автор: 3x3 12.10.2006, 15:49 | ||
А вот это зря. Случись что, админ может и не увидеть какое приложение впало в проблемы. В поддержке намного легче когда админ сразу видит, что процесс load_data_weekly.sh начинает процессор жрать, кушает слишком много памяти или, наоборот, висит ничего не делая, нежели этот процесс ему будет явлен как один из многочисленных oracle. |
| Автор: Paradox 13.10.2006, 08:08 |
| на самом деле действительно удобнее иметь все в БД, а не зоопарком припарок вокруг нее а на джобы можно и сторожа поставить, чтобы ставили всех на уши, если джоб работает либо слишком долго, либо наоборот не поднялся в определенное время. |
| Автор: brabus 13.10.2006, 08:59 |
| если правильно понял - требуется запустить внешнеее приложение из оракла? - возможно наиболее правильный вариант решения с использованием java процы |
| Автор: 3x3 13.10.2006, 10:19 | ||
Чем удобнее? Необходимостью ставить каких-то "сторожей" на джобы? |
| Автор: Paradox 13.10.2006, 10:34 |
| удобнее в администрировании и переносах БД на другое железо отследить работу джоба труда не составляет труда, а вот если таких скриптов становится много то жизнь админа сладкой не назовешь, хотя ее и так такой не бывает |
| Автор: stron 13.10.2006, 11:13 |
| Всё-таки я придерживаюсь такого мнения, если функционал можно интегрировать в одном месте, то надо так и делать. |
| Автор: LSD 13.10.2006, 11:52 | ||||
Можно управлять job-ом средствами Oracle, и использовать Resource Manager. Выполнить команду ОС можно так:
Только надо будет еще дать все необходиые разрешения. |
| Автор: 3x3 13.10.2006, 15:02 | ||||||||
Напротив, неудобнее.
Как определить сколько CPU кушает джоб в данный момент и сколько для него распределено памяти?
Жизнь админа становится несладкой, когда он не в состоянии контролировать свою поляну. Вот вы какого админа имеете в виду? Админа ОС или админа БД? Добавлено @ 15:07
Что бы выполнять команды ОС есть отличное от Oracle средство. Это средство - собственно ОС и есть. Десятилетиями ОС совершенствуются с целью сделать выполнение ими команд ОС как можно более надёжным, безопасным и контролируемым. |
| Автор: LSD 13.10.2006, 16:15 | ||
Очень смешно, но совершенно не убедительно. |
| Автор: 3x3 13.10.2006, 17:53 | ||||
То, что аргументы вас не убеждают, я знаю. Так что вы своей репликой меня не удивили. Да и есть ли смысл пытаться кого-то убеждать в том, что расшибаться головой об стенку и писать всякие извращения с единственной целью заставить базу данных делать то, для чего она не предназначена? Моё дело - лишь обратить внимание вашей потенциальной жертвы на этот ньюанс, предостеречь человека, а дальше - это уж его дело, как ему проектировать систему |
| Автор: Paradox 15.10.2006, 13:08 |
ага и что будет при этом с кучей скриптов ОС, созданных вокруг БД |