Работа с CLOB, улучшение производительности

Этот пост может пригодиться, если работаем с LOB-объектам в базе данных Oracle.
Предыстория:
Есть динамически сформированные XML-документы, которые хранятся в Global Temporary Table (GTT), и которые хочется сконвертировать в CLOB и сохранить в базе.
Это реальный пример, документы – это MS Excel или MS Word документы, сформированные с использованием возможностей MS Office формировать документы с использованием WordML и XML Spreadsheet.

Continue reading “Работа с CLOB, улучшение производительности”

SMTP+attached files vs Antivirus

Ура, одержана победа 🙂 противостояния антивируса и передачей почтового сообщения с прикрепленными файлами средствами SMTP.

Предыстория

Давно создал пакет в СУБД Oracle, который использует UTL_SMTP для отправки из базы писем. Все работало отлично, пока на одном из проектов письмо пришло некорректным, а именно: приаттаченный файл имел неправильное имя, расширение .dat и не раскодированным.

Иными словами: когда мы посылаем письмо, то прикрепляем файлы посредством перекодировки в base64. Например, средствами шаблона мы генерируем какой-нибудь отчет или документ (например, в MS Excel или MS Word), полученный CLOB кодируем в base64 и вставляем в письмо. Отсылаем. Получатель получает письмо, которое содержит прикрепленный документ. Так вот, когда получатель открывает письмо, то в аттаче у него оказывается кодированный в base64 текст документа 🙁

Решение

Все оказалось просто до банальности :).

При отправке с почтового сервера, письмо проверялось антивирусом, установленным на нем (ну, в нашем случае был Касперский). И он добавлял свои пять копеек в заголовок, что приводило к пролеме.

Как оказалось виной всему было то, что при формировании строка

Content-Disposition: attachment; filename="test.xls"

была разнесена на 2 строки 🙂

Content-Disposition: attachment;
filename="test.xls"

и до момента, пока мы не встретились с антивирусом, это не было столь критичным для почтового сообщения.

Метод наименьших квадратов

Век живи – век учись.
За 15 лет первый раз потребовалось работать со статистикой :). В проекте для планирования и прогнозирования потребовалось обрабатывать данные за предыдущие годы для формирования прогноза на следующий.
Для реализации выбраны две методики – среднее значение, и значение, полученное методом наименьших квадратов. Вот тут и задумался, как реализовать вторую методику, насколько “зависнет” дальнейшая разработка, пока буду реализовывать само решение метода. Однако, какое облегчение – все давно реализовано в самой СУБД (SQL Language Reference):
REGR_ (Linear Regression) Functions
The linear regression functions are:

  • REGR_SLOPE
  • REGR_INTERCEPT
  • REGR_COUNT
  • REGR_R2
  • REGR_AVGX
  • REGR_AVGY
  • REGR_SXX
  • REGR_SYY
  • REGR_SXY

Первых двух функций как раз достаточно. Единственное, надо обратить внимание на результат, если в выборке одна пара значений – вернется NULL, и это правильно. Тогда, например, можно взять для прогноза то же значение, что и в выборке.

Удаление Oracle Database под Windows

Возникла необходимость удалить базу данных Oracle 11g из-за сбоя при установки (в смысле сбой не при установке самой базы, а при некорректных шагах по интеграции).
Выяснились нюансы 🙂

Beginning with 11.2, the Oracle Universal Installer will no longer be used to remove Oracle software from an environment. A new Deinstall tool is shipped with the Oracle Products and is also available for download on OTN

Это из нотки “How to Manually Remove Oracle Server Software on Microsoft Windows Platforms (Doc ID 1069034.1)”

Continue reading “Удаление Oracle Database под Windows”