betacode

Установите Oracle REST Data Services (ORDS) для Oracle APEX

View more Tutorials:

1- Введение

Статья основана на:
  • Oracle 11g, 12c

  • ORDS 3.x

2- Что такое Oracle REST Data Services?

Oracle REST Data Services (ORDS) это сервис данных заменяющий Oracle HTTP server и mod_plsql. Основанный на Java EE предоставляет серсисы RESTful  и повышает способность безопасности. Он развернут на WebLogic, Tomcat, Glassfish или работает независимо.

3- Интеракция между Oracle ORDS и Oracle APEX

Обычно, у вас есть 2 способа установки Oracle APEX.

Способ 1: Конфигурация Embedded PL/SQL Gateway: Это способ конфигурации Oracle APEX который может работать на Oracle XML DB HTTP Server, это готовый HTTP когда вы устанавливаете Oracle 11g или новее.

Способ 2: Конфигурация  Oracle APEX на определенном веб сервере, например WebLogic, Tomcat или Glassfish,...
Ссылка работает с Oracle APEX как ниже:
  • http://your-server:8080/apex
Чтобы использовать сервисы RESTful вам нужно дополнительно установить Oracle ORDS, который может развернуться на WebLogic Server, Tomcat, Glassfish,.. или работать независимо. Oracle ORDS может читать напрямую в Oracle APEX и полностью заменить Oracle HTTP Server, поэтому вы можете использовать сервисы RESTful на APEX и использовать новый URL для работы с Oracle APEX.
  • http://your-server:8080/ords

4- Download Oracle ORDS

 Вы можете скачать Oracle ORDS по ссылке:
Результаты скачивания:

5- Конфигурация ORDS для APEX

CD к папке с установленным apex.
Войти в систему sqlplus с авторизацией sysdba.
Запустить команду конфигурации REST Service.
-- Configuring REST Service.


@apex_rest_config.sql
После успешного выполнения команды выше, создаются 2 user APEX_LISTENER и APEX_REST_PUBLIC_USER.
  1. APEX_LISTENER - Аккаунт использованный для запроса определения сервисов RESTful сохраненных в Oracle APEX.
  2. APEX_REST_PUBLIC_USER - Аккаунт использованный при вызове определений сервиса сохраненных в Oracle APEX.

Включить сетевые службы (Network Services)

По умолчанию, сетевые службы (Network Services) отключены в Oracle 11g или новее. Поэтому вам нужно использовать пакет DBMS_NETWORK_ACL_ADMIN чтобы дать авторизацию доступа к любому хосту для user database APEX_050000.
Вам нужно сделать запрос для просмотра пользователей APEX в базе данных:
Select Username from All_Users where username like 'APEX%';
Запустить команду для авторизации к любому хосту для user database APEX_050000.
Declare
   Acl_Path Varchar2(4000);
Begin
   -- Look for the ACL currently assigned to '*' and give APEX_050000
   -- the "connect" privilege if APEX_050000 does not have the privilege yet.
   Select Acl
   Into   Acl_Path
   From   Dba_Network_Acls
   Where  Host = '*'
   And    Lower_Port Is Null
   And    Upper_Port Is Null;
   If Dbms_Network_Acl_Admin.Check_Privilege(Acl_Path
                                            ,'APEX_050000'
                                            ,'connect') Is Null Then
      Dbms_Network_Acl_Admin.Add_Privilege(Acl_Path
                                          ,'APEX_050000'
                                          ,True
                                          ,'connect');
   End If;
Exception
   -- When no ACL has been assigned to '*'.
   When No_Data_Found Then
      Dbms_Network_Acl_Admin.Create_Acl('power_users.xml'
                                       ,'ACL that lets power users to connect to everywhere'
                                       ,'APEX_050000'
                                       ,True
                                       ,'connect');
      Dbms_Network_Acl_Admin.Assign_Acl('power_users.xml'
                                       ,'*');
End;
/

Commit;
 

Дать авторизацию соединения пользователю базы данных APEX_050000 (Oracle 11g):

Declare
   Acl_Path Varchar2(4000);
Begin
   -- Look for the ACL currently assigned to '*' and give APEX_050000
   -- the "connect" privilege if APEX_050000
   --does not have the privilege yet.
   Select Acl
   Into   Acl_Path
   From   Dba_Network_Acls
   Where  Host = '*'
   And    Lower_Port Is Null
   And    Upper_Port Is Null;
   If Dbms_Network_Acl_Admin.Check_Privilege(Acl_Path
                                            ,'APEX_050000'
                                            ,'connect') Is Null Then
      Dbms_Network_Acl_Admin.Add_Privilege(Acl_Path
                                          ,'APEX_050000'
                                          ,True
                                          ,'connect');
   End If;
