Установите Oracle REST Data Services (ORDS) для Oracle APEX
1. Что такое Oracle REST Data Services?
Oracle REST Data Services (ORDS) это сервис данных заменяющий Oracle HTTP server и mod_plsql. Основанный на Java EE предоставляет серсисы RESTful и повышает способность безопасности. Он развернут на WebLogic, Tomcat, Glassfish или работает независимо.
2. Интеракция между 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,...
Способ 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. Конфигурация ORDS для APEX
CD к папке с установленным apex.
Войти в систему sqlplus с авторизацией sysdba.
Запустить команду конфигурации REST Service.
-- Configuring REST Service.
@apex_rest_config.sql
После успешного выполнения команды выше, создаются 2 user APEX_LISTENER и APEX_REST_PUBLIC_USER.
- APEX_LISTENER - Аккаунт использованный для запроса определения сервисов RESTful сохраненных в Oracle APEX.
- 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;
/
5. Развертывание 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_USERColumn 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 с новой ссылкой:
Руководства Oracle APEX
- Что такое Oracle Application Express?
- Установите Oracle Apex 5.0
- Установите Oracle REST Data Services (ORDS) для Oracle APEX
- Руководство Oracle APEX для начинающих (APEX 5.0)
- Руководство Oracle APEX Tabular Form
- Руководство Oracle APEX Master Details
- Пользовательская аутентификация в Oracle APEX
- Руководство Oracle APEX Dynamic Action
- Создание области динамического содержимого в Oracle APEX (PL/SQL Dynamic Content)
- Что такое Business Intelligence?
- Установить Oracle BI 11g
Show More