Команды sql можно вводить и выполнять с помощью компонента в приложении apex
Существуют ли "лучшие практики" для вызова хранимой процедуры из APEX вместо простого использования DB-Link?
1 ответ
Существует много деталей, связанных с разработкой надежных, поддерживаемых и эффективных решений, путем сопоставления хранимых процессов PL/SQL с веб-интерфейсом работы Application Express. Не зная текущего уровня квалификации автора ОП, я предполагаю, что наиболее полезным объяснением является простой пример, разработанный с нуля.
Решения по разработке приложений
Хранимые процедуры PL/SQL не нужны для разработки приложений на Oracle APEX, однако они обеспечивают большую гибкость и возможность настройки в процессе разработки.
В этом примере будет использоваться популярный объект схемы: EMP обычно доступно как дополнительная часть каждой установки базы данных Oracle. Если у вас его нет, вот источник DDL и DML для построения таблицы примера:
EMP Таблица (копия с псевдонимом: LAB01_SAMPLE_EMP )
Если вам нужны тестовые данные, вот с чем мне пришлось работать:
СОЗДАТЬ оператор обновления DML на основе SQL, который изменит SAL (Зарплата) значение для одного сотрудника за один раз на основе их ENAME ,
Оберните оператор UPDATE DML в повторно используемую скомпилированную хранимую процедуру PL/SQL. Включите аргументы параметров для двух значений ввода данных для "Имя" и "Сумма увеличения".
Проверьте хранимую процедуру и убедитесь, что она работает как требуется.
ПРОВЕРЬТЕ страницу APEX и убедитесь, что она работает как указано.
Программирование процесса SQL DML
Это начальный пример, созданный для выполнения этой задачи.
Краткий обзор показывает, как мы можем параметризовать подход, чтобы сделать это утверждение
Если вы не уверены, куда идти дальше, то здесь APEX предлагает урок по "лучшим практикам". Перейдите к OBJECT BROWSER и создайте объект процедуры. Приложение будет проходить через каждый шаг, чтобы настроить хранимый процесс PL/SQL.
Исходный код рабочей PL/SQL-процедуры:
После прохождения настройки мастера, это очищенная хранимая процедура. После отладки некоторых предупреждений об ошибках во время компиляции произошли некоторые дополнительные изменения:
ОРГАНИЗАЦИЯ важна. Изучите быстро некоторые соглашения в именовании и примечании, чтобы использовать в коде. Это будет держать вещи организованными и легко найти или ссылаться в другом месте.
RECYCLE and REUSE означает, что ваш код должен быть разработан с учетом повторного использования. Общие процедуры и процессы должны быть связаны друг с другом, чтобы избежать избыточности.
ВСЕГДА ИСПЫТЫВАЙТЕ, что ваша работа предполагает, что меньше разочарования обнаруживается, когда первоначальные, фундаментальные шаги в вашем процессе или приложении были тщательно проверены перед продолжением.
ТЕСТИРОВАНИЕ Oracle PL/SQL Процедура
Я использовал встроенный механизм сценариев APEX, найденный в SQL WORKSHOP раздел окружающей среды. Ниже приведен скриншот выходных журналов моего скрипта тестирования.
Собираем вместе: проектирование страницы приложения APEX с вызовом процедуры
Создайте или откройте приложение APEX и начните с создания новой страницы. Существуют процессы мастера системы, которые помогут вам начать работу, если вы еще этого не сделали.
Выберите опцию BUILD FORM на вершине STORED PROCEDURE , Появятся запросы на разрешение для создания элементов страницы, необходимых для входных параметров. Следуйте указаниям мастера до завершения, чтобы убедиться, что все зависимые элементы дизайна страницы включены.
Мой почти доработанный дизайн ниже:
Есть несколько дополнений, таких как REPORT регион, чтобы обеспечить немедленную видимость таблицы и любых примененных изменений в ее данных.
Форма в действии: тестирование ввода данных и результатов
SUCCESS Оповещение - это функция, доступная для определенных элементов страницы, чтобы информировать пользователя о любых значительных событиях, происходящих в базе данных.
Заключительные комментарии и обсуждение
В этом решении было несколько ярлыков (основанных на нескольких предположениях), и, возможно, было бы полезно обсудить их в качестве прощальной дискуссии о возможности пересмотра этого пошагового руководства для улучшения, EMP-2.0 проект.
Процедура работает на EMP таблица на основе поиска по ENAME , Что такое РЕАЛЬНЫЙ ключ этой таблицы? Есть ли какие-либо риски, связанные с этим подходом - возможно, в отношении больших наборов данных?
Большинство объектов Oracle PL/SQL, используемых в готовых производственных средах, имеют некоторый уровень перехвата ошибок или обработки исключений посредством PL/SQL EXCEPTION BLOCK , Какие ошибки вы бы хотели поймать? Как?
Не стоит недооценивать ресурсы, доступные в инструменте APEX. Существует множество мастеров, которые помогают разработчикам создавать различные функциональные модули кода. Эти автоматизированные руководства предоставляют решения, которые также могут быть перепроектированы, чтобы понять, как был сгенерирован код, а также какие общие подходы к проектированию делают шаблоны проектирования совместимыми.
Недавно я с удивлением обнаружил, что, оказывается, толковых туториалов по Oracle Application Express (он же APEX, он же апекс, но не путать с языком apex, который используется в Salesforce) в природе не существует.
Это не самая распространенная технология, конечно, но, тем не менее, довольно востребованная. Есть десятки блогов об апексе (англоязычные, в основном), пара тысяч вопросов на Stackoveflow, специальный раздел по апексу на официальных форумах оракла, сам апекс существует уже 15 лет и все время развивается. Я был уверен, что и хороших туториалов полно. Но нет!
Мне тут же пришла в голову гениальная мысль восполнить этот пробел.
Оглавление
Почему существующие туториалы — плохие
Я немного поясню, почему я считаю существующие туториалы плохими. Апекс — это не язык программирования, это такой очень высокоуровневый инструмент разработки, ближайшим идейным аналогом которого я бы назвал MS Access. Соответственно, большая часть разработки на апексе состоит из работы с веб-интерфесом этой среды: нажимания на кнопки, перехода по ссылкам, заполнение полей с названиями компоментов, выбора значений из списков и так далее. Что делает типовой туториал? Он показывает скриншоты этих самых экранов с подписями "нажмите туда-то". При этом сама IDE достаточно удобная и понятная, почти все элементы снабжены справочными пояснениями, есть встроенная помощь. В итоге, если нужно объяснить пользователю, как создать приложение, в туториале будет большой скриншот, объясняющий, как нажать на кнопку "Create a new app". Вот, посмотрите сами на официальный оракловый туториал:
Они бы еще объяснили со скриншотами, что "клик" — это однократное нажатие на левую кнопку манипулятора типа "мышь".
Конечно, полезная информация в таких туториалах тоже есть, но ее там крохи. Процентов на 80 туториалы состоят из таких вот скриншотов, причем по своему опыту я могу сказать, что человек, не читавший никаких туториалов вообще, самостоятельно найдет, как создать приложение, добавить страницу, поместить на нее отчет и так далее. А потом ему нужно будет организовать более-менее нетривиальное взаимодействие нескольких элементов апекса, и оказывается, что этот вопрос туториалом почти не покрывается. Приведу аналогию: вы только-только учитесь программировать, изучили переменные, массивы, циклы, условия, и получили задание, в рамках выполнения которого вам нужно отсортировать массив. Как-то отсорировать массив — достаточно просто, но как только задание усложнится до "отсортировать большой массив быстро", окажется, что имеющихся у вас знаний недостаточно. Погуглив, покопав Stackoverflow и форумы, вы найдете алгоритм быстрой сортировки. Конечно, кто-то и сам переизобретет этот алгоритм рано или поздно, но более эффективным путем было бы сразу прочитать книжку с разбором типовых алгоритмов. И вот как раз такого набора "типовых алгоритмов" для апекса обычно нигде нет, а на помощь приходят те же самые метод научного тыка, поисковики, форумы и Stackoverflow (и, я надеюсь, этот туториал).
Вводная информация
Предполагается, что читатель знаком с Oracle Database версии хотя бы с 11-й, SQL, PL/SQL и особенно с тем, что такое EXECUTE IMMEDIATE и как оно работает.
Я начну с обзора наиболее часто используемых разделов IDE. Я тоже покажу несколько скриншотов. Куда же без них, раз всё здесь сделано из визуальных компонентов. Но их будет не так много, как в плохих туториалах, и в основном они будут в начальных главах, а дальше я буду просто указывать название раздела IDE, в котором находятся необходимые вещи. Сразу обращу ваше внимание, что это просто первое знакомство с IDE. Более подробная информация о том, когда на какую кнопку нажимать и где что смотреть, будет дана дальше, когда я перейду к конкретным темам.
Обзор IDE
Стартовый экран, который вы увидите сразу после входа в IDE:
Главные элементы здесь — это 4 большие кликабельные картинки:
- "App Builder": это, собственно, то место, где можно создавать приложения и где вы будете проводить до 99% времени.
- "SQL Workshop": заменитель обычной IDE для работы с СУБД Oracle. Там вы можете посмотреть объекты БД (таблицы, индексы, пакеты, и т. п.) и выполнять SQL-запросы. Если у вас есть возможность делать все это через "обычные" IDE (вроде Oracle SQL Developer или PL/SQL Developer) — делайте через них. Тем не менее, этот раздел тоже может быть полезен и о нем я тоже расскажу.
- "Team Development": инструменты для командной разработки. Честно говоря, я ни разу не видел, чтобы хоть кто-то ими пользовался на практике (включая меня). Любопытства ради я туда тоже заглядывал и совсем бесполезным этот раздел я бы не назвал, хотя и очень хочется.
- "App Gallery": раздел с демо-приложениями. К тому моменту, когда он появился, я уже неплохо знал апекс и почти не заглядывал туда, но начинающим, думаю, это будет полезно. Там много разных простеньких приложений, на их примере можно изучать, как использовать те или иные возможности.
В меню в самом верху страницы продублированы эти же 4 пункта.
Кроме этого, есть еще несколько малополезных вещей: ниже есть некоторое количество статистической информации (типа наиболее часто редактируемых приложений или наиболее активных разработчиков). И есть колонка справа, где также немного статистики и дополнительных ссылок.
Рассмотрим App Builder и SQL Workshop подробнее.
App builder
Эта страница выглядит примерно вот так:
Основные элементы этой страницы: четыре большие кнопки как на предыдущей странице, список уже имеющихся приложений, правая колонка со списком последних измененных приложений и дополнительными действиями. Четыре кнопки — это:
- "Create": создать новое приложение. Эта же функция продублирована чуть ниже (синяя кнопка "Create" над отчетом со списком приложений). Кнопка запускает мастер создания приложений.
- "Import": импортировать приложение. Апекс позволяет переносить приложения с одного сервера на другой в виде текстовых файлов (которые, по сути, являются длииииными PL/SQL скриптами с вызовами функций создания всех элементов приложения).
- "Dashboard": малополезное сборище статистики разработки приложений. Кто, когда, где, сколько изменений сделал. Думаю, даже вашему начальнику будет неинтересно туда смотреть.
- "Workspace Utilities": набор дополнительных инструментов для управления приложением. Честно говоря, туда я тоже почти не заглядываю.
Так же хочу обратить ваше внимание на вот такую маленькую кнопочку в панели отчета:
Она переключает вид отчета с такого, как на скриншоте выше (с "картинками" приложений) на отчет в виде таблицы:
Похожие отчеты встречаются и в других разделах IDE. Я предпочитаю табличный вид, поэтому далее все скриншоты будут с ним.
После того, как вы создадите приложение или откроете существующее, вы увидите следующую страницу (очень похожую на предыдущую по структуре):
На эту страницу вы будете заходить очень часто, и полезных функций здесь тоже очень много. Большие кнопки с картинками:
- "Run Application": эта кнопка запускает ваше приложение. Оно откроется в отдельном окне. По умолчанию — именно в окне, а не во вкладке браузера, но это поведение настраивается (об этом позже).
- "Supporting Objects": этот раздел служит для решения вопросов, связанных с установкой, обновлением и удалением приложений. Обычно им почти не пользуются.
- "Shared Components": я бы сказал, это первый или второй по важности раздел IDE (еще один — редактор страниц). Если вы будете много разрабатывать на апексе, то очень скоро заметите, что выучили структуру этого раздела как "Отче наш".
- "Utilities": еще один набор (мало)полезных вспомогательных функций.
- "Export / Import": позволяет экспортировать или импортировать приложения или отдельные части приложения.
И две дополнительные кнопки, которые обведены оранжевой рамкой на скриншоте:
- Кнопка "Edit application properties". Нажав на нее, вы попадете на страницу настроек свойств приложения. Возможно, вы не будете заходить в этот раздел часто, но он очень важен, потому что там хранятся настройки приложения, от которых много чего зависит. Далее, если я буду упоминать где-то "свойства приложения" — ищите их в этом разделе.
- В кои-то веки полезная функция в правой панели: "Delete this Application". В то время как многие функции в апексе продублированы в разных местах, эта функция есть только здесь, и с непривычки первый раз ее найти сложно.
Application properties
Здесь прежде всего интересна организация доступа к большому количеству настроек.
Настройки сгруппированы в 4 группы (см. верхнюю рамку), а в каждой группе есть еще по нескольку подгрупп (см. нижнюю рамку), у каждой группы есть свое название. Похожим образом настройки организованы в очень многих местах в апексе. В дальнейшем я буду просто указывать путь к нужной настройке примерно так: "Application Properties" → "Definition" → "Name" → "Version".
Также, если вы посмотрите на хлебные крошки вверху страницы, вы увидите, что там написано "Edit Application Definition", хотя заходили вы, казалось бы, в "Application Properties". Просто не обращайте внимания.
Shared Components
Shared Components — это наше всё. Этот раздел является промежуточным пунктом на пути к конкретным компонентам приложений. Покажу здесь общий вид, просто чтобы вы представляли, где что находится:
Совсем неважной ерунды здесь почти нет. Каждый раздел вам так или иначе может понадобиться. Названия разделов говорят сами за себя, добавить почти нечего:
- "Application Logic": средства управления логикой приложения.
- "Security": вопросы безопасности и управления доступом к приложению целиком и к отдельным компонентам в зависимости от ролей пользователей.
- "Other Components": это "все остальные компоненты". По-хорошему, этому разделу следовало бы быть последним, но он почему-то здесь. А подпункт "List of Values" я бы вообще в Application Logic перенес.
- "Navigation": компоненты приложения для обеспечения навигации.
- "User Interface": настройка внешнего вида приложения, стилей и т. п.
- "Files": раздел для файлов (например, css или js). Незаменим, если у вас нет доступа к ОС, и все равно удобен, даже если доступ есть.
- "Data Sources": работа с источниками данных (для загрузки и выгрузки).
- "Reports": отчеты, очевидно.
- "Globalization": раздел для перевода приложений на другие языки.
Перевод приложений в апексе сделан просто ужасно (честно, я пытался придумать, как сделать его хуже — и не смог), и нет никаких свидетельств того, что в будущем станет лучше.
Ужасно с точки зрения архитектуры и удобства работы над переводом. Могу только сказать разработчикам: "Спасибо, что хотя бы без багов" (но тут как посмотреть: переводы устроены так, что некоторые особенности их работы мало чем отличаются от багов).
Приходится с этим жить.
Page Designer
Page Designer — редактор страниц. Это, наверное, главное место в IDE. Здесь вы будете создавать то, с чем напрямую взаимодействует пользователь, — страницы приложения. Здесь просто куча функций, почти как в кабине самолета. Чтобы попасть в Page Designer, нужно кликнуть по ссылке с названием страницы на странице приложения (извините за тавтологию). На скриншоте разноцветными рамками выделены основные составляющие редактора:
Панель кнопок вверху (в красной рамке):
- Поле для ввода номера страницы, стрелки вверх и вниз и кнопка "Go": навигация по страницам приложения. Каждая страница имеет номер, тут вы можете либо ввести номер нужной страницы, либо стрелками перейти к следующей/предыдущей, либо нажать на самую левую кнопку и в появившемся модальном окне выбрать страницу из списка.
- Кнопка с замком: позволяет заблокировать страницу от изменений другими разработчиками.
- Кнопки Undo/Redo
- Две кнопки с доступом к вспомогательным функциям.
- Кнопка-ссылка на Shared Components. Полезная, потому что туда-сюда ходить приходится постоянно. (Я сам, правда, предпочитаю просто держать Shared Components в отдельной вкладке — так еще быстрее).
- Кнопка "Save": сохраняет изменения на странице.
- Кнопка "Run": "запускает" страницу, то есть вы ее видите так, как ее потом увидит пользователь.
Слева (в оранжевой рамке) — панель с компонентами страницы. В этой панели есть 4 закладки:
- "Rendering": показывает, из каких составных частей состоит страница, какие процессы выполняются при рендеринге;
- "Dynamic Actions": действия, выполняемые на клиенте (например, обработчики событий javascript);
- "Processing": серверные процессы, связанные со страницей;
- "Page Shared Components": для прямого перехода к используемым на странице общим компонентам (те самые Shared Components).
По центру (в зеленой рамке) — панель, содержащая много разнородной информации. В верхней части панели есть 5 закладок, на которых можно найти:
Также центральная панель имеет снизу еще одну дополнительную панель, которую можно использовать для быстрого добавления компонентов на страницу.
Справа (в синей рамке) — панель свойств. Тут все просто — она показывает свойства выбранного в данный момент компонента. Часть свойств компонентов — простые: текст, число, значение из списка. Но у более сложных свойств компонентов есть дополнительные интерфейсные возможности, сильно облегчающие жизнь при работе с ними.
Свойство, представляющее собой большой текст. Например, код на PL/SQL или JavaScript. Выглядит так:
Можно писать код прямо так, в этом поле, а можно щелкнуть по кнопке вверху страва, и тогда откроется модальное окно с редактором кода, где доступны подсветка синтаксиса (для SQL, JavaScript, CSS, HTML), поиск в тексте и другие функции редактора.
Свойство — Shared Component. Если свойство является одним из компонентов приложения (Shared Component), то выбирать конкретный компонент можно из списка, а нажав на кнопку справа от списка
можно переместиться в раздел Shared Components непосредственно в свойства выбранного компонента (чтобы, например, их изменить).
Если у вас значение свойства выбирается из списка, иногда справа можно увидеть другую дополнительную кнопку:
Она называется "Quick pick" и используется, когда вариантов очень много. "Quick pick" дает чуть более быстрый доступ к небольшому подмножеству вариантов — как правило, там находятся наиболее часто используемые варианты. "Часто используемые варианты" здесь — не вами используемые, а "вообще". Это жестко заданный список и со временем не меняется.
SQL Workshop
Как я уже говорил, SQL Workshop — это заменитель обычной IDE (если у вас по каким-то причинам нет возможности ее использовать).
Он состоит из 5 разделов:
- "Object Browser": браузер объектов БД (таблиц, пакетов, функций и процедур, индексов, сиквенсов и прочего);
- "SQL Commands": раздел, где можно выполнить любой SQL запрос или PL/SQL код;
- "SQL Scripts": здесь можно загрузить текстовый файл со скриптом и выполнить его;
- "Utilities": разные дополнительные возможности, связанные с БД: например, есть графический построитель запросов (но не только);
- "RESTful Services": создание REST сервисов. Апекс тоже имеет REST (причем давно, еще в версии 4.2 они уже были)!
Object Browser
Здесь есть все, что нужно для работы с объектами БД: создание, изменение, удаление, просмотр свойств объектов, ввод данных в таблицы — для всего этого в этом разделе есть графический интерфейс. Вверху слева в выпадающем списке можно выбрать тип объектов (на скриншоте показаны таблицы), вверху справа можно выбрать схему, объекты которой вы можете посмотреть. В списке доступных схем вы не увидите все схемы сразу — это нормально. Как сделать схемы видимыми в апексе, я расскажу, когда дойду до администрирования.
Также я не вижу большого смысла описывать этот раздел подробнее: если вы знаете, что значит фраза "добавить столбец в таблицу", вы без труда догадаетесь, когда вам нужно будет нажимать на кнопку "Add Column" и что вас может ждать дальше.
SQL Commands
В этом разделе можно выполнять SQL запросы и PL/SQL код.
По возможностям этот раздел почти не уступает полноценным средам разработки. Не хватает разве что автодополнения кода и подсветки синтаксиса (а в Object Browser подсветка синтаксиса есть, кстати). Имеющиеся возможности:
- выполнение SQL, в том числе с параметрами (для ввода значений параметров появится отдельное окно);
- выполнение PL/SQL с возможностью вывода текста через dbms_output (вывод появится в окне ниже);
- выполнение только выделенной части кода (выделить текст мышкой, затем "Run");
- просмотр плана запроса;
- сохранение запросов.
Это, как вы понимаете, далеко не всё, что есть в IDE APEX, но на данном этапе не имеет смысла углубляться дальше. Отдельные элементы интерфейса апекса будут разобраны более подробно в темах, которые имеют к ним непосредственное отношение.
P. S. Я пока не могу сказать, что четко продумал структуру этого туториала, возможно, в будущем я добавлю еще скриншоты и описания в эту статью или опишу дополнительные возможности в других статьях. Осталось придумать, как оповещать заинтересованных о значительных правках старых статей.
В главе использованы материалы [APEX1 ].
13.1. Технология Oracle: От моделирования данных до приложений
Корпорация Oracle выпускает ряд продуктов и поддерживает технологии, которые ориентированы на разработчиков. Это инструменты и среды разработки, языки и концепции, которые могут быть использованы в процессе проектирования, разработкиОт моделирования данных до приложений, тестирования и внедрения программных продуктов.
Направления, в которых развиваются продукты Oracle, можно разделить на следующие группы:
SOA-разработка (интеграция и управление);
database-разработка (программирование в СУБД).
Это разделение достаточно условно, так как некоторые продукты можно отнести одновременно к нескольким группам, другие продукты функционально дополняют друг друга в разных группах, т. к. практически все рассматриваемые нами инструменты являются частью единой платформы Oracle Fusion Middleware. Это большой плюс, т. к. взаимодействие различных компонентов конструируемой ИС уже отлажено и описано производителем. Рассмотрим некоторые продукты и технологии Oracle[DM14 ].
Упрощенный жизненный цикл разработки приложения включает пять фаз [DM13 ]:
13.1.1. Моделирование данных с помощью Oracle SQL Developer Data Modeler
Oracle SQL Developer Data Modeler – это комплексное решение, позволяющее разработчикам проектировать реляционные модели взаимосвязей объектов для последующего преобразования их в полноценные БД. Продукт поддерживает логическое, реляционное, многомерное моделирование и моделирование типов данных, предлагая возможности многоуровневого проектирования и построения концептуальных диаграмм сущностей и связей. Пользователи могут создавать, расширять и модифицировать модели, а также сравнивать их с уже существующими.
Модели данных являются мощными коммуникационными средствами, которые используются при инициации новых проектов, а также при консолидации и обновлении существующих проектов. Data Modeler предлагает множество функциональных возможностей для моделирования данных и баз данных, включая:
Визуальное моделирование взаимосвязей между сущностями – поддерживает нотации Баркера и Бахмана, чтобы разработчики могли переключаться между моделями для удовлетворения потребностей клиентов или для создания и сохранения различных визуальных представлений моделей.
Ускоренное преобразование ERD-моделей в реляционные модели – трансформация всех правил и решений, сделанных на концептуальном уровне, в реляционную модель, детали в которой уточняются и обновляются.
Разделение реляционной и физической моделей – позволяет разработчикам создавать одну реляционную модель для разных версий базы данных или для разных баз данных, включая Oracle Database, IBM DB2 V7 и V8 для платформ Linux, UNIX, Windows и OS/390, а также Microsoft SQL Server 2000 и 2005.
Полный набор физических определений для баз данных – поддерживает такие физические определения, как секции, роли и табличные пространства для конкретных версий базы данных в средах с разными СУБД от разных производителей, обеспечивая большую согласованность и повышение продуктивности разработчиков.
Продукт интегрируется с Oracle SQL Developer – популярным графическим инструментом Oracle для разработки баз данных, – чтобы предоставить разработчикам возможность открывать и просматривать созданные ранее структуры, а также выполнять запросы и формировать отчеты с использованием репозитория отчетов.
Решение Oracle SQL Developer Data Modeler доступно для всех редакций Oracle Database 11g, 10g и работает в средах Windows, Linux и Mac OS X. Продукт лицензируется по пользователям [DM14 ].
13.1.2. Разработка приложения с помощью Oracle SQL Developer и Oracle Application Express
Oracle SQL Developer – бесплатный инструмент для написания SQL-запросов, разработки PL/SQL пакетов, процедур, функций, триггеров и т. п. Этот инструмент написан на языке Java и является кросс-платформенным. Oracle SQL Developer интегрируется с APEX для разработки и администрирования приложений.
Возможности Oracle SQL Developer:
интегрированная среда разработки БД;
облегчённый интерфейс, упрощающий и улучшающий разработку БД;
запуск и настройка SQL;
разработка и отладка PL/SQL;
просмотр объектов БД;
интегрированная утилита миграции БД;
выполнение и создание отчётов;
просмотр, создание и редактирование данных в БД;
интегрированная поддержка управления версиями;
экспорт объектов БД в SQL скрипты;
генерация SQL скриптов из словаря данных;
чтение и форматирование трассировочных файлов;
расширяемость через Java и XML.
APEX является бесплатным продуктом, интегрированным с СУБД Oracle Database.
Изначально APEX предназначался для создания HTML-интерфейса к базе данных. В настоящее время выпущена 4-я версия продукта, который стал полноценной средой проектирования и разработки web-приложений любой сложности с интегрированной БД. На базе APEX и бесплатной редакции Oracle Database eXpress Edition (XE) можно создавать сайты и порталы, которые не требуют затрат на лицензирование.
Характерной особенностью этой среды разработки является то, что для работы с ней не требуется высокой квалификации в web-программировании и HTML-верстке. APEX представляет собой конструктор готовых блоков сайта. Фактически, минимально подготовленный пользователь может создавать рабочие сайты со встроенными средствами аутентификации и безопасности, современным дизайном и интерфейсом. С другой стороны, это гибкий инструмент, и квалифицированный разработчик может создавать страницы и сайты любого дизайна и структуры.
Немаловажным является и то, что работоспособность этого сайта будет поддерживаться мощной и надежной базой данных Oracle Database. Сайты и порталы, разработанные на APEX, способны обслуживать сотни пользователей, т. е. отвечают требованиям, предъявляемым по масштабируемости к Интернет-приложениям [DM14 ].
В состав APEX входят следующие четыре основных компонента.
Application Builder – собственно среда разработки web-страниц и бизнес-правил.
SQL Workshop – среда управления объектами базы данных (индексы, таблицы, представления и т. п.). Включает мастер создания SQL запросов для пользователей, которые не обладают знаниями в языке SQL.
Utilities – импорт и экспорт данных, генерация SQL-скриптов на изменение структуры базы данных, отчеты и восстановление удаленных объектов.
Administration – управление пользователями, настройками, правами доступа и просмотр отчетов.
APEX включает в себя следующие возможности:
cреда разработки имеет простой и эффективный web-интерфейс, т. е. для начала разработки не требуется специализированных сред, разработка может вестись с любого компьютера с web-браузером;
помощники миграции из настольных баз данных и электронных таблиц;
встроенный мастер генерации отчетов в формате pdf;
инструменты для интеграции и web-сервисами;
большое количество шаблонов пользовательского интерфейса;
интуитивно-понятное управление рабочим пространством;
управление объектами по принципу drag & drop;
графический помощник создания SQL-запро сов;
защищенность данных сессии после авторизации пользователя;
встроенный редактор PL/SQL;
мастер создания диаграмм и отчетов на сайте;
поддержка более 20 языков, включая русский.
APEX является кросс-платформенной системой, т. е. он успешно работает как на операционной системе Windows, так и на Linux, Solaris, HP-UX, MAC OS и других.
Одним из простейших примеров применения APEX на предприятии является переход от настольных баз данных и электронных таблиц (например, MS Access, MS Excel) к web-представлению этих баз и документов. Это бывает очень полезным, когда необходимо обеспечить одновременный доступ для редактирования одного и того же документа, особенно когда пользователи находятся в территориально удаленных офисах. В APEX встроен инструмент конвертации из таблиц Excel в таблицы APEX. После конвертации эти таблицы становятся доступны на корпоративном Интранет- или Интернет-сайте. Пользователь получает доступ к такой таблице после того, как вводит имя и пароль на сайте. Таким образом, можно организовать совместную работу над документом без пересылки его по электронной почте и т. п.
В посте рассматривается краткий обзор среды разработки Oracle APEX, пошаговая инструкция установки и настройки APEX версии 20.2 и ORDS версии 20.3 на Oracle Database 18c Express Edition.
Краткий обзор среды разработки APEX.
Установка Oracle APEX 20.2. Предполагается, что есть успешно установленная Oracle Database 18c Express Edition. При необходимости, можно установить Oracle Database 18c Express Edition, используя следующие материалы: Установка Oracle Database 18c Express Edition на Linux и Установка Oracle Database 18c Express Edition на Windows. В посте подключение к PDB описываются различные способы подключения и работы в PDB.
Шаг 1. Установка APEX на Oracle Database 18c Express Edition
Для скачивания на портале Oracle необходимо наличие учетной записи с паролем. При ее отсутствии осуществляется регистрация новой учетной записи.
После ознакомления и принятия условий лицензирования необходимо поставить галочку в разделе I reviewed and accept the Oracle License Agreement.
Нажать на «Download apex_20_2.zip». Запускается скачивание zip архива (apex_20.2.zip). Объем архива 228 Мб.
После завершения скачивания архив apex_20.2.zip нужно скопировать в директорию /home/oracle/ операционной системы Oracle Linux, работающей на виртуальной машине. Выполняется разархивирование файла и проверка содержимого архива:
После разархивирования создалась папка apex с множеством sql скриптов для создания и настройки APEX. Необходимо из директории со скриптами (/home/oracle/apex/) подключиться к PDB XEPDB1 и начать установку APEX:
Подключение к XEPDB1 прошло успешно. Запускается скрипт apexins.sql для установки APEX со следующим синтаксисом:
@apexins.sql tablespace_apex tablespace_files tablespace_temp images
где, tablespace_apex – название табличного пространства для пользователя приложения APEX. tablespace_files – название табличного пространства для пользователя файлов APEX. tablespace_temp – название временного табличного пространства. images – виртуальная директория для изображений APEX. Для обеспечения корректного обновления APEX в будущем необходимо задать значение для этого параметра равное /i/.
Скрипт apexins.sql запускается со следующими значениями параметров:
Выше приводится последняя часть лога установки APEX, так как система генерирует очень много строк лога. Лог показывает, что установка прошла успешно и заняла 14 мин 57 секунд времени.
Шаг 2. Настройки и подключение к APEX
После успешного завершения установки необходимо создать пользователя с административными правами в APEX и назначить ему пароль, настроить ORDS и создать рабочее пространство для разработки приложений.
Для создания администратора и назначения ему пароля запускается скрипт apxchpwd.sql в PDB. Данный скрипт в будущем также может быть использован для сброса пароля существующему администратору APEX.
Иначе система выдаст следующую ошибку:
Запускается скрипт для создания администратора с именем ADMIN и назначения его email и пароля:
Пользователь успешно создан.
Также важно настроить учетную запись APEX_PUBLIC_USER для управления Oracle Application Express. Учетная запись APEX_PUBLIC_USER создается со случайным и недоступным паролем во время установки Oracle Application Express. Если же выполняется обновление (upgrade) с предыдущей версии Oracle Application Express, то приведенные ниже две команды не являются необходимыми:
Для новой установки APEX (а не обновление) необходимо запустить скрипт apex_rest_config.sql для настройки RESTful сервисов. После запуска потребуется назначить пароль для учетных записей APEX_LISTENER, APEX_REST_PUBLIC_USER. Ниже во время установки и настройки ORDS будет необходимо вводить пароли этих учетных записей.
Настройка ORDS
Для скачивания на портале Oracle необходимо наличие учетной записи с паролем. При ее отсутствии осуществляется регистрация новой учетной записи.
Пройдя по ссылке, скачивается файл Oracle REST Data Services.
После ознакомления и принятия условий лицензирования необходимо поставить галочку в разделе I reviewed and accept the Oracle License Agreement.
Нажать на «Download ords-20.3.0.301.1819.zip». Запускается скачивание zip архива (ords-20.3.0.301.1819.zip). Объем архива 70 Мб.
После завершения скачивания необходимо создать директорию ords в /home/oracle/ и архив ords-20.3.0.301.1819.zip нужно скопировать в созданную директорию /home/oracle/ords операционной системы Oracle Linux, работающей на виртуальной машине. Выполняется разархивирование файла и проверка содержимого архива:
При использовании ORDS для работы с APEX приложениями ORDS должен быть настроен для обслуживания статических файлов APEX. Необходимо скопировать директорию images (apex/images) из домашней директории с установочными файлами APEX в папку файловой системы, где установлены службы Oracle REST Data Services. В данном примере домашняя директория APEX находится в /home/oracle/apex и директория установки ORDS в /home/oracle/ords.
Проверяется текущая версия JDK.
Результат команды показывает, что на этой операционной системе установлена и настроена 15-я версия JDK. В этом посте можно ознакомиться со способом проверки текущей версии JDK, а также при необходимости установить, обновить, настроить и использовать новую версию по умолчанию (см. раздел «Установка JDK»).
Есть вероятность, что при использовании старой версии JDK (например, 8 версия) запуск установки ORDS выдаст следующую ошибку:
Есть два варианта установки ORDS:
- Автономный (standalone) режим.
- На сервере приложений (Oracle WebLogic Server, Apache Tomcat).
Далее описывается установка ORDS в standalone режиме.
Для начала установки и настройки ORDS необходимо запустить следующую команду: java -jar ords.war install advanced
После запуска команды система потребует предоставить данные для множества параметров. Ниже приведены некоторые параметры и их значения во время установки. Остальные параметры оставлены по умолчанию или не требуют дополнительного описания.
Для информации: по умолчанию, для того чтобы получить доступ к корню APEX через сервисы ORDS необходимо перейти по пути /ords. Если есть необходимость использовать путь /apex для доступа к APEX, то потребуется переименовать файл ords.war в apex.war перед началом установки и настройки ORDS.
После завершения установки автоматически создается рабочее пространство (workspace) для выполнения административных задач в APEX. Название workspace – INTERNAL. Выполняется подключение к административному workspace под пользователем ADMIN и его паролем (данный пользователь и его пароль были созданы при запуске скрипта apxchpwd.sql (см. выше)).
После успешного входа система запросит создать новое рабочее пространство для разработки приложений:
Далее задается название, идентификатор и описание рабочего пространства. В примере ниже задается имя рабочего пространства «Dushanbe» и краткое описание. По умолчанию система сама генерирует идентификатор рабочего пространства.
На этапе Identify Schema надо будет указать название схемы (пользователя базы данных), к которой будет привязано новое рабочее пространство. Если в поле Re-use existing schema выбран No, то в поле Schema Name необходимо указать название нового пользователя/схемы, в поле Schema Password задать ему пароль, а в поле Space Quota (MB) назначить ему квоту на использование пространства в табличном пространстве.
В примере для поля Re-use existing schema выбирается значение Yes и в Schema Name указывается тестовая и учебная схема/пользователь hr.
Это даст возможность использовать связанные таблицы с готовыми тестовыми данными, представления, триггеры, данные и другие объекты схемы hr во время создания приложений в APEX.
Это означает, что в APEX успешно создано новое рабочее пространство с именем Dushanbe. Нажатие кнопки Done позволит пользователю ADMIN получить доступ к своему рабочему пространству (INTERNAL) и начать работу:
Выполняется выход пользователя ADMIN из административного рабочего пространства (workspace) INTERNAL. Для этого в правом верхнем углу нажимается на имя пользователя и нажимается на Sign Out.
Нажимается на Return to Sign in Page и на новой странице указываются данные для подключения к новому рабочему пространству (workspace) Dushanbe:
При первом входе администратору нового рабочего пространства (workspace) необходимо самостоятельно сменить пароль:
После успешной смены пароля администратор workspace Dushanbe получает доступ к среде:
Рабочее пространство Dushanbe готово для начала разработки веб-приложений.
Необходимо учитывать, что после перезагрузки операционной системы сервис будет недоступен. Для запуска ORDS необходимо вручную запустить следующую команду java -jar ords.war standalone из директории ords (в данном примере из /home/oracle/ords):
Если закрыть консоль операционной системы, то сервис ords выполнявшийся в ней завершится. Во избежание этого необходимо команду java -jar ords.war standalone запустить в фоновом режиме, используя nohup:
При необходимости можно написать скрипт на уровне операционной системы, который будет запускать последнюю команду из нужной директории, и записывать детальную информацию о запуске в определенный лог файл для последующего анализа в будущем.
16 thoughts on “ Установка и настройка APEX 20.2 и ORDS 20.3 на Oracle Database 18c Express Edition ”
при запуске java -jar ords.war .. на вводе пароля
Enter the administrator username:sys
Enter the database password for SYS AS SYSDBA:
валится с ошибкой 01017 неверно имя пользователя/пароль;
через sql plus коннект идет.. база pdb , ее указал
Enter the database service name:XEPDB1
пароль в разных регистрах пробовал, куда еще копать?
Уважаемый Владислав,
Спасибо за Ваш вопрос.
Здравствуйте!
Высылаю,но пароль число:
вопрос конечно относился больше субд чем к apex/ords, но как гипотеза, изменение SEC_CASE_SENSITIVE_LOGON в pluggable версиях (как минимум в 18xe) ведет к некорректной работе с паролями обычных пользователей.
с параметром по умолчанию (True) ords работает отлично.
Кстати, чтоб постоянно не писать alter session set container = XXX, возможно проше сразу подключатся к контейнерной базе, например conn sys/pass@localhost:1521/xepdb1
спасибо за интересные статьи!!
Огромная просьба написать о возможностях работы ords в режиме standalone с небольшим кол-вом пользователей и наиболее простым и устойчивым вариантом работы с веб-серверами, напр ords-tomcat; ords-glassfish-tomcat ;ords-nginx-tomcat..
с уважением
Владислав
Добрый день, Владислав.
Спасибо за Ваши вопросы и комментарии.
Добрый день!
Решил поизучать APEX на досуге, опыта работы с БД Oracle не имею. Интересует пока БД в связке с REST.
Ваши инструкции очень помогли.
Установил полную связку Oracle Linux, DB 18c XE, APEХ 20.2, ORDS 20.4
Все заработало.
Создал в APEX таблицу и наполнил данными, включил REST и тут началось:
1) Словил ошибку в браузере ORA-28000: The account is locked
2) Инет говорит, что какой то пользователь заблокирован (какой?)
3) Хорошо думаю зайду как sys as sysdba и посмотрю, но пароль не срабатывает, ошибка ORA-01017. Ни через sqlplus ни через sql developer
4) перезагрузка сервера не помогла, хотя до этого заходил sys as sysdba без проблем, вероятно на каком то этапе сменился пароль. APEX в тоже время работает отлично, кроме Реста.
Ума не приложу куда копать и как сменить пароль на sys. переустанавливать все как-то не хочется.
Могли бы третий пункт подробнее описать, пожалуйста? Каким образом выполняете подключение к БД под пользователем sys? Команда для подключения выполняется под пользователем операционной системы oracle?
Добрый вечер.
Рад, что Вам удалось решить пункты 2 и 3.
По поводу подключения с помощью команды sqlplus / as sysdba. Могли бы подробнее описать, пожалуйста? Каким образом выполняете подключение к БД без пароля? Команда для подключения выполняется под пользователем операционной системы (oracle)? Пользователь операционный системы (oracle) входит в группу dba операционной системы?
Добрый день.
По умолчанию standalone ORDS использует порт 8080. Ваша ошибка говорит о том, что порт 8080 уже занят каким-то другим сервисом или Вы возможно пытаетесь запустить standalone ORDS второй раз.
Для решения этой проблемы Вам необходимо найти файл standalone.properties в директории настроек ORDS. Если Ваши директории и настройки идентичны указанным в моем посте, то упомянутый файл находится в директории /home/oracle/ords/config/ords/standalone. В файле standalone.properties надо найти параметр jetty.port и изменить значение порта 8080 на новый номер порта (например, 8090).
does it really need to install java 15?
No, you do not need to use only JDK 15. Just in my example is used the pre-installed JDK 15.
I got this error when running my ORDS
WARNING The pool named: |apex|| is invalid and will be ignored: The username or password for the connection pool named |apex||, are invalid, expired, or the account is locked
Did I make anything wrong?
Seems one of the listed accounts (ords_public_user, apex_listener, apex_rest_public_user, apex_public_user) is locked or its password expired or someone changed its password.
1. If account is locked or password is expired then try unlock the account or just change the password back to the one that was set during the ORDS installation.
2. If you need to use new password then for this you need to find file with extension *.xml in the configuration folder of ORDS and set new password to the desired account using exclamation point. Exclamation point (!) will make the password unreadable after ORDS restart.
Читайте также: