Установка и настройка APEX 20.2 и ORDS 20.3 на Oracle Database 18c Express Edition

Установка и настройка APEX 20.2 и ORDS 20.3 на Oracle Database 18c Express Edition

В посте рассматривается краткий обзор среды разработки Oracle APEX, пошаговая инструкция установки и настройки APEX версии 20.2 и ORDS версии 20.3 на Oracle Database 18c Express Edition.

Краткий обзор среды разработки APEX.

Oracle Application Express (APEX) – это low-code платформа для разработки функциональных, масштабируемых и безопасных web-приложений. На сегодняшний день последней актуальной версией APEX является Oracle APEX 20.2. Данная версия выпущена в октябре 2020 года. Для установки и работы с APEX 20.2 в Oracle Database 18c Express Edition необходимо понимать принцип работы новой опции Oracle Database – Multitenant. Начиная с Oracle Database 12с поддерживается новая архитектура – Multitenant, которая предоставляет возможность использовать множество баз данных для консолидации их в составе единой и главной базы данных. Такое объединение упрощает задачи администрирования баз данных. Единая и главная база данных используется в качестве платформы и называется контейнерная база данных (Container Database – CDB), а база данных из множества работающих в составе контейнерной базы данных называется подключаемой базой данных (Pluggable Database – PDB). Архитектура Multitenat позволяет создать в Oracle Database 18с Express Edition одну CDB базу и до трех PDB баз. По умолчанию в Oracle Database 18с Express Edition APEX отсутствует. В связи с этим, для установки и работы с APEX необходимо подключиться к PDB и выполнять установку и настройку APEX. Ниже пошагово описывается процесс установки и настройки APEX 20.2 и Oracle REST Data Services версии 20.3 (далее ORDS) на Oracle Database 18c Express Edition, работающей на виртуальной машине под управлением операционной системы Oracle Linux. При использовании APEX 20.2 минимальная версия ORDS должна быть 19.1. Нижеописанные шаги также будут работать с Oracle Database 18c Express Edition установленной на операционную систему Windows.

Для информации: Кроме установки и использования платформы Oracle APEX на локальном компьютере, также есть возможность установить и использовать ее для разработки веб-приложений на бесплатном сервисе Always Free Service облака Oracle или же запросить и настроить свое рабочее пространство в бесплатном облачном сервисе apex.oracle.com. В данном посте рассматривается установка и доступ к среде разработки 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 APEX распространяется бесплатно и установочный файл можно скачать с официального сайта Oracle – https://www.oracle.com/tools/downloads/apex-downloads.html

Для скачивания на портале Oracle необходимо наличие учетной записи с паролем. При ее отсутствии осуществляется регистрация новой учетной записи.

Пройдя по ссылке, выбирается версия Oracle APEX 20.2 – All languages.

После ознакомления и принятия условий лицензирования необходимо поставить галочку в разделе 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, работающей на виртуальной машине. Выполняется разархивирование файла и проверка содержимого архива:

[oracle@dushanbe ~]$ pwd
/home/oracle
[oracle@dushanbe ~]$ ls
apex_20.2.zip  Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos
[oracle@dushanbe ~]$ ls -l apex_20.2.zip 
-rw-rw-rw-. 1 oracle oracle 239868057 Jan 14 22:50 apex_20.2.zip
[oracle@dushanbe ~]# unzip apex_20.2.zip 
[oracle@dushanbe ~]$ ls 
apex  apex_20.2.zip  Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos
[oracle@dushanbe ~]$ cd apex
[oracle@dushanbe apex]$ pwd
/home/oracle/apex
[oracle@dushanbe apex]$ ls
apexins1.sql         apex_rest_config_cdb.sql    apxdevrm_cdb.sql    apxexit.sql         apxremov_nocdb.sql    apxrtins_nocdb.sql  core          dbcsins.sql
apexins2.sql         apex_rest_config_core.sql   apxdevrm_nocdb.sql  apxpatch_cdb.sql    apxremov.sql          apxrtins.sql        coreins2.sql  devins.sql
apexins3.sql         apex_rest_config_nocdb.sql  apxdevrm.sql        apxpatch_nocdb.sql  apxrtins1.sql         apxsdoins.sql       coreins3.sql  images
apexins_cdb.sql      apex_rest_config.sql        apxdvins_cdb.sql    apxpatch.sql        apxrtins2.sql         apxsilentins.sql    coreins4.sql  load_trans.sql
apexins_cdb_upg.sql  appins.sql                  apxdvins_nocdb.sql  apxremov1.sql       apxrtins3.sql         apxupgrd.sql        coreins5.sql  utilities
apexins_nocdb.sql    apxappcon.sql               apxdvins.sql        apxremov2.sql       apxrtins_cdb.sql      builder             coreins.sql
apexins.sql          apxchpwd.sql                apxdwngrd.sql       apxremov_cdb.sql    apxrtins_cdb_upg.sql  catapx.sql          dbcsconf.sql
[oracle@dushanbe apex]$

