Essbase Data in PL/SQL through XMLA (Providers Services)

Когда стоит задача интеграционной связки ERP систем с Hyperion Planning (Essbase) в части передачи данных, то одним из решением, точечной выгрузки, является использование служб Providers Services, которые предоставляют Web Службы XMLA. (Стандарт XMLA открывает Essbase для Microsoft Reporting и для других программ )

Для работы нам потребуется
1) Essbase
2) ProviderServices
3) Essbase Administration Console
4) Shared Services
5) Oracle DB (10g/11g)

Этот технологический стек используется в работе Excel SmartView AddIn, и при соблюдении разумных ограничений (на объем выгружаемых данных), можно смело использовать на высоконагруженных промышленных окружениях.

Для того что бы с web серверу можно было обратиться из Oracle RDB 11g нужно настроить политики безопасности ( это особенность 11-ой версии) :
Для это последовательно нужно создать фильтры доступа (Access Control List (ACL), добавить туда политики настройки безопасности.

begin
dbms_network_acl_admin.create_acl
(
acl => ‘BRDG_ESSBASE_2SQL.xml’,
description => ‘Normal Access’,
principal => ‘BRDG_ESSBASE_2SQL’,
is_grant => TRUE,
privilege => ‘connect’,
start_date => null,
end_date => null
);
end;

begin
dbms_network_acl_admin.assign_acl
(
acl => ‘BRDG_ESSBASE_2SQL.xml’,
host => ‘*’,
lower_port => NULL,
upper_port => NULL
);
commit;
end;

Проверить настройки безопасности можно с помощью след. запросов

SELECT host, lower_port, upper_port, acl FROM dba_network_acls;

SELECT acl, principal, privilege, is_grant,
TO_CHAR(start_date, ‘DD-MON-YYYY’) AS start_date,
TO_CHAR(end_date, ‘DD-MON-YYYY’) AS end_date
FROM dba_network_acl_privileges;

После этих команд наш Oracle RDB 11g уже готов делать Webзапросы . Я отказался от работы с пакетами XML и разобрал поток самостоятельно. Реализацию с XML можно взять вот тут.

Сам код процедуры и пример запроса можно взять вот тут.