Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
ВнизADO + Ora = пропихнуть в хранимку blob более 32 кбайт Найти похожие ветки
← →
QAZ (2012-08-17 13:27) [40]
> AV © (17.08.12 13:20) [38]
кая разница что это снаружи один файл когда внутри тот же милион, да и виртуализация не прибавляет скорости
← →
AV © (2012-08-17 13:41) [41]
> QAZ (17.08.12 13:27) [40]
ну как, тебе дали место, видится нормально, ваяй что хочешь. Миллион файлов, так миллион. Значит, ССЗБ.
Администрация выделила тебе ресурс, как места, так времени процессора, памяти, др.
А чтобы ты ничего не свалил, что бы переезды там всякие были быстрые/успешные, или если тебя ломанули - все восстановимо простым f5 в тотале (это я утрирую сейчас)
А хочешь быстро - покупай свой сервак, договоры заключай( или что там провайдеры еще делают)
← →
QAZ (2012-08-17 13:46) [42]
> или что там провайдеры еще делают
продают белый IP за стописят руб. месяц
> AV © (17.08.12 13:41) [41]
так не, тут народ говорит что дескать база данных из дохрена файлов это ужасное зло обреченное на скорую погибель
а интернет почемуто до сих пор жив, и всякие фейсбуки где база явно не из трех файлов состоит процветает
← →
Es (2012-08-17 13:46) [43]Sergey Masloff, а ты то ничего не расскажешь про хранимки в контексте ADO + Oracle или вы окончательно съехали на шарп и про дельфю забыли? )
← →
Sergey Masloff (2012-08-17 14:14) [44]
> Es (17.08.12 13:46) [43]
ADO никогда не использовали. Про ODAC и DOA могу рассказать много чего если понадобится кому ;-)
Ну еще про BDE вот там много чего было подводного но кого это сейчас волнует ;-)
← →
Es (2012-08-20 11:35) [45]Ну что, господа.
Не может же быть такого, чтобы мы не разобрались как вызывать хранимку с BLOB"ом большого размера. Тем более Oracle точно не против. Он почему-то против ADO...
← →
DVM © (2012-08-20 12:00) [46]
> Es (20.08.12 11:35) [45]
> Тем более Oracle точно не против.
А в документации везде сказано что в хранимую процедуру Oracle нельзя передать BLOB больше 32к
← →
Sergey Masloff (2012-08-20 12:11) [47]
> А в документации везде сказано что в хранимую процедуру
> Oracle нельзя передать BLOB больше 32к
Да ну на ;-) Это микрософтовский провайдер может быть ограничивает - говорят он поверх OCI7 лежит
← →
Sergey Masloff (2012-08-20 12:18) [48]
> Не может же быть такого, чтобы мы не разобрались как вызывать
> хранимку с BLOB"ом большого размера. Тем более Oracle точно
> не против. Он почему-то против ADO...
Есть такое мнение что ты не задаешь значение SPPrmsLOB. Поэтому провайдер не биндит его как BLOB а то через чего он его биндит в PL/SQL не может иметь длинну более 32К
Мне не на чем попробовать
← →
Sergey Masloff (2012-08-20 12:21) [49]стырено на просторах инета
with ADOCommand1 do try
CommandObject.Set_ActiveConnection(ADOConnection1.ConnectionObject);
Properties["SPPrmsLob"].Value := true;
.....
Parameters.ParamByName("bDATA").LoadFromStream(...,ftBlob);
Execute;
finally
ADOCommand1.Properties["SPPrmsLob"].Value := false;
end;
ОНО?
← →
DVM © (2012-08-20 12:22) [50]
> Sergey Masloff (20.08.12 12:11) [47]
> Это микрософтовский провайдер может быть ограничивает
Я с Oracle практически не работал, может быть, но просто полез в гугл и нашел множество таких замечаний в разных мануалах, например в JDBC:
http://docs.oracle.com/cd/B19306_01/java.102/b14355/oralob.htm
Passing BLOB and CLOB Locators
Given a standard JDBC prepared statement or callable statement, you can use standard setter methods to pass LOB locators. These methods are defined as follows:
public void setBlob(int index, Blob value);
public void setClob(int index, Clob value);
Note:
If you pass a BLOB to a PL/SQL procedure, then the BLOB must be no bigger than 32K - 7. If you pass a BLOB that exceeds this limit, then you will receive a SQLException.
http://docs.oracle.com/cd/E11882_01/java.112/e16548/oralob.htm
← →
DVM © (2012-08-20 12:23) [51]
> Sergey Masloff (20.08.12 12:21) [49]
Тут важно, чтобы именно в хранимую процедуру передавалось
← →
Es (2012-08-20 12:47) [52]DVM, нет. По крайней мере на 11g проверено. Мы генерировали BLOB-поток на стороне оры, порядка 16 мбайт (то что у нас в тесте с клиента через ADO не прошло по размеру). Отлично такой BLOB уходит как параметр в хранимку, а хранимка его потом записала в поле таблицы.
Так что ора не против.
← →
DVM © (2012-08-20 13:33) [53]
> Es (20.08.12 12:47) [52]
> По крайней мере на 11g проверено.
А у тебя какая версия Oracle? Там как раз написано, что в 11 нет ограничения, а в 10 вроде как есть.
← →
Es (2012-08-20 13:42) [54]мне кажется ты ошибаешься... от сервера это не зависит. наверное, там речь идет про клиентскую сторону. Возможно, это зависит от клиентской версии.
← →
Es (2012-08-20 13:54) [55]да, на десятом оракле всё точно также хорошо работает, блоб в 20 мегабайт в хранимку улетает хорошо.
← →
Es (2012-08-20 14:06) [56]
> ОНО?
ну я не очень понял причем здесь ADOCommand... Ведь Insert / Update и так работает хорошо с большими блобами в несколько мегабайт.
Затык идет с передачей именно в хранимки. С хранимкой работаю через TADOStoredProc, если там устанавливать свойство "SPPrmsLob", так у меня вообще вылетает AV...
http://www.onlinedisk.ru/get_image.php?id=930217
← →
Sergey Masloff (2012-08-20 14:14) [57]
> Затык идет с передачей именно в хранимки. С хранимкой работаю
> через TADOStoredProc, если там устанавливать свойство "SPPrmsLob",
> так у меня вообще вылетает AV...
там типп cmdStoredProc и вызывается именно хранимка - в том месте откуда я код драл ;-)
Приведи свой пример кода где там AV?
вот этоCommandObject.Set_ActiveConnection
делал ДО установки свойства?
← →
Sergey Masloff (2012-08-20 14:15) [58]
> Тут важно, чтобы именно в хранимую процедуру передавалось
Это именно для хранимой процедуры.
У автора ж в query работает а в sp нет. Это значит что там биндится через какой-то тип который имеет разный допустимый размер в SQL и PL/SQL
То есть его "нелигитимное" преобразование становится таким только в случае с использованием системы типов PL/SQL
Если задать этот параметр то биндинг будет гарантировано проходить с использованием типа BLOB который одинаковый в SQL и PL/SQL энджайнах
Пока предположение такое дальше будем смотреть
← →
Sergey Masloff (2012-08-20 14:17) [59]Про размеры - и в 8 (вроде бы) и в 9 и далее вставлял блобы через хранимые размерами гораздо больше жалких десятка мегабайт ;-)
Так как не использовал ADO даже не знал что с ними проблемы могут быть
;-)
← →
Es (2012-08-20 14:20) [60]А-а-а, Серёг, я неправильно понял твой выдранный код ))
Я ставил у ADOStoredProc.Properties, а оказывается еще есть ADOStoredProc.Parameters.Properties.
Всё заработало на ура, спасибо )
Страницы: 1 2 вся ветка
Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Память: 0.57 MB
Время: 0.066 c