После разархивирования создалась папка apex с множеством sql скриптов для создания и настройки APEX. Необходимо из директории со скриптами (/home/oracle/apex/) подключиться к PDB XEPDB1 и начать установку APEX:

[oracle@dushanbe apex]$ sqlplus sys as sysdba
SQL*Plus: Release 18.0.0.0.0 - Production on Sat Aug 8 11:21:28 2020
Version 18.4.0.0.0
Copyright (c) 1982, 2018, Oracle.  All rights reserved.
Enter password: 
Connected to:
Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production
Version 18.4.0.0.0

SQL> show pdbs;
 CON_ID  CON_NAME  OPEN MODE  RESTRICTED
 --------------------------------------
    2    PDB$SEED  READ ONLY      NO  
    3    XEPDB1    READ WRITE     NO
SQL> alter session set container = XEPDB1;
Session altered.
SQL> show pdbs;
 CON_ID  CON_NAME  OPEN MODE  RESTRICTED
 --------------------------------------
    3    XEPDB1    READ WRITE     NO 
 SQL>

Подключение к 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 запускается со следующими значениями параметров:

SQL> @apexins.sql SYSAUX SYSAUX TEMP /i/
...
<Эта часть лога не приведена>
...
#
Actions in Phase 3:
#
    ok 1 - BEGIN                                                        |   0.00
    ok 2 - Computing Pub Syn Dependents                                 |   0.00
    ok 3 - Upgrade Hot Metadata and Switch Schemas                      |   0.00
    ok 4 - Removing Jobs                                                |   0.00
    ok 5 - Creating Public Synonyms                                     |   0.03
    ok 6 - Granting Public Synonyms                                     |   0.10
    ok 7 - Granting to FLOWS_FILES                                      |   0.00
    ok 8 - Creating FLOWS_FILES grants and synonyms                     |   0.02
    ok 9 - Creating Jobs                                                |   0.00
    ok 10 - Creating Dev Jobs                                           |   0.00
    ok 11 - Installing FLOWS_FILES Objects                              |   0.00
    ok 12 - Installing APEX$SESSION Context                             |   0.00
    ok 13 - Recompiling APEX_200200                                     |   0.05
    ok 14 - Installing APEX REST Config                                 |   0.02
    ok 15 - Set Loaded/Upgraded in Registry                             |   1.32
    ok 16 - Removing Unused SYS Objects                                 |   0.00
    ok 17 - Validating Installation                                     |   0.03
ok 3 - 17 actions passed, 0 actions failed                              |   1.57

PL/SQL procedure successfully completed.

Thank you for installing Oracle Application Express 20.2.0.00.20

Oracle Application Express is installed in the APEX_200200 schema.
The structure of the link to the Application Express administration services is as follows:

http://host:port/ords/apex_admin

The structure of the link to the Application Express development interface is as follows:
http://host:port/ords

timing for: Phase 3 (Switch)
Elapsed: 00:01:34.83
timing for: Complete Installation
Elapsed: 00:14:57.61

PL/SQL procedure successfully completed.
1 row selected.
…null1.sql
SYS>

Выше приводится последняя часть лога установки APEX, так как система генерирует очень много строк лога.  Лог показывает, что установка прошла успешно и заняла 14 мин 57 секунд времени.

Шаг 2. Настройки и подключение к APEX

После успешного завершения установки необходимо создать пользователя с административными правами в APEX и назначить ему пароль, настроить ORDS и создать рабочее пространство для разработки приложений.

Для создания администратора и назначения ему пароля запускается скрипт apxchpwd.sql в PDB. Данный скрипт в будущем также может быть использован для сброса пароля существующему администратору APEX.