Exception
   -- When no ACL has been assigned to '*'.
   When No_Data_Found Then
      Dbms_Network_Acl_Admin.Create_Acl('power_users.xml'
                                       ,'ACL that lets power users to connect to everywhere'
                                       ,'APEX_050000'
                                       ,True
                                       ,'connect');
      Dbms_Network_Acl_Admin.Assign_Acl('power_users.xml'
                                       ,'*');
End;
/

Commit;

Дать авторизацию соединения пользователю базы данных APEX_050000 (Oracle 12c):

Процедуры CREATE_ACL, ASSIGN_ACL, ADD_PRIVILEGE и CHECK_PRIVILEGE в пакете DBMS_NETWORK_ACL_ADMIN устарели в Oracle Database 12c. Oracle рекомендует вам использовать APPEND_HOST_ACE.
-- Sử dụng cho Oracle 12c.

BEGIN
    DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
        host => '*',
        ace => xs$ace_type(privilege_list => xs$name_list('connect'),
                           principal_name => 'APEX_050000',
                           principal_type => xs_acl.ptype_db));
END;
/

6- Развертывание ORDS

 Примечание: Удостоверьтесь что вы установили Java версию 7 или новее. И объявили переменную среды PATH в папку bin Java. Вы можете посмотреть инструкцию установки Java по ссылке:
Добавить в конец PATH, ссылку к папке bin в Java.
  • ;C:\DevPrograms\Java\jdk1.8.0_65\bin
Извлечь файл ords-**.zip который вы скачали в определнную папку.
Вы можете увидеть в извлеченной папке есть файл ords.war
Копировать папку images в apex в папку ords:
Теперь мы установим Oracle ORDS независимо (Не нужно развертывать на WebLogic, Tomcat или на другом Web server)
CD к папке ords:
Далее войдите в sqlplus с авторизацией sysdba.
 
Ваш Oracle APEX работает на Oracle XML DB HTTP Server, вы должны отключить его командой:
--  Disable Oracle APEX on Oracle XML DB HTTP Server.

EXEC DBMS_XDB.SETHTTPPORT(0);


-- Note: You can enable it with command:

EXEC DBMS_XDB.SETHTTPPORT(8080)
Выйти из sqlplus. И CD в папку ords:
Запуск команды:
# Run command:

java -jar ords.war

# Or:

java -jar ords.war install
Ввести адрес компьютера содержащего базу данных (По умолчанию это localhost):
Порт базы данных (По умолчанию 1521):
Ввести Service Name или SID базы данных:
Ввести пароль для пользователя базы данных: ORDS_PUBLIC_USER
Sqlplus требует еще раз ввести информацию пользователя базы данных с авторизацией sysdba. (Ввести sys и потом ввести password).
SQLPlus спрашивает используете ли вы Oracle APEX, если да, введите 1, введите 1 и enter чтобы продолжить:
Ввести пароль для пользователя который будет создан APEX_PUBLIC_USER:
Далее введите 1 чтобы определить password для созданных 2 пользователей базы данных (APEX_LISTENER, APEX_REST_PUBLIC_USER).
Выбрать 1 для независимого развертывания ORDS (Standalone).
Вы успешно конфигурировали ORDS. Закрыть окно CMD.

Запуск ORDS

Примечание: Вы можете запустить команду ниже, чтобы посмотреть способ использования:


java -jar ords.war help standalone
CD в папку ORDS и запустить команду:
java -jar ords.war standalone --port 8080 --apex-images C:/DevPrograms/ords/images
В первый раз, он спросит где расположить файл установки:
ORDS успешно развернут.
Примечание: Если вы получили ошибку:
Разблокируйте для пользователя APEX_PUBLIC_USER
Column username format a25;
Column account_status format a25;

-- Query unlocked APEX user.

select username,account_status from dba_users
 where lock_date is not null
 and username like 'APEX%';
Alter user APEX_PUBLIC_USER account unlock;
Файлы конфигурации созданы после того, как вы развернули ORDS:
Не закрывайте окно выше, вы можете использовать APEX с новой ссылкой:

View more Tutorials:

Maybe you are interested

Это онлайн курс вне вебсайта o7planning, который мы представляем, он включает бесплатные курсы или курсы со скидкой.