Рубріки: Мнение

«Чистое зло»: разработчик перечислил недостатки Oracle SQL

Богдан Мирченко

«Мне нравится Oracle, но иногда он заставляет меня лезть на стену», — такими словами начал свой пост разработчик с сайта CodingToFreedom, который, мягко говоря, недоволен этой технологией и называет ее, вероятно в шутку, «чистым злом». Последней каплей стал момент, когда специалисту пришлось вести с программой «битвы эпических масштабов», в результате чего он потратил несколько месяцев на решение ошибок, устранение которых должно занимать не более пяти минут. 

Вот почему автор недолюбливает Oracle.

Отсутствие подробностей об ошибке

Каждый, кто когда-либо работал с Oracle SQL, знает, как программа сообщает об ошибках. Уведомления вроде «Invalid SQL statement» или «Missing Right Paranthesis» неинформативны, особенно, если в них нет информации о номерах строк с ошибкой. 

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

Уведомления от Oracle настолько же бесполезны, как если вы попросите у кого-то помощи и вас отправят искать решение в Google. 

Сообщения, которые вредят пользователю

Представьте, что в коде есть функция, которая должна вносить некоторые значения в таблицу базы данных. Вроде бы все просто, да? Но внезапно вы получаете сообщение с ошибкой «Table or view not found», что означает, что какой-то сервис-провайдер обращается к таблице, которой еще нет. 

Это не самая сложная ошибка, но чтобы ее устранить нужно определить, почему недостаточно существующих привилегий, а также отладить всю программу. И все это делается для того, чтобы в конечном итоге выяснить, что проблема не в представлениях, а в последовательностях, используемых для увеличения ID столбца, которому нужны привилегии для пользователя. 

Такое сообщение об ошибке хуже ошибки без описания, потому что оно дезинформирует и пускает по ложному пути. Мне пришлось устранять ту ошибку, которую указала программа. 

Oracle не знает, что делает Oracle

Каждый раз, когда пользователь пытается задать программе вопрос, она отвечает как тот парень из магазина, которого вы можете случайно перепутать с продавцом-консультантом — «извините, но я здесь не работаю». 

За решением можно пойти на форум программ, но искать помощи там, это все равно, что ждать внятного и быстрого ответа на свой вопрос на Quora. Конечно, пока ищите, вы узнаете много нового, но решение вашей проблемы будет где-то в недрах комментариев на StackOverflow. Причем сообщение будет помечено как дубликат, с кучей апвоутов и не будет отвечать на основной вопрос треда. 

Oracle непоследователен

Посмотрите на этот код. Что вы видите? 

Кроме того, что это выглядит безобразно и является возможным источником SQL-инъекции, сначала может показаться, что это рабочий код, но это не так. Хотя, если скопировать его в редактор и запустить, он запустится. Почему? Проблема в точке с запятой в конце скрипта. Функция EXECUTE IMMEDIATE везде работает по-разному. 

Файлы журнала могут убить ваш скрипт

Представьте, вы работает над кодом, который по всем правилам должен работать, но не работает. В отчаянии вы начинаете добавлять после каждого вызова функции логи, чтобы выяснить, где скрипт перестает работать (потому что, конечно, Oracle просто так вам об этом не скажет). Вы находите все баги и надеетесь, что теперь цикл пройдет без ошибок, но внезапно вы замечаете увеличение переменной счетчика. А затем он останавливается после 459-й итерации из примерно 900. 

Как оказалось, Oracle настолько не любит предоставлять пользователям вывод логов, что сам оператор ведения логов может привести к сбою скрипта, когда внутренний буфер вывода логов будет переполнен. Эта ошибка стала последней каплей моего терпения. На отладку у меня ушло несколько часов, а решение этой ошибки было довольно-таки простым: 

Останні статті

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

Переписки, фото, история браузера: киевский программист зарабатывал на шпионаже

Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023