После запуска скрипта система предложит ввести пользовательское имя для администратора (login), его email и пароль. По умолчанию система предлагает ADMIN для пользовательского имени администратора (login). Если необходимо оставить пользователя по умолчанию, то поле Enter the administrator’s username [ADMIN] следует оставить пустым и нажать Enter. В поле Enter ADMIN’s email [ADMIN] можно указать свою электронную почту. В поле Enter ADMIN’s password [] надо назначить пароль администратора, который будет удовлетворять следующим требованиям:

  • Пароль должен содержать не менее 6 символов.
  • Пароль должен содержать не менее одного буквенного символа.
  • Пароль должен содержать не менее одного символа пунктуации:
    (!”#$%&()“*+,-/:;?_).
  • Пароль должен содержать не менее одного заглавного буквенного символа.
  • Пароль должен содержать не менее одного строчного буквенного символа.

Иначе система выдаст следующую ошибку:

ORA-20001: Password validation failed.
ORA-06512: at line 30
ORA-06512: at "APEX_200100.WWV_FLOW_FND_USER_INT", line 3744
ORA-06512: at line 20 

Запускается скрипт для создания администратора с именем ADMIN и назначения его email и пароля:

SYS> @apxchpwd.sql            
…set_appun.sql
======================================================================================
This script can be used to change the password of an Application Express
instance administrator. If the user does not yet exist, a user record will be created.
======================================================================================
Enter the administrator's username [ADMIN] 
User "ADMIN" does not yet exist and will be created.
Enter ADMIN's email [ADMIN] test@***.tj
Enter ADMIN's password [] 
Created instance administrator ADMIN.
SYS>

Пользователь успешно создан.

Также важно настроить учетную запись APEX_PUBLIC_USER для управления Oracle Application Express. Учетная запись APEX_PUBLIC_USER создается со случайным и недоступным паролем во время установки Oracle Application Express. Если же выполняется обновление (upgrade) с предыдущей версии Oracle Application Express, то приведенные ниже две команды не являются необходимыми:

SYS> ALTER USER APEX_PUBLIC_USER ACCOUNT UNLOCK;
SYS> ALTER USER APEX_PUBLIC_USER IDENTIFIED BY new_password;

Для новой установки APEX (а не обновление)  необходимо запустить скрипт apex_rest_config.sql для настройки RESTful сервисов. После запуска потребуется назначить пароль для учетных записей APEX_LISTENER, APEX_REST_PUBLIC_USER. Ниже во время установки и настройки ORDS будет необходимо вводить пароли этих учетных записей.

SYS> @apex_rest_config.sql
Enter a password for the APEX_LISTENER user              [] 
Enter a password for the APEX_REST_PUBLIC_USER user              [] 
…set_appun.sql
…setting session environment
…create APEX_LISTENER and APEX_REST_PUBLIC_USER users
SYS> 

Настройка ORDS

В APEX версии 20.2 уже не поддерживается Web Listener с типом Embedded PL/SQL Gateway и Oracle HTTP Server. В связи с этим, необходимо установить и использовать Oracle REST Data Services (ORDS). Далее описывается процесс установки и базовой настройки APEX с ORDS версии 20.3.

Для начала, необходимо скачать ORDS. Oracle ORDS распространяется бесплатно и установочный файл можно скачать с официального сайта Oracle –  https://www.oracle.com/database/technologies/appdev/rest-data-services-downloads.html

Для скачивания на портале 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, работающей на виртуальной машине. Выполняется разархивирование файла и проверка содержимого архива:

[oracle@dushanbe ~]$ pwd 
/home/oracle
[oracle@dushanbe ~]$ ls 
apex  apex_20.2.zip  Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos
[oracle@dushanbe ~]$ mkdir ords
[oracle@dushanbe ~]$ cd ords
[oracle@dushanbe ords]$ pwd
/home/oracle/ords
[oracle@dushanbe ords]$ ls -l
total 70440
-rw-rw-rw-. 1 oracle oracle 72130015 Jan 15 00:00 ords-20.3.0.301.1819.zip
[oracle@dushanbe ords]$ 
[oracle@dushanbe ords]$ unzip ords-20.3.0.301.1819.zip 
[oracle@dushanbe ords]$ ls -l
total 139944
drwxr-xr-x. 3 oracle oracle       21 Oct 27 18:43 docs
drwxrwxrwx. 7 oracle oracle       93 Oct 23 14:42 examples
-rw-rw-rw-. 1 oracle oracle    40033 Oct 23 14:42 index.html
drwxrwxrwx. 2 oracle oracle       43 Oct 23 14:42 installer
-rw-rw-rw-. 1 oracle oracle 72130015 Jan 15 00:00 ords-20.3.0.301.1819.zip
-rw-r--r--. 1 oracle oracle 71128103 Oct 27 18:43 ords.war
drwxrwxrwx. 2 oracle oracle       36 Oct 23 14:42 params
[oracle@dushanbe ords]$

При использовании ORDS для работы с APEX приложениями ORDS должен быть настроен для обслуживания статических файлов APEX. Необходимо скопировать директорию images (apex/images) из домашней директории с установочными файлами APEX в папку файловой системы, где установлены службы Oracle REST Data Services. В данном примере домашняя директория APEX находится в /home/oracle/apex и директория установки ORDS в /home/oracle/ords.

[oracle@dushanbe ords]$ cd /home/oracle/apex/
[oracle@dushanbe apex]$ pwd
/home/oracle/apex
[oracle@dushanbe apex]$ ls
apexins1.sql              apex_rest_config_core.sql   apxdevrm.sql        apxpatch.sql        apxrtins3.sql         builder       dbcsconf.sql
apexins2.sql              apex_rest_config_nocdb.sql  apxdvins_cdb.sql    apxremov1.sql       apxrtins_cdb.sql      catapx.sql    dbcsins.sql
apexins3.sql              apex_rest_config.sql        apxdvins_nocdb.sql  apxremov2.sql       apxrtins_cdb_upg.sql  core          devins.sql
apexins_cdb.sql           appins.sql                  apxdvins.sql        apxremov_cdb.sql    apxrtins_nocdb.sql    coreins2.sql  images
apexins_cdb_upg.sql       apxappcon.sql               apxdwngrd.sql       apxremov_nocdb.sql  apxrtins.sql          coreins3.sql  install2021-01-14_23-10-38.log
apexins_nocdb.sql         apxchpwd.sql                apxexit.sql         apxremov.sql        apxsdoins.sql         coreins4.sql  load_trans.sql
apexins.sql               apxdevrm_cdb.sql            apxpatch_cdb.sql    apxrtins1.sql       apxsilentins.sql      coreins5.sql  utilities
apex_rest_config_cdb.sql  apxdevrm_nocdb.sql          apxpatch_nocdb.sql  apxrtins2.sql       apxupgrd.sql          coreins.sql
[oracle@dushanbe apex]$ cp -r images/ /home/oracle/ords/
[oracle@dushanbe apex]$ cd /home/oracle/ords/
[oracle@dushanbe ords]$ pwd
/home/oracle/ords
[oracle@dushanbe ords]$ 
[oracle@dushanbe ords]$ ls
docs  examples  images  index.html  installer  ords-20.3.0.301.1819.zip  ords.war  params

Проверяется текущая версия JDK.

[oracle@dushanbe ~]$ java -version
java version "15.0.1" 2020-10-20
Java(TM) SE Runtime Environment (build 15.0.1+9-18)
Java HotSpot(TM) 64-Bit Server VM (build 15.0.1+9-18, mixed mode, sharing)
[oracle@dushanbe ~]$

Результат команды показывает, что на этой операционной системе установлена и настроена 15-я  версия JDK. В этом посте можно ознакомиться со способом проверки текущей версии JDK, а также при необходимости установить, обновить, настроить и использовать новую версию по умолчанию (см. раздел «Установка JDK»).

Есть вероятность, что при использовании старой версии JDK (например, 8 версия) запуск установки ORDS выдаст следующую ошибку:

Enter the location to store configuration data: /home/oracle/ords/config 
Exception in thread "main" java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at oracle.dbtools.jarcl.Entrypoint.invoke(Entrypoint.java:66)
    at oracle.dbtools.jarcl.Entrypoint.main(Entrypoint.java:77)
Caused by: java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Arrays.java:3236)
    at java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:118)
    at java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.java:93)
    at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:153)
    at java.util.zip.DeflaterOutputStream.deflate(DeflaterOutputStream.java:253)
    at java.util.zip.DeflaterOutputStream.write(DeflaterOutputStream.java:211)
    at java.util.zip.ZipOutputStream.write(ZipOutputStream.java:331)
    at java.nio.channels.Channels$WritableByteChannelImpl.write(Channels.java:458)
    at oracle.dbtools.util.StreamCopy.drain(StreamCopy.java:44)
    at oracle.dbtools.util.StreamCopy.drain(StreamCopy.java:31)
    at oracle.dbtools.zip.ZipBuilder._addEntry(ZipBuilder.java:55)
    at oracle.dbtools.zip.ZipBuilder.addEntry(ZipBuilder.java:63)
    at oracle.dbtools.common.zip.ZipBuilder.addEntry(ZipBuilder.java:24)
    at oracle.dbtools.common.zip.MutatedZip.mutate(MutatedZip.java:68)
    at oracle.dbtools.common.zip.MutatedZip.(MutatedZip.java:34)
    at oracle.dbtools.cmdline.ModifyConfigDir.modified(ModifyConfigDir.java:145)
    at oracle.dbtools.cmdline.ModifyConfigDir.modify(ModifyConfigDir.java:117)
    at oracle.dbtools.cmdline.Commands.configurationContext(Commands.java:568)
    at oracle.dbtools.cmdline.Commands.prepareApplicationContext(Commands.java:447)
    at oracle.dbtools.cmdline.Commands.main(Commands.java:407)
    … 6 more

