Показаны сообщения с ярлыком access. Показать все сообщения
Показаны сообщения с ярлыком access. Показать все сообщения

23 апреля 2012

Настройка сервера и клиента для работы со SmartView

В ходе эксплуатации системы во время работы, SmartView (над Planning/Essbase) может "обрадовать" пользователя сообщениями вроде:
  • The request timed out. Contact your administrator to increase netRetrycount and netRetryInterval
  • Request grid size is more than allowed limit
Чтобы избежать первой проблемы, связанной с сетевыми параметрами, необходимо корректно настроить как серверную, так и клиентскую стороны системы:
  1. Прописываем сетевые параметры на сервере в essbase.cfg (или через EAS Console):
  1. В соответствии с рекомендацией Oracle "The Combined Parameters of NETDELAY and NETRETRYCOUNT" [ID 877432.1] произведение параметров NETDELAY и NETRETRYCOUNT не должно превышать 10 минут. На этот лимит и будем всё настраивать. Пример расчета:
1000 for NETDELAY
600  for NETRETRYCOUNT
1000 x 600 = 600000
Divide by 1000 = 600
Divide by 60 = 10 minutes
  1. Перезапускаем сервер Essbase (службу OPMN), чтобы изменения вступили в силу.
  2. Готовим изменения реестра операционных систем на клиентских станциях (на базе Windows XP; Windows 7), используя параметры: 
    • KeepAliveTimeout (интервал проверки активности HTTP-соединений) и ServerInfoTimeout, причем второй нам понадобится, т.к. значение первого превысит 2 минуты; значение второго параметра идентично значению первого
    • ReceiveTimeout (ограничение на время возврата данных от сервера)
  3. В соответствии с рекомендацией Oracle "Smart View Error: The request timed out. Contact your administrator to increase netRetrycount and netRetryInterval" [ID 744559.1] и "FDM Timeout on Import When Using Internet Explorer 7" [ID 1246294.1] получаем файл (*.reg) для внесения изменений в реестр на клиентской станции:
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings]
"ReceiveTimeout"=dword:000927c0
"ServerInfoTimeout"=dword:000927c0

"KeepAliveTimeout"=dword:000927c0
где 000927c0 - это 600000 мсек в HEX-представлении
  1. Этот файл необходимо применить на клиентской станции и перезагрузить ее, чтобы изменения вступили в силу.
Для решения второй проблемы, связанной с ограничением количества запрашиваемых из SmartView у сервера ячеек данных, необходимо настроить только серверную часть:
  1. Прописываем параметр на сервере в essbase.cfg (или через EAS Console):
MAX_REQUEST_GRID_SIZE EssbaseAppName 5000000
  1. В соответствии с рекомендацией Oracle "When Executing MDX Query Network Error Occurs: "[10054] Cannot Send Data" [ID 1071407.1] необходимо также настроить сетевые параметры на сервере. Это мы уже сделали, борясь с первой проблемой :)
  2. Перезапускаем сервер Essbase (службу OPMN), чтобы изменения вступили в силу.

16 апреля 2012

Списки пользователей в Excel

Как и обещал, начинаю выкладывать некоторые "секреты" подготовки материалов к аудиту моей теперешней промышленной системы (FDM, HFM, Planning 11.1.2.00).
Для начала аудиторы запросили список существующих и удаленных пользователей системы. Используя вот эту подсказу вендора (структура и описание реляционных БД продуктов EPM), накидал 2! вьюхи в СУБД (MS SQL Server), в которых отразил все необходимые данные. К сожалению, FDM/HFM слабо интегрированы с HSS, поэтому вьюх и оказалось две.

Отчет по доступу к подсистеме бюджетирования на базе Planning/Essbase был получен таким образом из БД HSS:

SELECT DISTINCT TOP (100) PERCENT
dbo.CSS_USERS.NAME, dbo.CSS_USERS.FIRSTNAME, dbo.CSS_USERS.LASTNAME, dbo.CSS_USERS.DESCRIPTION, dbo.CSS_USERS.EMAIL, dbo.CSS_USERS.ACCOUNTSTATUS, dbo.CSS_GROUPS.NAME AS HSS_GROUP
FROM dbo.CSS_PROVISIONING_INFO CROSS JOIN
dbo.CSS_GROUP_MEMBERS INNER JOIN
dbo.CSS_GROUPS ON dbo.CSS_GROUP_MEMBERS.LOWER_GROUP_IDENTITY = dbo.CSS_GROUPS.LOWER_IDENTITY_ID INNER JOIN
dbo.CSS_USERS ON dbo.CSS_GROUP_MEMBERS.LOWER_MEMBER_IDENTITY = dbo.CSS_USERS.LOWER_IDENTITY_ID
ORDER BY dbo.CSS_USERS.NAME, HSS_GROUP

