На чем разрабатывать Oracle разработчику в 2019-м году (и после)

    Некоторое время назад я в очередной раз сменил место работы. Новый работодатель был настолько любезен, что разрешил мне выбрать любую IDE, которая понравится, и оплатить лицензию (но в разумных пределах). Также (в кои-то веки) у меня были права администратора на рабочем компьютере, так что я мог ставить что угодно и пробовать сколько угодно. Я попробовал: Oracle SQL Developer, TOAD, Alt SQL Developer и (ВНЕЗАПНО!) IntelliJ IDEA (PL/SQL Developer не пробовал, но много работал раньше). Если вы регулярно пишете PL/SQL код, или хотя бы время от времени делаете запросы к Oracle Database, думаю, вам будет интересно почитать, к каким выводам я пришел.


    Сразу хочу предупредить. Не могу сказать, что каждую из IDE изучил досконально, а PL/SQL Developer, кроме всего прочего, видел последний раз 5 лет назад. Поэтому всегда может оказаться, что когда я говорю "этого в IDE нет", на самом деле это там есть, просто я не нашел. А когда я говорю о PL/SQL Developer, я имею в виду версию, кажется, 8 (на которой писал 5 лет назад). Не исключено, что потом там многое изменилось, и не обязательно в лучшую сторону.


    Участники соревнований


    Итак, что у нас есть? В первую очередь, это то, что можно назвать большой тройкой Oracle-разработки: TOAD, PL/SQL Developer и Oracle SQL Developer. Эти продукты уже давно на рынке, их все знают, у каждого продукта есть своя армия фанатов. Я несколько раз сталкивался с мнением, что TOAD больше любят DBA, а PL/SQL Developer — разработчики. Про Oracle SQL Developer ничего такого не слышал, а армия его фанатов, судя по всему, состоит в основном из менеджеров, — и то только потому, что он бесплатный.


    Кроме этого, я решил включить в обзор Alt SQL Developer (продукт, долгое время, а может быть, и до сих пор, разрабатываемый ОДНИМ человеком) и IntelliJ IDEA (он же Гоша, он же Гога, он же DataGrip).


    Для тех, кто не в курсе устройства продуктов JetBrains

    Система там примерно такая: есть IntelliJ IDEA Community Edition — она бесплатная и для джавы. Есть несколько похожих платных продуктов (порядка пары сотен долларов/евро) — RubyMine для Ruby, DataGrip для баз данных, и так далее. И есть IntelliJ IDEA Ultimate Edition, которая дороже всего (примерно 650, кажется), но объединяет в себе функциональность всех продуктов JetBrains. Все эти продукты имеют идентичный интерфейс и очень сильно похожи, благодаря чему переходить с одного на другой проще простого — даже проще, чем с одной версии экселя на другую.
    Поэтому далее по тексту мы говорим IDEA — подразумеваем DataGrip, мы говорим DataGrip — подразумеваем IDEA.


    PL/SQL Developer


    Я начал работать с ораклом в 2011-м году, и это была первая IDE, с которой я столкнулся. Так сложилось, что следующие три года везде, где я работал, использовался именно PL/SQL Developer. Я изучил его довольно неплохо, и он казался отличным инструментом. И хотя 2014-й год был последним годом, когда я запускал эту IDE, даже сейчас она кажется мне неплохим выбором. Главный минус — работает только под Windows.


    Oracle SQL Developer


    Бесплатная IDE, выпускаемая ораклом. Кроме бесплатности, имеет и другой плюс — кроссплатфоренность. Можно запускать и на линуксах, и на маках. Но, пожалуй, на этом плюсы и заканчиваются. Я ее впервые начал использовать году так в 2015-м. Работает сносно, но есть куча раздражающих мелочей. Дешево и сердито.


    TOAD


    Я пробовал начать работать с TOAD несколько раз в свой карьере. Каждый раз я запускал его и тут же у меня возникал вопрос — и чё дальше? Куда нажимать, чтобы начать работать? Последний раз был несколько недель назад, и я наконец-то ее осилил! Разобрался, где какая кнопка, где какая закладка. Эта IDE довольно мощная, но как-то бестолково организованная, имхо. Куча окон и закладок, в которых легко запутаться. И тоже только под Windows.


    Alt SQL Developer


    Знакомство с этой IDE началось с топика на форуме. На форум пришел какой-то чувак и сказал, что пишет свой PL/SQL Developer с блекджеком и шлюхами. Я никогда не пользовался этой IDE всерьез, только пару недель назад поставил и попробовал поработать один день. Выглядит как PL/SQL Developer, из которого выкинули весь ненужный мусор. К сожалению, несмотря на семилетнюю историю, она до сих пор сыровата. Не помню уже, с чем именно я там столкнулся, но для работы на моем текущем проекте она не применима, к сожалению. И вообще, закрадывается мысль, что автор разработку забросил. А жаль, для продукта, разрабатываемого одним человеком, — это очень достойный результат. Респект, уважуха и лучи поддержки! Опять же, только Windows, но в данном случае не будем придираться.


    Intellij IDEA


    Вообще-то сначала я просто хотел немного поизучать джаву и писал в этой IDE. А потом для одного из хобби-проектов понадобилось сделать базу на PostgreSQL, и оказалось, что и с БД IDEA отлично справляется! На текущем проекте начал плотно работать с этой IDE и в целом доволен. Правда, без ложки дегтя не обошлось: наткнулся на багу, которая серьезно попортила кровь (IDE перестала показывать объекты одной из схем — на беду, одной из самых необходимых). Написал баг-репорт, воркэраунд посоветовали на форуме JetBrains через пару дней, а до этого пришлось помучиться.


    О чем говорят разработчики

    В разговоре с коллегами я как-то упомянул, что некоторое время назад решил начать изучать java — ну так, чисто для себя в основном. Начал с Eclipse, просто потому что слышал про эту IDE раньше. А потом, через год или два, знакомый посоветовал IDEA, я попробовал — и это была любовь с первого взгляда. Казалось, эта IDE понимает меня и чуть ли не читает мысли. Тут один из коллег спросил:
    — А чем она тебя так зацепила?
    — Ну, даже хотя бы чисто эстетически — там есть темная тема оформления, например.
    — Но в Eclipse тоже есть темная тема!
    — Нет, ты не понимаешь. Я скачал "Идею", установил, и при первом запуске первое, что она показала — это две картинки рядом. Темная тема или светлая — выбирай.
    В этот момент наш фронтэндщик поднял палец вверх и многозначительно изрек:
    — ВОООООТ! Юзер экспириенс!


    Цена вопроса


    Цены взяты с официальных сайтов, из расчета на одного разработчика. Как правило, у всех есть пакеты для большого числа разработчиков, и тогда все еще дешевле.


    PL/SQL Developer: 216 долларов + 60 годовая поддержка.
    Oracle SQL Developer: бесплатно.
    TOAD: 1054 евро (ЛОЛШТО??? Может, я просто не туда посмотрел?)
    Alt SQL Developer: 99 долларов
    DataGrip: 199 евро первый год, 159 второй и по 119 последующие.


    Разработка на PL/SQL в IDE


    Пишем код


    В первую очередь, процесс разработки состоит из чтения и написания кода. Ну, тут понятно: подсветка синтаксиса, автодополнение, навигация, всплывающие подсказки и все такое. Как справляются с этой задачей конкурсанты?


    Если брать практическую сторону вопроса, то флагманы уверенно идут впереди. Автодополнение и навигация, имхо, лучше всего работали в PL/SQL Developer. В TOAD и IDEA чуть хуже, а вот Oracle SQL Developer мне так и не удалось заставить автодополнять удобным мне способом (а кроме того, у меня в нем постоянно слетают настройки — они почему-то вообще не сохраняются при выходе). Отдельно хочу отметить такой мелкий нюанс: если окно предложений для автодополнения уже закрылось по какой-то причине, то PL/SQL Developer умеет показывать его снова по Ctrl+Пробел. А еще всплывающие подсказки с названиями и типами агрументов функций. Остальные IDE не умеют, а если и умеют, то я не знаю, по какой клавише, и как эти опции называются в настройках, я тоже не знаю.


    Также у PL/SQL Developer было еще несколько прикольных фишек, нужных именно для работы с SQL: сгенерировать в один клик перечень всех полей таблицы через запятую, поиск по коду в ALL_SOURCE, специальный режим отображения результатов селектов, когда поля идут в столбик, а в соседнем столбике одна строка данных. ОЧЕНЬ удобно, когда нужно посмотреть, какие поля и какие примерно данные есть в незнакомой таблице. Из всего этого у конкурентов я нашел только в IDEA поиск по коду и генерацию списка столбцов таблицы.


    Настройки форматирования SQL и PL/SQL тоже есть у всех, более-менее одинаковые по мощности, и превью тоже есть. Разве что у TOAD они как-то слишком сложно сформулированы.


    А вот с эстетической стороной вопроса флагманы справляются как-то не очень. Если в IDEA есть целая темная тема, то в остальных можно максимум сделать темный фон в редакторе кода. Фон в других окнах останется белым (в PL/SQL Developer, помнится, это частично тоже настраивается, но все в разных местах, чокнуться можно, у остальных вообще никак). Oracle SQL Developer единственный из оставшихся имеет несколько готовых наборов цветов для подсветки синтаксиса, включая набор с темным фоном. Остальные IDE по умолчанию имеют просто вырвиглазные высококонтрастные цветовые схемы и шрифт Courier new — имхо, самый уродливый моноширинный шрифт в этой части Вселенной. IDEA использует шрифт Consolas, он как-то поприятнее. Отдельно отличился TOAD (у меня версия 11.5): там есть баг, из-за которого символы %, &, * и ^ (а первые три очень часто используются в PL/SQL) не попадают ни в один набор символов в настройках, что приводит к невозможности задать им цвет шрифта. То есть они всегда остаются черными, и темная тема означает боль и страдания. И это продукт за штуку зелени? Это фиаско, братан.


    Запросы, PL/SQL блоки и скрипты


    Тут все на удивление ровно. Работа выглядит более-менее одинаково у всех, хотя без небольших сюрпризов не обходится. В Oracle SQL Developer очень неудобно включается вывод в консоль (нужно больше одного клика мышкой), а IDEA выводит таймстемпы, которые не отключаются — это мешает отлаживать процедуры, использующие динамический SQL.


    Еще TOAD и IDEA умеют делать экспорт данных из таблицы в виде INSERT выражений.


    PL/SQL Developer имел честный режим эмуляции SQL*Plus — отдельное окно, куда можно писать команды прямо как в самом SQL*Plus — с выводом прямо тут же. Остальные могут просто тупо выполнять скрипты, а output выплевывать в соседнее окно.


    Еще стоит сказать об умении определять границы SQL-запросов. Oracle SQL Developer, PL/SQL Developer и Alt SQL Developer требуют обязательно отделять запросы точкой с запятой (а PL/SQL блоки — слэшем), а иначе они не понимают, где один запрос закончился, а другой начался. IDEA в этом плане немного умнее (и TOAD, кажется, тоже) — там можно написать два корректных запроса, не отделяя их друг от друга точкой с запятой, поставить курсор на один из них и выполнить его. Кроме того, IDEA перед запуском обводит распознанный запрос зеленой рамочкой, дополнительно позволяя убедиться, что выполнится именно то, что нужно.


    Еще один важный пункт — это пошаговая отладка, но она, кажется, выглядит одинаково вообще у всех IDE, начиная чуть ли не с TurboPascal 7.0. И да, буквально неделю назад на форуме JetBrains написали, что пошаговая отладка PL/SQL в IDEA готова. Народ уже во всю тестирует.


    Браузер объектов


    Самые удобные браузеры объектов — у PL/SQL Developer и Alt SQL Developer. У них есть панелька слева с браузером, а справа можно писать код, а у PL/SQL Developer еще в добавок были возможности поиска и фильтрации объектов в той же панели. У Oracle SQL Developer почти так же хорошо, но мне нравится немного меньше. У TOAD мне не нравится то, что если смотришь браузер объектов, то в левой панели показаны собственно объекты, а справа, на остальной части экрана, отображаются их многочисленные свойства. А сделать так, чтобы слева были объекты, а справа — редактор кода, не получится. То есть информации TOAD дает может даже и побольше, но юзабилити — не его конек. У IDEA браузер объектов — самое слабое место, на троечку с минусом. С одной стороны, их можно понять, не ораклом единым, и даже не одними реляционными БД жив DataGrip, а с другой: назвался груздем — полезай в короб.


    Зато IDEA умеет рисовать ER-диаграммы для уже существующих в БД таблиц, и вызывается эта функция из браузера объектов. За это ей жирный плюс.


    Контроль версий


    С контролем версий ситуация тяжелая. Так исторически сложилось (уж не знаю как, но это факт), что люди, работающие с Oracle, в основной своей массе довольно дремучи в вопросах организации процессов разработки в команде. Можете представить себе Senior Java (или С/С++/фронтенд) девелопера, который ни разу в жизни не работал ни с одной системой контроля версий? А вот Senior Oracle девелопера можно найти довольно легко — последнего такого я видел не далее как в прошлом году. Про тесты и говорить не приходится (на прошлой работе я показал нашему "лиду" APEX-разработки простенький тестик на Java + Selenium, а он мне в ответ — "Ни в коем случае! Никаких тестов! Это ж в два раза больше работы — и тесты, и код поддерживать!"), а за выражение "Continuous Integration", кажется, меня бы там убили на месте (поэтому я не выражался).
    По этой причине мне не удалось толком протестировать возможности по работе с системами контроля версий PL/SQL Developer и Oracle SQL Developer.


    Но немножко я попробовал

    Перед написанием этой статьи я запустил Oracle SQL Developer на домашнем компе. Подключился к репозиторию, сделал clone, изменил файл, посмотрел изменения в окне сравнения версий, нажал commit… Получил java exception, расписался. Но у меня старая версия, двух- или трехлетней давности. На работе стоит свежая, она этот тест с честью прошла. Ха-ха.


    Я работал в IDEA с git, и IDEA в этом плане идеальна. Мои коллеги используют SourceTree для работы с гитом (я использую и то, и то), и я могу сказать, что IDEA переигрывает SourceTree на его же поле — при том, что SourceTree вообще ничего другого не умеет.


    У остальных IDE пункт в меню для работы с системами контроля версий номинально присутствует, но больше я ничего не знаю.


    Выводы, которые я для себя сделал


    По соотношению цена/качество с большим отрывом выигрывает Oracle SQL Developer: еще бы, если ноль поделить на какое-нибудь число, получится ноль ;) А если отбросить шутки, то кросс-платформенность и бесплатность — практически единственные его плюсы. И чисто с идеологической точки зрения: если посмотреть на финансовые возможности разработчиков перечисленных IDE, то Oracle — самая богатая компания. Однако, если брать фактическую функциональность и удобство работы, их софтина — самая убогая.


    Alt SQL Developer — тоже довольно простенькая программка, и, имхо, она не стоит даже тех 99 баксов, которые за нее просят. Но ёлки-палки: во-первых, она довольно качественно косплеит PL/SQL Developer, а во-вторых, написана одним человеком в свободное от работы время, а не корпорацией с многомиллиардной стоимостью. Упоминания в одном ряду с флагманами она точно заслужила.


    TOAD — мощная софтина, но с нечеловечески неудобным интерфейсом и запредельной стоимостью. Я не знаю, как можно за нее платить штуку баксов (все еще надеюсь, что просто не туда посмотрел). 200 — я б еще подумал и все равно бы не купил.


    PL/SQL Developer — был моим идеалом до появления IDEA. Перечитав эту статью, понял, что PL/SQL Developer даже пятилетней давности был лучше, чем большинство его конкурентов сейчас.


    Какую IDE выбрал я?


    Я на данный момент выбрал IntelliJ IDEA и хочу попробовать объяснить, почему. Казалось бы, некоторые вещи она умеет хуже, чем конкуренты (браузер объектов), а в остальном — плюс-минус то же самое. Но, тем не менее, IDEA имеет несколько киллер-фич, которые с лихвой перевешивают недостатки. О них чуть подробнее.


    Live Template. Совершенно невозможно не упомянуть одну из киллер фич IDEA — Live Template. Что такое Code Template — знают более-менее все, и во всех оракловых IDE это есть. Вы пишете условное сокращение, а IDE заменяет его длинным. Например, вы можете сделать настройку, чтобы IDE заменяла "sft" на "select * from ". В IDEA пошли дальше, и эта функция называется Live Template. Вы можете внутрь шаблона вставить специальные выражения, обрамленные знаками "$", и IDEA не только сделает автозамену, но и по нажатию на Enter будет перемещать курсор по тем местам, где стояли эти выражения.


    Небольшой пример для тех, кто не работал в IDEA

    Допустим, у вас есть переменная MY_COL, которая содержит коллекцию. Нужно написать PL/SQL код для обработки этой коллекции. Можно просто написать, а можно сделать шаблон! Заходим в Settings, находим пункт Live Template, справа нажимаем на плюсик.
    Заполняем: Abbreviation — ну, например, "fori". Description — по желанию. Template text — вводим туда следующее:


    for i in $collection$.first .. $collection$.last loop
      $END$
    end loop;

    Внизу нужно еще выбрать Applicable context. Это нужно для того, чтобы для разных языков можно было использовать одинаковые сокращения. Нажимаем ОК. Теперь в редакторе: набираем fori, потом нажимаем TAB. Появляется шаблон кода, а на месте $collection$ появляется красная рамка и курсор. Теперь нужно набрать "my_col" и нажать Enter. У вас должно получиться:


    for i in my_col.first .. my_col.last loop
    
    end loop;

    Причем обратите внимание — курсор появится на месте $END$, то есть не после вашей конструкции, а где-то внутри, — вы управляете этим поведением!
    По описанию это может быть не очень понятно, поэтому лучше поставьте IDE и поупражняйтесь. Гарантирую, вам понравится.


    Refactoring. Просто автозамена текста есть у всех, даже в блокноте, наверное. А вот чего у "большой тройки" нет, так это чуть более интеллектуальной автозамены. Если у вас в пакете есть несколько функций, в которых используются переменные или параметры с одинаковым названием (и даже если просто такое сочетание символов используется где-то еще), то автозамена переименует их все. А если нужно переименовать именно переменную в одной из функций, то тут придется следить и делать автозамену в полуавтоматическом режиме. IDEA решила эту проблему — по Shift+F6 вы можете переименовать именно то, что вам нужно. И это только цветочки, рефакторинг — это немного более сложная штука.


    А также...


    В 2009-м году известный специалист по проектированию интерфейсов Алан Купер выпустил третье издание своей книги "Об интерфейсе". Там он, в частности, обратил внимание читателя на такой странный факт: любая прикладная программа для обработки хоть каких-то пользовательских данных (тут имеется в виду любая из реально существующих — ну там Word, Excel, notepad, Paint, и так далее) может создать файл, дать ему имя, писать в него данные и т. п., но ни одна (!!!!) не умеет переименовывать уже открытый этой же программой файл, хотя никаких ограничений со стороны ОС для этого нет. Для переименовывания файла закройте его, обратитесь к услугам ОС, потом откройте заново. Юзабилити, ага.


    Это была присказка, сказка будет впереди. Таки IDEA эту функцию осилила!!! Не прошло и 10 лет, как говорится. Переименование файлов — это часть функциональности рефакторинга.
    Ждем остальных...


    Code Inspection Кто давно читает Хабр, тот наверняка видел регулярно появляющиеся статьи одной компании, разрабатывающей свой продукт для статического анализа, и наверняка успел проникнуться самой этой концепцией. Как внезапно оказалось, в IDEA есть некоторый набор правил и для анализа PL/SQL. Там, конечно, набор пока бедненький, и я уже собираюсь закинуть им Feature Request с несколькими новыми правилами, но даже то, что есть, способно принести немного пользы. Проверив всего один пакет наугад, я нашел одну неиспользуемую переменную и четыре… эээ… как это по-русски?.. unreachable statements. А потом оказалось, что эти unreachable statements образовались случайно, когда текст правили, и в итоге это были таки баги.


    Запуск скриптов. IDEA умеет запускать bat/bash файлы, это настраивается прямо из IDE. Предельно просто: открываем соответствующий файл, IDEA предлагает поставить плагин для работы с этим типом файлов, соглашаемся, плагин сам ставится (за несколько секунд), конфигурируем запуск, работаем дальше. Очень удобно, если вы пользуетесь скриптами для запуска SQL*Plus. Также мы используем модульные тесты для PL/SQL, написанные на Ruby, и точно также они запускаются из той же IDE (но для Ruby вам уже придется ставить IDEA Ultimate Edition, DataGtip не подойдет).


    Usability. В конце концов, IDEA — это просто удобно. У IDEA есть куча плагинов. Просто плагинами уже никого не удивишь, они есть вообще везде. Но IDEA может, например, сама определить, что у нее есть плагин, который может вам помочь. Типовой кейс — вы открываете какой-то файл, IDEA выводит сообщение "существует плагин для работы с этим типом файлов" и предлагает его скачать и сконфигурировать. И вообще, часто, когда случается какая-то непонятная фигня, IDEA показывает всплывающую менюшку со списком возможных действий по исправлению этой фигни. Очень приятная забота о пользователе.


    У IDEA есть поиск по справке. Если вы знаете название какой-то фичи IDE, вам достаточно зайти в справку и набрать это название в поисковой строке, далее IDE вам сама стрелочкой покажет, где эта функция.


    TL;DR IDEA — это айфон от PL/SQL разработки. Могу только пожелать разработчикам IDEA дальнейших успехов, а разработчикам остальных IDE хочу напомнить, что динозавры, которые не смогли эволюционировать — вымерли.


    P.S. Закончить статью не удавалось очень долго. Кажется, функций в любой современной IDE столько, что изучать и писать о них можно бесконечно, а уж изучать 5 разных IDE и описывать разницу между ними — это еще более бесконечно. Тут я изложил самые важные лично для меня вещи, и вообще описал много личного в терминах "нравится — не нравится", "удобно — неудобно", "красиво — некрасиво". Тем не менее, надеюсь, читатели получат общее представление и смогут примерить описанное на себя.


    P. P. S. JetBrains, с вас пиво ;)

    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 71

      0
      Все таки DataGrip несколько отличается от DataBase plugin для IDEA.
      В основном одно и то же. Но есть мелкие удобства в DataGrip, которых нет в DataBase plugin.
        +2
        Но есть мелкие удобства в DataGrip, которых нет в DataBase plugin.
        А можно пару примеров? А то я сразу в IDEA начал работать, DataGrip отдельно не пробовал.
          +1
          В DataGrip по умолчанию расположение окон немного по другому настроено, чем в плагине.
          Список БД справа, список файлов со скриптами слева.
          Есть такое понятие как проект, для БД скриптов.
          Вот что на вскидку смог вспомнить.
        0
        Когда-то еще до 2014 года компания, в которой я работал, озаботилась «обелением» софта, и был у нас TOAD. И стоил он реально штуку баксов. В 2017 г, когда я увольнялся, компания всё ещё работала на пиратке.
        С тех пор сижу на PL\SQL Developer, и горя не знаю.
        А вот как у IntelliJIdea обстоят дела с сессиями? В TOAD, няп, один экземпляр программы = 1 оракловая сессия, и пока там выполняется запрос, ты ничего не можешь делать. В PL\SQL Developer — одна вкладка с текстом = 1 сессия.
          0
          Нет, это в настройках задается. Ща по памяти не напишу как называется, но что то вроде run query in thread тогда можно запускать параллельно запросы, каждый в своем эдиторе
            0
            Подтверждаю, есть такая фича в тоаде, «Execute queries in threads» называется. И можно наплодить кучу сессий во вкладках)
            +1
            в IDEA одна вкладка(консоль) — одна сессия
              0
              В последней версии мы сделали управление сессиями: одна консоль/редактор — новая сессия, но можно подключать любой редактор к любой сессии или выбрать режим «работать внутри одной сессии»
                0
                О! А планируют ли сделать тоад для постгреса? Тот, который эдж чето не впечатлил совсем.
                  0
                  Мы это ДатаГрип :)
              +2
              за 20 лет практически ничего не поменялось.
                0
                Работаю в PL/SQL Developer, узнал пару новых штучек, спасибо! В Oracle SQL Developer я так понял есть всё из PL/SQL Developer: процедуры, пакеты и т.п. То есть всё похожее для написания PL/SQL кода?
                Тогда получается, что кому больше приглянулось, скажем визуально, тот то и выберет?(помимо важного критерия — запуска PL/SQL только на windows)
                  0
                  Тогда получается, что кому больше приглянулось, скажем визуально, тот то и выберет?
                  Ну в общем да, если брать только список доступных функций, то отличия не сказать что очень большие, разница больше касается того, как все выглядит и насколько удобно пользоваться, а это довольно индивидуальные вещи.
                    0
                    Sql Developer довольно неудобен. Пользовался им только на курсах, но до сих пор помню эти странные ощущения.
                    0

                    Попробуйте еще dbForge Studio for Oracle для сравнения.

                      0
                      +1, присоединюсь, было бы интересно послушать обзор, когда сам с dbForge работал 4 года назад, там было пара багов которые делали работу не возможной, может быть сейчас уже исправили?
                      Сама по себе IDE очень приятная.
                        0
                        dbForge шикарен, пробовал все продукты что выше автор описал, давно остановился на dbForge
                          0
                          dbForge иногда непредсказуемо портит открытые файлы. Вроде и баг нечастый, но в большом файле можно пропустить момент, и тогда большая часть работы оказывается испорченной, если не коммитить в репозиторий или бэкапить каждые несколько минут. Там и других, не столь критичных, косяков хватает (у кого их нет), но нескольких (может, трех-четырех, последний чуть больше года взад) случаев хватает, чтоб даже не думать больше пробовать.

                          Сейчас в результате остановился на DataGrip, он довольно сносен и недорог (в тексте неполный/неправильный (смайл) ценник, для пользователя в РФ никаких не 199 евро, а вполне себе $89/71/53 за 1/2/3-й год, если покупать для себя).

                          Со средствами разработки для оракла вообще как-то совсем уныло
                          Имхо ни один настолько не дотягивает даже до стандартного бесплатного SSMS, что вот прям хочется взять и расчехлить теорию заговора пожирней да понажористей.
                          0
                          Забыта интеграция в Visual Studio.

                          A IDEA только вчера ставил в виртуалку. Реакция по секунде на некоторые! клики бесит (проверил сейчас — по клику на коде — 1.5с — но это с плагинами, буду разбираться). И 1Гб рабочего набора памяти для хелловорлда (
                            +1
                            IDE сделанная на Java, вы чего то другого от нее ожидали?
                            0
                            Еще забыта dbForge Studio for Oracle от devart. Когда-то пользовался, весьма неплохой продукт был.
                              +1
                              Oracle SQL Developer для работы не требует oracle client, и вообще может работать как портейбл IDE.
                                0
                                Intellij тоже — там же все через JDBC
                                +2
                                Тема интересная. Дополню мнением об Oracle SQL Developer.
                                С 2009 до 2013 года работал исключительно в TOAD. Oracle SQL Developer сильно подтянулся к 2015-2017 году. Поправили много мелких багов, интегрировали все тулы, например, моделирование, версионирование и др.

                                При написании кода вставляю все атрибуты исследуемого объекта и вокруг них пишу код. Получается эффективнее, чем нервничать из-за непоявляющихся окошек.

                                Время появление окошка автодополнения по ctrl+пробел можно настроить.
                                Если в настройках отключить неиспользуемые модули, например миграция, дампы и т.п., выбрать тему ОС, то инструмент работает сильно быстрее и окошки появляются активнее.

                                К отладке пакетов нужно приловчиться, всё ещё остаются некоторые моменты.
                                Однако, наличие модулей моделирования, планировщика, экспорта и пр. считаю сильным преимуществом, т.к. экономится много времени. Много работаю с данными, вставить из экселя, импортировать/экспортировать, файл закачать в blob — это одна из причин окончательного перехода к Oracle SQL Developer.

                                Версионирование csv и git есть встроенное, одно время использовал, но самому через файловый менеджер как-то надёжнее получается.

                                Остаётся момент с сессиями. Бывает, долго выполняется запрос или подвис, то подвисает весь Oracle SQL Developer, а там, например, код остался, модель и джоб запущенный. Помогает оставить в покое в таком состоянии, редко даже день-два. Открыть второе окно, спровоцировать ошибку в выполняемом коде или просто другую работу делать и в 99% всё возвращается. Но это не серьёзно для такого тула.
                                  +2

                                  Это не проблема sql developer, это проблема Oracle JDBC Thin Driver. Он не умеет cancel запросов до того как он верну хотя бы одну запись. Как лечить: поставить Oracle сlient и использовать thick JDBC драйвер/OCI. После настройки — запросы прерываются в любой момент, ничего не подвисает.


                                  Как настроить можно почитать например здесь: https://www.thatjeffsmith.com/archive/2019/04/sql-developer-19-1-connections-thick-or-thin/

                                    +1
                                    OJDBC Thin прекрасно умеет отменять запросы. Проблема тут скорее всего в другом.

                                    Драйвер поддерживает несколько режимов отмены запроса. Самый продвинутый (out of band breaking) — через TCP-пакет с флагом urgent. Как только БД получает его, она прерывает запрос. Проблема в том, что некоторые активные участники сети любят сбрасывать этот флаг у пакета, в итоге отмена не срабатывает. В нашем компании именно так обстоит дело: что-то сбрасывает этот флаг. Проблема довольно популярная, по-моему в оракле версии 18 при установке соединения драйвер и база проверяют, нормально ли проходят urgent-пакеты. Если нет, то откатывается на старый режим работы, при котором запросы работают чуть медленнее, но при этом отмена работает стабильно. Запросы действительно работают медленее, мы гоняли тесты в разных комбинациях, и запрос из таблицы с сортировкой без индекса работал на 10% быстрее в случае thin. Где-то я читал, что это связано с необходимостью дополнительных опросов в БД, но подтверждений этому я не нашел, хотя на правду похоже.

                                    Если драйвер начал использовать out of band breaking, а пакеты urgent режутся, то отмена произойдет в тот момент, когда БД отправит первый пакет клиенту, и у клиента появится возможность отправить серверу информацию о том, что уже хватит (как раз потому у вас происходила отмена после первой строки).

                                    У thin можно принудительно включить такой же режим работы как и у thick, это делается через свойство oracle.net.disableOob. Выставьте его в true и проверьте, отмена может начать работать.
                                  +1

                                  В TOAD есть возможность указывать для bind-переменных типы и направление(in, out, in out).

                                  Очень удобно для каждого типа такие настройки выставить, например.
                                  Как это сделать в IDEA? Оно не умеет ни в направление, ни в тип. Или я не правильно делаю?


                                  Еще в TOAD можно открыть, например, код процедуры/функции/чегоугодно прямо из редактора. Выделяешь нужный элемент, жмешь F4. Это так же полезно если знаешь как называется нужный элемент, например функция myfunc, пишешь её в редакторе, жмешь F4, открывается её код. В IDEA такого нет или я не нашел? Остается только возможность искать в дереве объектов.

                                    +1
                                    По поводу второго:
                                    Ctrl + Alt + G (откроется в отдельном табе)
                                    Если держать Ctrl + клик на функции/объекте, то откроется в дереве объектов
                                    (Это в DataGrip. IDEA по-моему всё-таки для Java, а работа с бд там немного сбоку приделана).
                                      +1
                                      1. Про параметры: в IDEA сейчас подстановка происходит без участия JDBC, на нашей стороне. Обработки bind-переменных при помощи JDBC драйвера нет. Напишите, пожалуйста, реквест: youtrack.jetbrains.com/issues/DBE

                                      2. Есть несколько способов. Самый простой, нажимать на объекте в коде Ctrl+Q, откроется попап с важной информацией, в том числе DDL.
                                      Если DDL надо поправить, нажимайте Ctrl+Клик или Ctrl+B — откроется редактор исходника.
                                      А если надо сгенерировать DDL с разными опциями, например, для миграции — тогда уже используйте полноценный генератор Ctrl+Alt+G.
                                      Подозреваю, что ваш случай первый.
                                      0
                                      Поддерживаю. Тем более, что полноценная руссифицированная версия бесплатна для некоммерческого использования.
                                      И про dbeaver ещё забыли.
                                        +3

                                        Тоже лет 5 как перешел на Sql Developer.
                                        Проблему зависания как решать описал выше.


                                        К плюсам могу отнести:


                                        • отличная работа с планами запросов (можно например сравнить планы и увидеть чем отличаются, различия выделяются красным)
                                        • аналог set autotrace on также с возможностью сравнения статистки разных версий запросов
                                        • встроенные data modeler (ER диаграммы, генерация Oracle кода для конкртеной версии, реверс инжениринг)
                                        • куча утилит по экспорту импорту, захвату DDL и прочее
                                        • нормальный монитор сессий
                                        • sql monitor (мониторинг запроса в стадии выполнения)
                                        • отличный отладчик
                                        • наличие плагина для unwrap
                                        • интеграция с git (нужна не для коммитов, а что бы посмотреть различия от предыдущих версий)

                                        Отдельными фишками выделю не профильные для разработчика вещи:


                                        • нормальный DBA раздел с мониторингом а ля Quest Software, AWR и ASH
                                        • встроенный мини репортинг модуль, можно сделать простенькие отчеты и использовать их для типовых запросов
                                          0
                                          Если TOAD не нравится, в основном, из-за цены интерфейса, то можно посмотреть еще SQL Navigator от того же производителя.
                                            +1
                                            Привет! Я Максим из DataGrip. Спасибо огромное за статью. У нас есть пара комментариев.

                                            1. Цена 199 долларов — для компаний. Не знаю, это ли вы имели в виду, но иногда случается, что люди не замечают, что цена за первый год, если вы покупаете IDE себе — 89 долларов.

                                            2. Автодополнение. Это та область поддержки кода, которой мы очень гордимся, поэтому было бы круто, если бы вы показали нам случай, когда DataGrip не дополняет то, что вы хотели. Кстати. По Ctrl+Space окно автодополнение покажется и у нас :)

                                            3. Про специальный режим отображения результатов селектов, когда поля идут в столбик, а в соседнем столбике одна строка данных – это есть, на редакторе данных нажмите шестеренку и далее Transpose. Еще ознакомиться с полями поможет список полей по Ctrl (Cmd)+F12.

                                            4. Про таймстемпы в Output — если это мешает, создайте пожалуйста реквест у нас в трекере. youtrack.jetbrains.com/issues/DBE

                                            5. Дерево объектов: поиск у нас есть, просто начните печатать. Фильтрация тоже: если по имени, напишите шаблон в свойствах источника данных. Если по типу, кликните вороночку на тулбаре. Вообще, поиск объектов есть откуда угодно: в IDEA можно вызывать Go To Symbol (Shift+Ctrl+Alt+N или Alt+Cmd+O) и написать там название таблицы. В DataGrip вместо go to class есть go to object (Ctrl+N или Cmd+O).

                                            6. Вообще, вы написали, что проводник у нас не очень, но не описали почему конкретно. Мы были бы рады, если бы вы рассказали, что неудобно.

                                            7. Куда слать пиво?
                                              0
                                              1. Да, что-то такое слышал. На самом деле, у меня даже была лицензия на IDEA, оформленная на меня (подарок на ДР).

                                              2. Да, проверил еще раз, всё работает. Просто довольно долгое время пользовался Oracle SQL Developer, где эта функция не работала, и отвык. Видимо, даже не попробовал. А вот подсказка по аргументам функций как у PL/SQL Developer есть? Я только не помню, где я видел это — то ли в PL/SQL Developer, то ли вообще в Lazarus. Там была, помнится, совершенно очаровательная вещь: когда пишешь вызов функции и курсор стоит внутри скобок, ниже отображается окно с подсказками, в котором есть список названий аргументов и их типов, и вдобавок жирным выделен агрумент, на котором курсор стоит сейчас. Если у вас такого нет, напишу реквест. Пока же все IDE прячут подсказки, когда имя функции уже написано, и курсор стоит в скобках.

                                              3. Попробовал. Выглядит круто, спасибо, то что надо.

                                              4. Практически не мешает с тех пор, как я обнаружил, что можно выделять текст мышкой, удерживая Alt. Ну может и напишу.

                                              5. Спасибо, надо попробовать.

                                              6. Ох, ну и запросы у вас ;) Это материал на целую статью. Кроме того, тут в комментариях уже много написано всяких советов, нужно их сначала переварить. Из того, что сразу приходит в голову, хотелось бы видеть в списках объектов внутри схемы ДБ линки (вчера как раз искал их и не нашел), публичные синонимы, индексы и триггеры.

                                              7. Это был шуточный намек на то, что статья — моя частная инициатива, никак не связанная с JetBrains (уж не знаю, насколько удачный). Живу я от вас далековато (в одной маленькой, но гордой западноевропейской стране), но если будете у нас на колыме — милости просим, пиво тут хорошее.
                                                +1
                                                2. Подсказки по параметрам есть, обычно они появляются автоматом. Если нет, то вызывайте их по Ctrl(Cmd)+P.

                                                6. Вроде все есть, кроме ДБ Линков (про них тут youtrack.jetbrains.com/issue/DBE-4588). Индексы и триггеры в нодах соотвествующих таблиц.

                                                7. Ну вы напишите в личку где вы, заглянем при случае :)
                                                  0
                                                  2. Попробовал. По ctrl+P действительно появляется, но работает очень неудобно. Напишу баг-репорт.

                                                  6. Да, посмотрел, действительно есть. Не понравилось, что там идет всё вперемешку. Столбцы, констрейнты, индексы, у разных типов вдобавок разные иконки, всё сливается. Может, лучше сделать подкатегории? Столбцы показывать сразу, как только кликаешь на треугольник у имени таблицы, а индексы, констрейнты и прочее показывать отдельными подкатегориями, свернутыми по умолчанию?

                                                  7. Отправил.
                                                    +1
                                                    6. Нажмите шестеренку — Group Contents (вроде это дефолтный флаг). Все сгруппируется по папочкам.
                                                    0
                                                    6. Либо я не разобрался, либо ваш модуль не поддерживает синонимы на соседние схемы, даже в пределах одного физического инстанса. В редакторе — краснота сплошная.

                                                    От себя:
                                                    8. Визуальный редактор таблиц слишком примитивный, чтобы им пользоваться по-взрослому. Нет триггеров, нет чеков, нет грантов.
                                                    9. Аналогично и с объектами — через интерфейс особо ничего и не сделаешь, всё ручками.
                                                    10. Огромные тупняки на больших схемах. Полная синхронизация занимает с десяток минут, а by lazy не предусмотрено (либо запрятано глубоко в настройках и мы её не нашли). В итоге хочешь обновить данные после добавления поля в таблицу, и получаешь полумертвую IDE на 5-10 минут (и хорошо, если схему SYS еще не присоединил для линковки).
                                                    11. Нет вменяемого средства ручного запуска процедуры/функции. Просто поглядите в PL/SQL Dev в окно «Test» и сделайте так же — стационарное окошко с возможностью подставлять аргументы и прочитать курсор в обычное окно результата. Вам очень многие спасибо скажут. Пока это одна из двух штук, из-за которых мне приходится держать открытым старую тормозную прогу — у нас половина кода проекта в процедурах БД.

                                                    Резюмируя — просто попользуйтесь PL/SQL Dev чуть более, чем на домашний проект с парой таблиц — и будет заметно, чего не хватает в Идее/Грипе.
                                                      0
                                                      6. Либо я не разобрался, либо ваш модуль не поддерживает синонимы на соседние схемы, даже в пределах одного физического инстанса. В редакторе — краснота сплошная.
                                                      У нас тоже все на синонимах, но все распознается. У меня тоже была проблема с тем, что все было красное, когда открывал *.sql файлы с диска. Эта проблема решается примерно так: нужно поставить курсор на любое красное слово, слева появится (может не сразу, а через секунду) кнопочка, на которую нужно ткнуть, появится меню, там нужно выбрать «Attach session». После этого в правом верхнем углу редактора кода появится выбор схем. Выберите нужную схему, должно заработать.

                                                      10. Огромные тупняки на больших схемах.
                                                      Да, такое есть, и раздражает, кажется, вообще всех. Я уже месяц собираюсь написать реквест. Может, сегодня напишу.

                                                      Резюмируя — просто попользуйтесь PL/SQL Dev чуть более, чем на домашний проект с парой таблиц — и будет заметно, чего не хватает в Идее/Грипе.
                                                      В этом самая большая сложность разработки специализированного ПО. Очень тяжело высасывать из пальца задачу, приближенную к боевой, а потом смотреть, чего не хватает. Проще собирать фидбек от пользователей.
                                                        0
                                                        11. А запускатор, который работает по Контекстное меню — Run function вас не устраивает?
                                                  +1
                                                  Всё то, о чём вы пишите есть и в PL/SQL Developer в том или ином виде.

                                                  Live Template — в PL/SQL Developer, и переменные можно в шаблоны вставлять, и курсор размещать в заданной позиции (через [#]), посмотрите документацию

                                                  Refactoring — в PL/SQL Developer работает именно так, как вы описали, переименовывает правильно имена объектов и переменных

                                                  Code Inspection — про расширяемость не в курсе, но в PL/SQL Developer все эти ворнинги при компиляции есть, и неиспользуемые переменные и многое другое

                                                  Запуск скриптов — PL/SQL Developer умеет прямо из IDE запускать SQLPlus с кредами текущего соединения к базе, очень удобно для запуска скриптов. Про подсветку синтаксиса для скриптов ничего не знаю, скорее всего её нет.

                                                  Usability — интерфейс PL/SQL Developer очень отзывчивый и не жрёт память, тёмной темы нет, это да…

                                                  Для тех, кому интересно рекомендую 2 статьи по детальной настройке PL/SQL Developer под себя:
                                                  www.williamrobertson.net/documents/plsqldeveloper-setup-1.html
                                                  www.williamrobertson.net/documents/plsqldeveloper-setup-2.html
                                                    0
                                                    Это круто, если все это есть. А в какой версии появились Live Template, Refactoring и Inspections? Как я уже говорил, последняя версия, которой я пользовался — это та, которая была доступна для установки в декабре 2012-го. Тогда их то ли не было, то ли они были не на виду.
                                                      0
                                                      По-моему все эти вещи там с начала времён, лет 10 уже наверное
                                                      0
                                                      К сожалению ссылки не рабочие.
                                                        0
                                                        Проверил, всё открывается по клику, возможно у вас что-то где-то заблокировано.
                                                        0
                                                        У PL/SQL Dev тормоза есть. Просто зависят они от соединения с БД. Если соединяться с огромной и медленной тестовой БД через хреновый интернет и тоннели — у вас довольно быстро сдадут нервы.
                                                          0
                                                          Есть такая проблема.
                                                          В таких случаях я отключаю автоматическое автодополнение, оставляю по кнопке.
                                                          Отключаю Show dictionary info in result grid в настройках и работа становится значительно приятней.

                                                          Как эта проблема решена в DG?
                                                            0
                                                            Там всё оффлайн кешируется. Ну и потоки, разумеется. У старых приложений на дельфи обычно с потоками всё плохо — потому что их не делают.
                                                        0
                                                        Plsql developer может делать пробную компиляцию пакета или функции под случайным именем. Если ошибок не было, то делает компиляцию под правильным именем. Это резко уменьшает время простоя при групповой работе.
                                                          0
                                                          Интересно, конечно, но эта функция может понадобиться, только если у вас полный хаос в процессах разработки и тестирования. При нормальной организации процесса и использовании систем контроля версий сам факт попадания на продакшен кода, который не компилируется, практически исключен.
                                                            0
                                                            Ну допустим у вас есть сервер разработки, на котором много пакетов и десяток разработчиков. Кто-то что-то будет компилировать и мешать другим.

                                                            Чтобы совсем никто не мешал — надо каждому разработчику делать свою изолированную базу.
                                                              0
                                                              Ну, у нас именно так и есть.
                                                              У нас есть один сервер для разработки, один для тестирования, один — копия продакшена и последний — собственно продакшен. На копии прода мы тестируем установку. Если там она пройдет, значит и на настоящем проде пройдет. А на девелоперской среде проблема мешания друг другу решена с помощью синонимов. Есть одна схема с таблицами, и есть схемы для разработки, где вместо таблиц — синонимы, которые ссылаются на основную схему. Можно держать параллельно несколько схем для разработки с разными версиями пакетов и править их назависимо друг от друга.

                                                              Вот несколько лет назад я работал в одном проекте, где все было на одном инстансе. Одна схема — прод, одна — дев. И крутись как хочешь. Вот там да, было весело. Я уж думал у вас что-то вроде такого.
                                                                0
                                                                У нас есть один сервер для разработки, один для тестирования, один — копия продакшена и последний — собственно продакшен.


                                                                Все абсолютно так,

                                                                Только последнее время удалось каждому разработчику выделить изолированную базу GIT+DelphiX. То есть разработчик скачивает код с репозитория GIT, дописывает его и тестирует на своей изолированной базе. По желанию разработчик может стереть свою базу и закачать снимок боевого сервера. Потом через GIT отправляет на процедуру слияния с боевым сервером. Этот код пропускают через тест и раз в неделю делают слепок для выкатывания на прод. Финальный слепок тоже тестируют некоторое время перед выкладкой. Плановая процедура выкладки занимает 2 недели. Но стабильность работы очень высокая. Через GIT видны абсолютно все правки каждой строчки, виден автор и по какой задаче работал.
                                                            0
                                                            а где это включить?
                                                              +1
                                                            +1
                                                            В течение 12 лет я ежедневно работал с Oracle и писал тонны серверного кода для крупных финансовых систем. Подолгу использовал все перечисленные IDE, знал их сильные и слабые стороны, но основным инструментом всегда оставался «PL/SQL Developer», а остальные были про запас, just for fun. На мой взгляд, для разработчика — это лучший выбор. Если, конечно, вы работаете на Windows. Если её грамотно настроить и установить нужные плагины, то скорость работы в этой IDE становится просто умопомрачительной. Всё на хоткеях, код буквально сам пишется при помощи автозамен и сниппетов, абсолютно все настраивается и великолепно расширяется. А если всё равно чего-то не хватает, написать свой плагин — раз плюнуть. Я написал 5 штук на Delphi и был просто счастлив.

                                                            Теперь хочу бросить маленький камушек в сторону DataGrip. Среда отличная, конечно же, и я использовал в редких случаях её немного урезанную версию в составе IntelliJ IDEA Ultimate. Но именно для работы с Oracle она мне в своё время не подошла по двум причинам.
                                                            1. Тормоза при работе с большими схемами
                                                            Например, в системах на основе OeBS бывают сотни тысяч объектов в схеме (в моей продакшн БД в то время было более 300.000 объектов). DataGrip при старте пытается все это дело закешировать и поэтому надо сидеть и ждать пока она прогреется. Потом, все работает очень медленно и железка заметно напрягается и греется. Это и понятно, ведь основная фишка всех сред от JetBrains — это понимание контекста и инспекции. Но иногда это вредит.
                                                            PL/SQL Developer, в свою очередь, достает метаданные из БД (и кеширует их) по запросу, в первый момент обращения к объекту, так что ждать ничего не нужно.
                                                            2. Не поддерживает Java-source пакеты в БД
                                                            Возможно, эту фичу уже завезли, тогда прошу прощения. Но проверить возможности нет, т.к. с Oracle больше дел не имею. Уже лет 5 и на работе и дома на 100% только open source и, соответственно, основная производственная СУБД это Postgres. А моя рабочая кросс-СУБД среда теперь «SQL Workbench/J» и несколько консольных для работы в терминале. Единственный «закрытый» продукт, который я использую, это IntelliJ IDEA, в которую я влюбился 15 лет назад и с удовольствием плачу за лицензию :)
                                                              0
                                                              1. Такая проблема есть, мы о ней знаем: youtrack.jetbrains.com/issue/DBE-9639
                                                              2. Про java пакеты я даже тикета не нашел. А что значит не поддерживается? Исходник не достается?
                                                              3. А что вам сейчас, на постгресе мешает использовать Idea/DataGrip? Тормозов в интроспекции нет, а мы явно помощее :)
                                                                0
                                                                Пункт 2.
                                                                Как я написал выше, «Возможно, эту фичу уже завезли, тогда прошу прощения». Давно не работал с этим функционалом.

                                                                Далее по пункту 3.

                                                                Честно говоря, как-то все чересчур запутанно, непрозрачно. Концепция выбора активных data source/database/schema для консоли просто убивает.

                                                                У меня много PostgreSQL баз, в каждой из них несколько десятков схем, доступные разным ролям. Есть схемы с только с хранимыми процедурами (для эмуляции пакетов Oracle). Я обычно имею открытыми около 10 окон с кодом для разных бизнес-областей (например, для разных микросервисов или их кусков). Все окна имеют отдельные коннекты и разные настройки (авто-коммит, уровень изоляции и т.п.). Я постоянно переключаюсь между несколькими кластерами/базами с похожими схемами (но всё-же они отличаются).

                                                                1) Когда я переключаюсь на новую БД, я делаю это глобально. Это означает что я хочу чтобы все окна сразу закрыли коннект, и после этого, когда я отправляю первый запрос в любом окне, то это окно открывает новый коннект с текущей выбранной БД.

                                                                Да, вы поддерживаете возможность подключения к нескольким БД параллельно, но из моего опыта — это является источником граблей. Я и сам наступал, и много раз видел как другие по ошибке изменяют не ту БД, с которой, как им кажется, в данный момент работают. Цветные метки помогают, конечно, но не сильно.

                                                                2) Я не хочу кликать мышкой десятки схем только для того, чтоб заработало авто-дополнение. Если же я отмечаю только «Current schema», то авто-дополнение не будет работать для других схем, даже если всегда указывать имя схемы. И как установить эту текущую схему, не кликая мышкой? Кажется, никак. Это, наверное, самый неприятный момент. С другой стороны, мне совсем не нужны все схемы, особенно системные, поэтому вариант «All schemas» меня не устраивает. Слишком много лишней информации.

                                                                3) Если я выполню запрос «set role xxx», я хочу чтоб для текущей сессии автодополнение работало для всего, что доступно этой роли. До тех пор пока я не переключился на другую (set role yyy).

                                                                Я пишу «select * from xxx.» и теперь при нажатии на Ctrl+Space я хочу видеть доступные мне объекты схемы xxx и только. А если я не указал схему явно, что ж, для этого есть search_path (по умолчанию search_path = '"$user", public').

                                                                Даже если я знаю имя таблицы, все равно автодополнение не работает! Пример: «select * from xxx.yyy as t where t.» -> «ctrl+space» -> вываливается огромный список встроенных функций. В конце списка присутствуют некоторые системные поля типа ctid, а больше ничего! В общем, интроспекция просто не работает. Не могу же я каждый раз лазить по интерфейсу, менять настройки схем, потом нажимать refresh и ждать.

                                                                Нет времени больше писать, но есть и другие претензии. Поэтому из GUI тулзов я остаюсь на «SQL Workbench/J» как на наиболее адекватной из всех сред под Linux, что я пробовал. Там все работает ровно так, как это ожидается, без сюрпризов.

                                                                Ну и конечно, без консольных клиентов никуда, у меня всегда открыто несколько терминальных окон к разным БД (для Postgres это psql, pgcli). Они работают намного быстрей любых GUI сред, особенно что касается показа метаданных объектов и автодополнения кода.
                                                                  0
                                                                  Касательно моего повествования о неработающем автодополнении нужно, конечно, пояснить, что я исхожу из предположения, что предзагрузка метаданных не активирована. Но, по моему мнению, это не должно исключать автодополнение полностью, а лишь замедлять его.

                                                                  Кроме того, предзагрузка метаданных по определению не может учитывать доступность объектов для разных ролей. Если в одном окне роль X даёт грант на объект роли Y, то в другом окне (сессии) для роли Y должно заработать автодополнение. И это работает во многих GUI.

                                                                  Таким образом, для подобных моему сценариев использования было бы неплохо иметь возможность переключаться в режим real-time интроспекции, с возможностью быстрого сброса кэша по хоткею.
                                                                    0
                                                                    Спасибо за комментарий!

                                                                    1. Ваши чаяния понятны, но переключение базы во всех вкладках сразу уж очень противоречит тому, как устроена у нас работа. Уверен, что сделай мы такое, мы получим много фидбека :)
                                                                    В вашем случае, если цветовые метки не помогают и режим read-only для источника тоже не то, что нужно, я бы посоветовал использовать под каждую базу своей проект. Захотели переключить базу? Открываете нужный проект.

                                                                    2. Установить текущую сехму, не кликая мышкой можно вызвав действие Switch schema. У меня лично на него замаплен шорткат Cmd+Up.

                                                                    3. Real-time автодополнения у нас действительно нет. И я не думаю, что оно появится в ближайшем будущем. То есть, если объекта нет в дереве — его нет в автодополнении. Это базовая вещь для нас :) Исключение составляют системные объекты, о которых мы можем знать заранее.
                                                                    Может быть вам поможет небольшой финт: если имена объектов засунуть в соседний текстовый файл, то будет работать дополнение по словам: Alt+/

                                                                    У нас даже тикета нет на real-time completion, никто не просил. В целом, думаю, это будет очень медленно, а наша фишка как раз в том, что дополнение почти мгновенное.

                                                                +1
                                                                Большую часть жизни разработчиком и админом работал в PL/SQL Developer.
                                                                Просто пара тонкостей по памяти, которых не было в других инструментах:
                                                                — В настройки подсветки синтаксиса можно внести свои слова. Для этого обычно выбирал из all_objects имена объектов, дополнял именами имеющихся колонок из all_tab_columns, вставлял список туда, а в настройках подсветки ставил особый цвет.
                                                                — Очень полезна работа с записанными текстовыми макросами. Тупо пример — на какой-нибудь «Alt+S» назначить вывод «select * from ». Или на что-нибудь типа «Alt+D» выводить «to_date('','dd.mm.yyyy') и курсор поставить в первые апострофы. Особенно часто нужно второе. Для тех, кому совесть не позволяет написать „where start_date > '01.01.2001'“

                                                                Но были и весёлые приколы. Если у объекта (таблицы) в браузере раскрыть „Granted to“, то там можно на пользователе по ПКМ найти пункт „Delete“. Который (тадам!!) удаляет пользователя. И хорошо. если это была не схема с объектамми.
                                                                А чел. хотел просто отнять у него грант :)

                                                                0
                                                                Давно пользуюсь PL/SQL Developer, интерфейс, конечно, староват, но путь программиста я начинал с паскаля и дельфи, так что привычный. Прога потрясающая, достаточно удобная. Есть пара штук, которые раздражают, но пользоваться можно.
                                                                С выходом IDEA 2017 начал пользоваться её БД-модулем. Да, это по прежнему Идея, с её огроменной юзательностью. Но вот PL/SQL Dev всё еще приходится использовать.

                                                                1. Объекты. С ними всё плохо, в интерфейсе ты можешь, по сути, только посмотреть и дропнуть. Создавать проще в консоли.
                                                                2. Редактор таблиц. Основные правки можно делать и в редакторе. Но такие правки с легкостью делаются и в консоли. А то, что в консоли делается сложнее — в интерфейсе недоступно. Гранты не посмотреть, чеки не изменить, с триггерами тоже не всё так однозначно.
                                                                3. Самая большая проблема, от которой вешаемся всем отделом. Синхронизация. У нас в БД порядка 300+ таблиц, и 150+ пакетов. Не говоря уже об объектах, функциях/процедурах без пакета, и прочей шелухи. И вот когда ты хочешь обновиться — тебе приходится обновлять ВСЁ. Занимает это больше 5 минут — я успеваю надеть куртку, спуститься с 4го этажа и пройти пол сотни метров к месту перекура, покурить, вернуться, налить кофе. Только тогда оно гарантированно уже обновится. Парни из ДжетБреинс, можете что-то с этим сделать? Тот же PL/SQL Dev делает это всё раздельно, и на порядки быстрее.
                                                                4. DB-link и синонимы. Всё просто — их поддержки нет. В редакторе гиперемия.

                                                                В итоге я пользуюсь в Идее только консолью. Иногда диспетчером объектов. Но пользуюсь, ибо проще и удобнее остального софта.
                                                                PS: Автор, а ты забыл еще и про автоформатирование стиля кода — это половина юзабельности Идеи.

                                                                PPS: После написания комментария пошел прогать, и вспомнил, чего мне еще не хватает — тестирования функций. Нельзя просто так взять и вычитать курсор из функции в интерфейс Идеи.
                                                                  0
                                                                  Автор, а ты забыл еще и про автоформатирование стиля кода — это половина юзабельности Идеи.
                                                                  Вообще-то нет, не забыл. Но про это у меня всего одно предложение:
                                                                  Настройки форматирования SQL и PL/SQL тоже есть у всех, более-менее одинаковые по мощности, и превью тоже есть.
                                                                  Настройки форматирования у IDEA очень мощные, но прикол в том, что у всех остальных они такие же мощные. Можно было бы развернуть мысль шире, но я подумал, что любой, кто настраивал хотя бы одну IDE, уже знает, что там, а тут я просто написал, что у остальных не хуже.
                                                                  Пожалуй, забыл только упомянуть, что у IDEA есть две фишки:
                                                                  — форматирование при вставке (ctrl+V) — вставляемый кусок форматируется, отступы корректируются под место вставки
                                                                  — если написать селект, потом перед ним написать «select * from (», а после него — закрывающую скобку, то после скобки IDEA сама форматирует этот селект, оказавшийся внутри, и это нечеловечески удобно. Два пива тому, кто это придумал! ;)

                                                                  Нельзя просто так взять и вычитать курсор из функции в интерфейс Идеи.
                                                                  А кстати, у кого еще кроме TOAD есть эта функция?
                                                                    0
                                                                    А кстати, у кого еще кроме TOAD есть эта функция?

                                                                    Да, у PL/SQL Dev это есть. Достаточно на имени функции ткнуть ПКМ, и выбрать Test. Причем, если пакет собран с дебажной информацией — то возможен полноценный дебаг.
                                                                  +1
                                                                  Хотел дополнить материал еще несколькими маленькими фитчами, которые нашел только в Alt\SQL Developer’е. Я понимаю что большинству даже в голову не могло прийти, что это кому-то нужно, но лично в моем случае они стали решающим фактором выбора IDE. И так:
                                                                  1. Только в Alt\SQL Developer’е есть режим «Direct Mode», который позволяет подключаться к Бд без установленного клиента Oracle. Если учесть, что и сама программа умеет работать в portable режиме – иногда очень выручает при авральном режиме правки багов.
                                                                  2. В Oracle есть возможность именование объектов не только TABLE1.FIELD1, но и «TaBle1».«Field1». Во втором случае, обращаться нужно именно в таком регистре(и с кавычками), каким и был создан объект. И даже больше, такой способ позволяет использовать почти любые символы, включая кириллицу и пробелы. «Таблица номер 1».«Поле номер 1» – считается корректным для Oracle, но, как оказалось, не для абсолютного большинства IDE. Так вот, в Alt\SQL Developer’е подсказка с такими таблицами и полями работает правильно. (я понимаю что это может выглядит абсурдно, но вы и представить не можете с каким legacy-кодом иногда приходиться работать).
                                                                  Успешно использую сию програмульку уже больше 4-ох лет и держу связь с разработчиком.
                                                                  P.S. Если кому то интересно, темная тема сейчас на стадии беты.
                                                                    0
                                                                    Спасибо за комментарий, интересно было послушать человека, который использует Alt SQL Developer.

                                                                    1 — есть у IDEA и Oracle SQL Developer.
                                                                    2 — ни разу не встречал, чтобы такое именование объектов использовалось на практике, то идентификаторы в кавычках должны понимать вроде бы все.

                                                                    P.S. Если кому то интересно, темная тема сейчас на стадии беты.
                                                                    Это вообще супер, можете мне написать, когда фича будет готова? Можно в личку.
                                                                      0
                                                                      По пункту 1, нечто похожее есть и у PL/SQL Developer.
                                                                      Он может работать с Instant client вместо стандартного.
                                                                      — Качаете Instant client здесь www.oracle.com/database/technologies/instant-client/downloads.html
                                                                      Например Basic Light Package занимает всего 40 мб. Если вам надо дополнительно SQL Plus и прочие утилиты их там же можно скачать.
                                                                      — Распаковываете в любое место
                                                                      — В ярлыке к запуску программы указываете путь через параметр InstantClient, например вот так ...\plsqldev.exe" InstantClient=C:\oracle\product\instantclient_18_3

                                                                      И всё, полный клиент на гигабайты — не нужен.

                                                                      Можно добавить этот путь в PATH. Параметры TNS_ADMIN, SQLPATH, NLS_LANG и прочие (если надо) устанавливаете через переменные окружения в Windows.
                                                                        0
                                                                        Да, я знаю об Basic Light Package, и использую его для своих программ. Даже скажу больше, там для полной работы программы нужно всего 5 файлов:
                                                                        oci.dll
                                                                        oraocci18.dll
                                                                        oraociicus18.dll
                                                                        oraons.dll
                                                                        orasql18.dll
                                                                        Чтобы не изменять ярлык – в PL/SQL Developer есть в настройках папка с клиентом.
                                                                        А если говорить о любой программе – то эти файлы достаточно кинуть рядом с exe-шкой.
                                                                        Когда мы говорим об настройке своего личного рабочего места, то здесь это не проблема. Но если возвращаться к моему посту – я писал об авральном режиме, если есть комп и не всегда даже права администратора.
                                                                        В случае с Alt\SQL Developer: Сайт -> Скачать Portable – работаем (проверяем количество активных сессий или почему истек пароль на схему, и кто за это получит по голове)
                                                                        В случае с PL\SQL Developer: Сайт программы –> Скачать –> Сайт Oracle -> Скачать -> распаковать -> Изменить Path -> сайт Microsoft -> скачать vc_redist.x64.exe (Да, без него клиент не работает) – работаем. На это все нужно время и права Администратора.
                                                                    0
                                                                    Может кто в курсе, как в idea изменить timezone?

                                                                    Если поле таблицы имеет тип
                                                                    … WITH LOCAL TIME ZONE
                                                                    idea по-умолчанию использует UTC.
                                                                    Где его можно изменить?

                                                                    Toad/ plsql developer видимо автоматом тянут Europe/Moscow из винды
                                                                      0
                                                                      Лучше спросите у разработчиков. Они тут тоже пишут и отвечают в каментах (возможно, с удовольствием ;) ) Например, вот: habr.com/ru/company/JetBrains/blog/478014

                                                                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                    Самое читаемое