Есть два варианта установки ORDS:

  1. Автономный (standalone) режим.
  2. На сервере приложений (Oracle WebLogic Server, Apache Tomcat).

Далее описывается установка ORDS в standalone режиме.

Для начала установки и настройки ORDS необходимо запустить следующую команду: java -jar ords.war install advanced

После запуска команды система потребует предоставить данные для множества параметров. Ниже приведены некоторые параметры и их значения во время установки. Остальные параметры оставлены по умолчанию или не требуют дополнительного описания.

– Enter the location to store configuration data: указывается директория настроек ORDS. Можно указать любую директорию. В данном примере указана следующая директория: /home/oracle/ords/config

Enter the administrator username: Необходимо указать логин и пароль учетной записи базы данных с правами sysdba.

[oracle@dushanbe ords]$ java -jar ords.war install advanced
This Oracle REST Data Services instance has not yet been configured.
Please complete the following prompts
Enter the location to store configuration data: /home/oracle/ords/config
Specify the database connection type to use.
Enter number for [1] Basic  [2] TNS  [3] Custom URL [1]:
Enter the name of the database server [localhost]:dushanbe
Enter the database listen port [1521]:
Enter 1 to specify the database service name, or 2 to specify the database SID [1]:
Enter the database service name:XEPDB1
Enter 1 if you want to verify/install Oracle REST Data Services schema or 2 to skip this step [1]:
Enter the database password for ORDS_PUBLIC_USER:
Confirm password:
Requires to login with administrator privileges to verify Oracle REST Data Services schema.

