• Полезные скрипты при миграции из Oracle в PostgreSQL

      Во время миграции из Oracle в PostgreSQL с помощью ora2pg встал вопрос с несоответствием типов данных между разными базами. По умолчанию не все колонки конвертируется правильно, а отсутствие в Oracle Boolean и вовсе порождает неоднозначность – часть колонок нужно перенести как числа, часть как логические значения. В тоже время hibernate знает все о типах данных и может создать эталонную схему.

      Итоговый процесс переноса выглядел следующим образом: создание структуры таблиц через ora2pg, исправление структуры по эталонной схеме, перенос данных, конвертация blob и Boolean, добавление отсутствующих в PostgreSQL функций (nvl, nvl2, regexp_substr), создания оставшейся структуры — индексов, view и прочего.

      Под катом накопившиеся за время конвертации sql скрипты для полуавтоматической миграции.
      Читать дальше →
    • Отладка PL/SQL кода для внешней сессии БД

        Проблематика и назначение:


        Периодически Oracle разработчики сталкиваются с проблемой отладки PL/SQL кода, когда код вызывается из веба или среднего слоя(т.е. когда сессия разработчика не совпадает с сессией в которой возникает проблема).

        Особенно актуально, если какие-либо проблемы возникают на стороне Web при двухзвенных и трехзвенная схемах взаимодействия БД и Web(ниже пример трехзвенной архитектуры взаимодействия):

        Рисунок 1 — Трехзвенная архитектура взаимодействия БД и Web.

        Метод решения проблем:


        В решение проблем с отладкой PL/SQL кода нам помогут пакеты:
        • DBMS_PIPE — Пакет который позволяет отпавлять сообщения(пайпы) между 2мя сессиями БД Oracle.
        • DBMS_ALERT — Пакет, который обеспечивает поддержку асинхронных оповещений для различных событий БД Oracle.

        Читать дальше →
      • Профилирование PL/SQL кода при помощи IDE PL/SQL Developer

          Проблематика и назначение:


          Периодически Oracle разработчики сталкиваются с проблемой производительности PL/SQL кода. Возникают проблемы с тем, чтобы найти место pl/sql кода, в котором возникают проблемы.

          Обычно профилирование pl/sql кода используется, когда необходимо определить проблему производительности в очень большом методе, либо когда у метода много внутренних зависимостей с большим количеством логики, а также нет понимание в каком месте метод код тормозит.

          Методы решения проблемы:


          В решение проблем с производительность в БД Oracle нам помогут:

          • PL/SQL Developer — Популярное IDE для Oracle разработчиков.
          • DBMS_PROFILE — Oracle пакет для профилирования (не будет рассматриваться в рамках данной статьи, т.к. информации достаточно на просторах интернета).

          Читать дальше →
        • Liquibase: пример автоматизированного наката изменений на реляционную БД

            Вместо предисловия


            Статья будет интересна тем, кто хоть раз задумывался о вопросе наката изменений (патча) на реляционную БД. Статья не будет интересна тем, кто уже освоил и использует Liquibase. Главной целью данной статьи является указание ссылки на репозиторий с примером использования. В качестве примера я выбрал накат sample-схемы HR на БД Oracle (список всех поддерживаемых БД) — любой желающий может скачать себе репозиторий и поиграться в домашних условиях. Желание продемонстрировать пример вызвано обсуждением этого вопроса на ресурсе sql.ru.

            Читать дальше →
          • Аналитика в госсекторе: особенности больших систем хранения данных

              Принято считать, что информационные технологии в государственных ведомствах приживаются тяжелее, и для этого мнения есть ряд объективных причин. Однако, как говорил Альф: «Вы не любите котов? Значит, вы не умеете их готовить!». И сегодня мы хотим поговорить о том, как отличаются проекты в госкомпаниях с точки зрения бизнес-IT интегратора, и для каких целей госы создают большие хранилища для аналитических проектов.

              Исторически государственные ведомства отличаются большей инертностью, потому что в них принято дольше согласовывать каждый шаг, потому что точка принятия решения в них размыта, потому что заказчик может многократно менять задание, уточняя, что же ему необходимо в действительности. Сами чиновники в своем большинстве воспринимают ИТ-проекты без лишнего энтузиазма. В госструктурах обычно нет какого-то сильного сопротивления новому, но и стремления к нему тоже нет, в частности, оказывается непросто найти заинтересованный в результатах «локомотив» внедрения новых решений. В итоге внедрение идет медленнее, и со стороны начинает казаться, что заказчику вообще не нужен тот или иной проект.

              Читать дальше →
            • Анатомия распределённых бизнес-процессов: Oracle SOA и BPM


                Все переплетено, море нитей, но.
                Потяни за нить, за ней потянется клубок.
                Этот мир – веретено
                Oxxxymiron – Переплетено

                Мир построения крупных ИС в топ-100 компаниях, как и любые другие ИТ-направления, подвержен веяниям моды. Еще пять лет назад SOA казалось решением всех проблем сложных архитектур. Банки и крупные ритейлеры активно перестраивали свои системы в интеграционном SOA-стиле. BPM-платформы внедряли там, где руководство придерживается современного подхода в построении бизнес-приложений и интеграционной архитектуры самой компании.

                Сегодня сервис-ориентированной архитектурой уже никого не удивишь, а в особо продвинутых кругах это уже моветон — ведь есть микросервисы, новое лекарство от всех болезней.

                Но велико число тех организаций, где всё делается «по-старинке» — такие заказчики очень часто мыслят категориями имеющихся у них ИТ-систем. Мол, «мы купили вот такую крутую CRM-систему и счастливы». Или «у нас есть SAP ERP, нам его хватает на все случаи жизни». Хотя на самом деле сложности возникают: нередка ситуация, когда компания приобретает какую-то систему и начинает нашпиговывать её несвойственной ей функциональностью и ставить задачи, на которые вендоры и не рассчитывали. В итоге система превращается в неповоротливого монстра, чьи дополнительные возможности плохо задокументированы, с ней очень тяжело разбираться и работать. И самое главное — её тяжело развивать.

                Вторая распространённая ситуация: каждый отдел внутри организации лепит что-то своё. В одном подразделении скачали Open Source систему учёта заявок, в другом заказали решение у местного программиста, и так далее. В итоге возникает зоопарк систем, решающих одни и те же задачи.

                И выходом из двух этих крайних ситуаций по-прежнему являются интеграционные и BPM-решения. Замечательные представители которых — Oracle SOA Suite и Oracle BPM Suite. Что это такое и зачем они нужны?
                Читать дальше →
                • +14
                • 2,8k
                • 6
              • Реклама помогает поддерживать и развивать наши сервисы

                Подробнее
                Реклама
              • Padding Oracle Attack: криптография по-прежнему пугает

                • Перевод

                Эту уязвимость чинят уже пятнадцать лет


                В хабрапереводе текста четырёхгодовалой давности «Padding Oracle Attack или почему криптография пугает» была подробно описана атака на режим шифрования CBC. В этом режиме каждый очередной блок открытого текста xor-ится с предыдущим блоком шифротекста: в результате каждый блок шифротекста зависит от каждого блока открытого текста, который был обработан к тому моменту.

                Чтобы пропустить исходное сообщение (произвольной длины) через CBC-шифр, к нему дописывается MAC (хеш для проверки целостности, обычно 20-байтный SHA-1) и затем padding, чтобы дополнить открытый текст до целого числа блоков (обычно 16-байтных):


                Padding («набивка») состоит из одинаковых байтов, на единицу меньших своей длины: (0) или (1,1) или (2,2,2) или т.п.
                Таким образом, получатель шифротекста должен
                1. расшифровать все его блоки;
                2. прочитать последний байт последнего блока, чтобы определить длину набивки и, соответственно, позицию MAC в открытом тексте;
                3. проверить корректность набивки и MAC.

                В 2002 г. французский криптограф Серж Воденэ обнаружил в CBC уязвимость к атакам типа «padding oracle»:
                Читать дальше →
              • Подход к разделению схем (пользователей) при проектировании OLTP баз данных

                Проблематика и назначение:


                Разделение схем в основе своей реализуется для масштабируемости и безопасности:

                • Масштабируемость с точки зрения баз данных должна быть такой, чтобы схему можно было вынести в другую базу без ущерба функционалу.
                • Безопасность с точки зрения баз данных должна быть такой, чтобы внешние пользователи оперировали только бизнес логикой, к которой раздаются гранты, и не имели доступа к первичным данным.
                Читать дальше →
              • Компания Oracle передаст проект Java EE в руки сообщества Eclipse Foundation

                  image
                  Недавно мы объявили, что Oracle начинает изучать возможность перевода технологий Java EE в OpenSource, чтобы сделать процесс разработки этих стандартов более гибким и открытым. С середины августа у нас было много дискуссий с другими поставщиками, членами сообщества и фондами OpenSource, чтобы продвинуть процесс вперед. Вот обновленная информация о достигнутом прогрессе.

                  Читать дальше →
                • Dive into BerkeleyDB JE. Introduction to Collections API

                  • Tutorial

                  Введение


                  Немного о сабже. BerkleyDB — высокопроизводительная встраиваемая СУБД, поставляемая в виде библиотеки для различных языков программирования. Это решение предполагает хранение пар ключ-значение, также поддерживается возможность ставить одному ключу в соответствие несколько значений. BerkeleyDB поддерживает работу в многопоточной среде, репликацию, и многое другое. Внимание данной статьи будет обращено в первую очередь в сторону использования библиотеки, предоставленной Sleepycat Software в бородатых 90х.

                  В предыдущей статье мы рассмотрели основные аспекты работы с Direct Persistence Layer API, благодаря которому можно работать с Berkeley как с реляционной БД. Сегодня же внимание будет обращено в сторону Collections API, которое предоставляет возможность работы через всем привычные Java Collections интерфейс-адаптеры.

                  Примечание: все примеры в данной статье будут приведены на языке Kotlin.
                  Читать дальше →
                Самое читаемое