Отчет по доступу к подсистеме подготовки МСФО отчетности на базе FDM/HFM был получен из БД HSS + HSV_ProductionHFMAppName_SECCACCESS:
SELECT DISTINCT TOP (100) PERCENT
hyp11hss.dbo.CSS_USERS.NAME, hyp11hss.dbo.CSS_USERS.FIRSTNAME, hyp11hss.dbo.CSS_USERS.LASTNAME, hyp11hss.dbo.CSS_USERS.DESCRIPTION, hyp11hss.dbo.CSS_USERS.EMAIL, hyp11hss.dbo.CSS_USERS.ACCOUNTSTATUS,  dbo.HSV_ProductionHFMAppName_SECCLASSES.Label AS SecClass
FROM dbo.HSV_ProductionHFMAppName_SECCACCESS INNER JOIN
dbo.HSV_ProductionHFMAppName_SECCLASSES ON dbo.HSV_ProductionHFMAppName_SECCACCESS.ItemID = dbo.HSV_ProductionHFMAppName_SECCLASSES.ItemID INNER JOIN
hyp11hss.dbo.CSS_USERS ON dbo.HSV_ProductionHFMAppName_SECCACCESS.UserSID = hyp11hss.dbo.CSS_USERS.LOWER_IDENTITY_ID
ORDER BY hyp11hss.dbo.CSS_USERS.NAME
где hyp11hss - имя БД HSS, HSV_ProductionHFMAppName_SECCLASSES - имя таблицы с классами безопасности FDM/HFM.

Таким образом, подключившись к созданным вьюшкам из Excel, свободно получаем данные для формирования отчетов по безопасности.

Отмечу, что пользователей мы декативируем, а не удаляем, сохраняя таким образом целостность аудита. По полю ACCOUNTSTATUS устанавливаем фильтр: где 1 - активный пользователь; 2 - "мертвая душенка".


08 декабря 2011

Проблемы при запуске EAS Console 11.1.2.0

День начинался удачно.... Пока не перестала работать EAS Console 11.1.2.0 ни с моего рабочего места, ни с сервера (локально).
Советы по устранению:
0. Смотрю логи здесь:
- \Middleware\user_projects\epmsystem1\diagnostics\logs\eas\
- \Middleware\user_projects\domains\EPMSystem\servers\EssbaseAdminServices0\logs\EssbaseAdminServices0.log
1. Отслеживаю логи, пытаясь запустить консоль. Судя по последнему логу, запуск приложения на WebLogic application server прошел успешно...
2. Останавливаю службу EAS. Удаляю папку из \Middleware\user_projects\epmsystem1\tmp\2\servers\ директорию EssbaseAdminServices0. В ней отсутствовал какой-то .war файл. Эта папка генерируется автоматически сервером Weblogic.
3. Вижу предупреждение о том, что в DNS имени сервера соответствуют 2 адреса – IPv4 и IPv6. ИТ-шникам сообщил :)
4. Запускаю сервис и пытаюсь войти в консоль по IPv4 адресу сервера. Все работает!

11 марта 2011

Изменение режима обслуживания приложения Planning через batch-файл

Очень интересное и простое решение, которое можно использовать, например на время бэкапа или обновления метаданных (через ODI/batch).
В первом случае [бэкап] обычно используют MaxL скрипт, который принудительно прерывает операции в Essbase и производит выгрузку данных. При этом пользователь обычно может войти в приложение, но получит ошибку при открытии формы, поскольку Essbase находится в этот момент в режиме обслуживания. Не очень красиво, конечно. Да, и пользователь начнет писать гневные письма.
Во втором случае [обновления справочников/измерений в приложении Planning] желательно пользователей до завершения деплоя вообще не пускать в приложение.
Таким образом, очень удобно поставить в расписание перед бэкапом, обновлением и т.п. задачу перевода приложения в режим обслуживания с доступом только администраторам, а по окончании этих работ - обратно дать доступ пользователям.

Метод изменения режима обслуживания приложения Planning через batch-файл описан по этой ссылке.

09 июля 2009

Скрипты по правам

Если вдруг кому интересно, скрипт раздачи прав на доступ пользователя или группы ко всем формам папки(и подпапок).

declare
l_folder_name varchar2(100) := 'folder_name';
l_user_name varchar2(100) := 'user_or_group_name';
l_user_id number;
l_access_level number := 3; -- 1 - read access;
-- 3 - write access
begin
select object_id into l_user_id from hsp_object where object_name = l_user_name;
for i in (select object_id
from (select *
from hsp_object
start with object_name = l_folder_name
connect by prior object_id = parent_id)
where object_type = 7) loop -- 7 - forms
begin
insert into hsp_access_control (object_id, user_id, access_mode, flags) values (i.object_id, l_user_id, l_access_level, 0);
exception when dup_val_on_index then null;
end;
end loop;
exception when no_data_found then
raise_application_error(-20000, 'User or group '''||l_user_name||''' not found.');
end;