Enter the administrator username:sys
Enter the database password for SYS AS SYSDBA:
Confirm password:
Connecting to database user: SYS AS SYSDBA url: jdbc:oracle:thin:@//dushanbe:1521/XEPDB1

Retrieving information.
Enter the default tablespace for ORDS_METADATA [SYSAUX]:
Enter the temporary tablespace for ORDS_METADATA [TEMP]:
Enter the default tablespace for ORDS_PUBLIC_USER [USERS]:
Enter the temporary tablespace for ORDS_PUBLIC_USER [TEMP]:
Enter 1 if you want to use PL/SQL Gateway or 2 to skip this step.
If using Oracle Application Express or migrating from mod_plsql then you must enter 1 [1]:
Enter the PL/SQL Gateway database user name [APEX_PUBLIC_USER]:  
Enter the database password for APEX_PUBLIC_USER:
Confirm password:
Enter 1 to specify passwords for Application Express RESTful Services database users (APEX_LISTENER, APEX_REST_PUBLIC_USER) or 2 to skip this step [1]:  
Enter the database password for APEX_LISTENER:
Confirm password:
Enter the database password for APEX_REST_PUBLIC_USER:
Confirm password:
Enter a number to select a feature to enable:
   [1] SQL Developer Web  (Enables all features)
   [2] REST Enabled SQL
   [3] Database API
   [4] REST Enabled SQL and Database API
   [5] None
Choose [1]:
2021-01-07T18:32:25.400Z INFO        reloaded pools: []
Installing Oracle REST Data Services version 20.3.0.r3011819
… Log file written to /home/oracle/ords_install_core_2021-01-07_233226_00133.log
… Verified database prerequisites
… Created Oracle REST Data Services proxy user
… Created Oracle REST Data Services schema
… Granted privileges to Oracle REST Data Services
… Created Oracle REST Data Services database objects
… Log file written to /home/oracle/ords_install_datamodel_2021-01-07_233302_00744.log
… Log file written to /home/oracle/ords_install_apex_2021-01-07_233311_00188.log
Completed installation for Oracle REST Data Services version 20.3.0.r3011819. Elapsed time: 00:00:52.120 

Enter 1 if you wish to start in standalone mode or 2 to exit [1]:1
Enter the APEX static resources location:/home/oracle/ords/images
Enter 1 if using HTTP or 2 if using HTTPS [1]:
Enter the HTTP port [8080]:
2021-01-07T18:43:03.267Z INFO        HTTP and HTTP/2 cleartext listening on host: localhost port: 8080
2021-01-07T18:43:03.311Z INFO        Disabling document root because the specified folder does not exist: /home/oracle/ords/params/ords/standalone/doc_root
2021-01-07T18:43:06.167Z INFO        Configuration properties for: |apex||
cache.caching=false
cache.directory=/tmp/apex/cache
cache.duration=days
cache.expiration=7
cache.maxEntries=500
cache.monitorInterval=60
cache.procedureNameList=
cache.type=lru
database.api.enabled=true
db.connectionType=basic
db.hostname=dushanbe
db.port=1539
db.servicename=XEPDB1
debug.debugger=false
debug.printDebugToScreen=false
error.keepErrorMessages=true
error.maxEntries=50
feature.sdw=true
jdbc.DriverType=thin
jdbc.InactivityTimeout=1800
jdbc.InitialLimit=3
jdbc.MaxConnectionReuseCount=1000
jdbc.MaxLimit=10
jdbc.MaxStatementsLimit=10
jdbc.MinLimit=1
jdbc.statementTimeout=900
log.logging=false
log.maxEntries=50
misc.compress=
misc.defaultPage=apex
restEnabledSql.active=true
security.disableDefaultExclusionList=false
security.maxEntries=2000
security.requestValidationFunction=wwv_flow_epg_include_modules.authorize
security.validationFunctionType=plsql
db.password=
db.username=APEX_PUBLIC_USER
resource.templates.enabled=true

На этом завершается установка и настройка APEX с ORDS. Можно подключиться к Oracle APEX 20.2 по следующему адресу: http://localhost:8080/ords

Вместо localhost можно указать адрес 127.0.0.1 или IP адрес хоста. В примере используется IP адрес хоста равный 192.168.0.1. Запускается веб-браузер и выполняется переход к следующему адресу:
http://192.168.0.1:8080/ords

Для информации: по умолчанию, для того чтобы получить доступ к корню 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.

Нажимается Next и выполняется переход на шаг создания пользователя с административными правами для нового создаваемого пространства – Dushanbe. Для нового пространства тоже создается пользователь с именем Admin. Указываются пароль, имя, фамилия и email администратора нового создаваемого пространства для разработки приложений:

Нажимается Next и выполняется переход на следующий шаг – подтверждения настроек нового рабочего пространства:

После нажатия Create Workspace начнется создание рабочего пространства и при успешном завершении система выдаст следующее сообщение:

Это означает, что в 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):

[oracle@dushanbe ords]$ pwd
/home/oracle/ords
[oracle@dushanbe ords]$ java -jar ords.war standalone

Если закрыть консоль операционной системы, то сервис ords выполнявшийся в ней завершится. Во избежание этого необходимо команду java -jar ords.war standalone запустить в фоновом режиме, используя nohup:

[oracle@dushanbe ords]$ nohup java -jar ords.war standalone &

При необходимости можно написать скрипт на уровне операционной системы, который будет запускать последнюю команду из нужной директории, и записывать детальную информацию о запуске в определенный лог файл для последующего анализа в будущем.

16 thoughts on “Установка и настройка APEX 20.2 и ORDS 20.3 на Oracle Database 18c Express Edition

  1. при запуске 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

    пароль в разных регистрах пробовал, куда еще копать?

    1. Уважаемый Владислав,
      Спасибо за Ваш вопрос.

      Могли бы проверить и отправить значение инициализационного параметра PARAMETER SEC_CASE_SENSITIVE_LOGON, пожалуйста? Для этого можно запустить SQL*Plus и выполнить следующую команду:
      SQL> SHOW PARAMETER SEC_CASE_SENSITIVE_LOGON;

  2. Здравствуйте!
    Высылаю,но пароль число:

    conn sys/111@//localhost:1521/xepdb1 as sysdba Connected.
    SQL> SHOW PARAMETER SEC_CASE_SENSITIVE_LOGON;
    NAME TYPE VALUE
    ———————— ——- —–
    sec_case_sensitive_logon boolean FALSE

    SQL> alter user TST1 identified by 111;
    User TST1 altered.
    SQL> conn TST1/111@//localhost:1521/xepdb1 …
    jdbc:oracle:thin:@//localhost:1521/xepdb1
    Error Message = ORA-01017: ..

  3. вопрос конечно относился больше субд чем к 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..

    с уважением
    Владислав

    1. Добрый день, Владислав.
      Спасибо за Ваши вопросы и комментарии.

      1. Если Вы не против, напишу отдельный пост в ближайшие дни и развернуто опишу текущий пример (ситуацию) с инициализационным параметром SEC_CASE_SENSITIVE_LOGON. Объяснение тому, почему Вы получаете такую ошибку, есть. Также расскажу о способах ее избежать.
      2. Спасибо за подсказку. Я считаю, что применение alter session set container = ххх для подключения к PDB поможет начинающим быстрее понять принцип работы с Multitenant архитектурой. Кроме упомянутого Вами способа подключения к PDB (кстати, эту команду также можно с консоли операционной системы запускать), использую следующий параметр в переменной среде операционной системы: ORACLE_PDB_SID=xepdb1. В данной работе есть пример использования этого параметра для подключения к PDB под учетной записью sys.
      3. Спасибо за Ваш отзыв и поддержку. Я буду рад, если читатели смогут найти для себя полезную, нужную и интересную информацию в моих статьях. Вашу просьбу учту и постараюсь смоделировать и описать принцип работы ords в разных вариантах.

  4. Добрый день!
    Решил поизучать 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. переустанавливать все как-то не хочется.

    1. Добрый день,

      Могли бы третий пункт подробнее описать, пожалуйста? Каким образом выполняете подключение к БД под пользователем sys? Команда для подключения выполняется под пользователем операционной системы oracle?

  5. Добрый вечер!
    В общем перекопав разные варианты по восстановлению доступа, окончательно все поломал и поэтому грохнуть и все и переустановить оказалось быстрее.
    Опять же помогла Ваша статья про пользователя HR, это он и был заблокирован – пункт 2 решился. По пункту 3 есть подозрения, что первоначально так как я использовал в пароле для sys символ “=”, который не входит в список рекомендуемых символов, то до какого-то этапа это работало, а при установке ords произошла какая-то несовместимость. Во второй раз я был внимательнее, ввел корректные символы и все получилось – REST заработал. Остался только один нюанс, что в первый раз, что во второй, без пароля через sqlplus под системным пользователем я в БД зайти не могу. Все равно при авторизации требует пароль

    1. Добрый вечер.
      Рад, что Вам удалось решить пункты 2 и 3.

      По поводу подключения с помощью команды sqlplus / as sysdba. Могли бы подробнее описать, пожалуйста? Каким образом выполняете подключение к БД без пароля? Команда для подключения выполняется под пользователем операционной системы (oracle)? Пользователь операционный системы (oracle) входит в группу dba операционной системы?

    1. Добрый день.
      По умолчанию standalone ORDS использует порт 8080. Ваша ошибка говорит о том, что порт 8080 уже занят каким-то другим сервисом или Вы возможно пытаетесь запустить standalone ORDS второй раз.

      Для решения этой проблемы Вам необходимо найти файл standalone.properties в директории настроек ORDS. Если Ваши директории и настройки идентичны указанным в моем посте, то упомянутый файл находится в директории /home/oracle/ords/config/ords/standalone. В файле standalone.properties надо найти параметр jetty.port и изменить значение порта 8080 на новый номер порта (например, 8090).

  6. 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?

    1. Hi,

      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.

Leave a Reply to Влад Cancel reply

Your email address will not be published. Required fields are marked *