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

23 мая 2013

Анонсы webcast'ов


На MOS доступен набор анонсов и архивных записей с webcast'ов по EPM:

Financial Reporting Reports troubleshooting

Начало: 22 мая 2013 в 19:00 (Moscow; GMT+04:00)
Регистрация: https://oracleaw.webex.com/oracleaw/onstage/g.php?d=593146224&t=a

Preparing EPM 11.1.2.3 in an Linux VirtualBox Environment

Начало: 26 июня 2013 в 18:00 или 27 июня 2013 в 6:00 (Moscow; GMT+04:00)
Регистрация: https://oracleaw.webex.com/oracleaw/onstage/g.php?d=592357520&t=a

Архивы

Доступны записи и презентации с комментариями в PDF

2013

  • EPM Log Hide and Seek (with generic Oracle tools)
  • EPM Log Hide and Seek (with Hyperion tools)
  • Migrating Business Rules to Calc Manager

2012

  • Integrating DRM with Oracle General Ledger and EPM Applications
  • New Features and Improvements in HFM and Calculation Manager 11.1.2.2.300
  • Just in Time Diagnostic Dumps for EPM 11.1.2.x
  • Catch the Pulse of EPM 11.1.2.x in Enterprise Manager
  • Mapped Reporting Applications (MRA)
  • Troubleshooting EPM Reporting & Analysis 11.1.2.x
  • Planning Performance Pitfalls
  • Improving the Performance of HFM

2011

  • Remote Diagnostic Agent (RDA) Use with EPM/BI Applications - US; EMEA/APAC
  • User Productivity Kit 11
  • How to Resolve your EPM and BI Technical Issues Faster
  • Smart View Release 11.1.2.1.102 for Oracle Hyperion Essbase

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 - "мертвая душенка".


06 апреля 2012

MaxL по расписанию

Часто бывает необходимым поставить выполнение MaxL скрпита в расписание. Причем этот скрипт создан в EAS Console и хранится на сервере. Я решил эту задачу созданием batch файла, который ставится в расписание Windows Server:
@echo off
rem - Input parameter is a name of MaxL script (only name w/out extension)
Входящим параметром является имя MaxL скрпита без расширения.
setlocal
cls

Rem Set Variables
SET ESSSETENV=F:\Oracle\Middleware\user_projects\epmsystem1\EssbaseServer\essbaseserver1\bin\setEssbaseEnv.bat
SET SERVER=EssbaseServerNameOrIP
SET USER=Ess_admin_name
SET PASSWORD=Ess_password
Rem See more info about Encyption on https://forums.oracle.com/forums/thread.jspa?threadID=1021677
SET PKE=set_your_Public_Key_for_Encryption
SET PKD=set_your_Private_Key_for_Decryption
SET MaxLPath=F:\Oracle\Middleware\EPMSystem11R1\products\Essbase\eas\storage\mxlscripts\%USER%
SET EADMaxl=%MaxLPath%\%1
Вся информация сохранится в логе, имя файла которого задается переменной EXECLOG.
SET EXECLOG=AutoStartMaxL-%1.log
SET RunMaxl=AutoStartMaxL.mxl
SET CurrDir=%CD%

echo Started: %date% @ %time% > %CurrDir%\%EXECLOG%
Поскольку в консоли вход и подключение производить не нужно, а внешним скриптом - необходимо, добавляем строки входа (login) и завершения работы (logout и exit).
Rem - Generate MaxL Script - Start
echo login '%USER%' '%PASSWORD%' on '%SERVER%'; > %CurrDir%\%RunMaxl%
Сам скрипт считываем из исходного файла на сервере.
Rem - Read original MaxL
For /F "eol=; delims=/" %%i In (%EADMaxl%) Do (
    echo %%i ) >>  %CurrDir%\%RunMaxl%

echo logout; >> %CurrDir%\%RunMaxl%
echo exit; >> %CurrDir%\%RunMaxl%
Rem - Generate MaxL Script - Finish

Rem Set Essbase Env
call %ESSSETENV%
Сам скрипт запускаем в шифрованном виде. 
Rem Encrypt MaxL Script
essmsh -E %CurrDir%\%RunMaxl% %PKE% > nul
Rem Del Original MaxL Script
del %CurrDir%\%RunMaxl% > nul
Rem Run Encrypted MaxL Script with LOG
essmsh -D %CurrDir%\%RunMaxl%s %PKD% >> %CurrDir%\%EXECLOG%

echo ... >>  %CurrDir%\%EXECLOG%
echo Script: >>  %CurrDir%\%EXECLOG%
For /F "eol=; delims=/" %%i In (%CurrDir%\%RunMaxl%s) Do (
    echo %%i ) >>  %CurrDir%\%EXECLOG%
echo ... >>  %CurrDir%\%EXECLOG%

Rem Del Encrypted MaxL Script
del %CurrDir%\%RunMaxl%s >> %CurrDir%\%EXECLOG%

echo Finished: %date% @ %time%  >> %CurrDir%\%EXECLOG%
Добавляем в расписание (Task Scheduler) задачу на выполнение нашего bat-файла с параметром - именем MaxL скрпита.
 


26 марта 2012

Скользкие формы Planning

Встала передо мной задача: построить формы в Planning таким образом, чтобы на форме был текущий месяц (Period Dim) и пару месяцев назад. Естественно, каждый раз перестраивать ручками формы лень, а есть ситуации, когда нужно "заглянуть" на 1-2 мес в прошлый год. Вот и получаются у нас "скользящие" формы.
К сожалению, сами формы данных, в отличие от отчетов FinReporting, построить с использование ссылающихся функций (вроде Prior) нельзя. Ответ нашелся на форуме: https://forums.oracle.com/forums/thread.jspa?messageID=9454665 Да, и так понятно, что это единственный вариант - через переменные подстановки в Essbase. Прекрасно, приступим к реализации:
  1. Определяемся с набором переменных. Для каждого "специфического" периода может быть нужен свой год. Например, в моем случае: в январе текущего понадобятся еще ноябрь и декабрь прошлого года, а в феврале - только декабрь прошлого года и январь нынешнего:
    • CurrYearFor - текущий год
    • CurrPerFor - текущий период для Прогнозирования
    • Prev1PerFormFor - предыдущий период
    • Prev1YearFormFor - год для предыдущего периода (Prev1PerFormFor)
    • Prev2PerFormFor - пред-пердыдущий период
    • Prev2YearFormFor - год для пред-предыдущего периода (Prev2PerFormFor)
  2. Создаем эти переменные подстановки в кубе приложения Essbase. Либо ручками (операция по сути - разовая), либо MaxL-скриптиком с использованием команд на нужной БД (кубе) Essbase:
    alter database sample.basic add variable CurMnth 'Jan';
    таким синтаксисом мы создаем переменную для куба приложения. Есть еще варианты для одного приложения:

    alter application sample add variable CurMnth 'Jan';

    или инстанса Essbase:
    alter system add variable CurMnth 'Jan';
  3. Настраиваем формы данных на использование этих переменных. Здесь придется отказаться от выбора года и периода в срезе, потому что придется эти измерения "зашивать" в таблицы данных.
  4. Готовим скрипт (bat для Windows env.) для обновления переменных по мере необходимости:
    @echo off
    setlocal
    cls

    Rem Set Variables
    SET ESSSETENV=F:\Oracle\Middleware\user_projects\epmsystem1\EssbaseServer\essbaseserver1\bin\setEssbaseEnv.bat
    SET SERVER=epm_server_name
    SET USER=ess_admin
    SET PASSWORD=ess_password
    Ниже укзаываются Public Key for Encryption и Private Key for Decryption. Это необходимо для шифрования учетных записей пользователя для исполнения MaxL скрипта. Подробности
    SET PKE=
    SET PKD=
    SET App=AppName
    SET Cube=PlanName
    SET OuputMaxl=EssVarsUpdate.maxl
    В EssVarsUpdate_AutoExec.log будем сохранять лог основных операций, а в %LogDate%_EssVarsUpdate.log исполняемый MaxL.
    SET EXECLOG=EssVarsGenerator_Auto.log
    SET CurrDir=%CD%
    SET LogSubDir=%CurrDir%\LOGS
    SET CurrYear=%date:~12%
    SET /A PrevYear=%CurrYear% - 1
    SET Day=%date:~7,2%
    SET Month=%date:~4,2%
    SET LogDate=%CurrYear%-%Month%-%Day%
    if '%Month:~0,1%'=='0' set Month=%Month:~1,1%

    Не забудьте проверить значения переменных CurrYear, Month. Зависят от используемой на сервере локали.
    Rem LOG
    echo Генератор переменных БД Essbase по Прогозу для построения "скользящих" форм >> %LogSubDir%\%EXECLOG%
    echo Started: %date% @ %time% >> %LogSubDir%\%EXECLOG%
    echo Params: CurrMonth:%Month%; CurrYear:%CurrYear%; PrevYear:%PrevYear% >> %LogSubDir%\%EXECLOG%

    Rem Checkin' Input Parameter
    IF %Month% LSS 1 GOTO :error
    IF %Month% GTR 12 GOTO :error 
    Ниже - список базовых элементов измерения Period
    Rem Input Parameter Converter
    IF %Month%==1 SET TempMonth='January'
    IF %Month%==2 SET TempMonth='February'
    IF %Month%==3 SET TempMonth='March'
    IF %Month%==4 SET TempMonth='April'
    IF %Month%==5 SET TempMonth='May'
    IF %Month%==6 SET TempMonth='June'
    IF %Month%==7 SET TempMonth='July'
    IF %Month%==8 SET TempMonth='August'
    IF %Month%==9 SET TempMonth='September'
    IF %Month%==10 SET TempMonth='October'
    IF %Month%==11 SET TempMonth='November'
    IF %Month%==12 SET TempMonth='December'

    Rem Create MAXL script
    echo spool on to '%LogSubDir%\%LogDate%_EssVarsUpdate.log'; > %CurrDir%\%OuputMaxl%
    echo login '%USER%' '%PASSWORD%' on '%SERVER%'; >> %CurrDir%\%OuputMaxl%

    Rem Set Current Period and Year, Start Period for Forecast calculations
    echo alter database '%App%'.'%Cube%' set variable 'CurrYearFor' 'FY%CurrYear%'; >> %CurrDir%\%OuputMaxl%
    echo alter database '%App%'.'%Cube%' set variable 'CurrPerFor' %TempMonth%; >> %CurrDir%\%OuputMaxl%
    echo alter database '%App%'.'%Cube%' set variable 'StartPerFor' %TempMonth%; >> %CurrDir%\%OuputMaxl%

    Rem Set Previous Period and Year
    SET /A Mon = 100%Month% %% 100
    SET /A PriorMonth=%Mon% - 1
    SET Prev1YearFormFor='FY%CurrYear%'
    IF %PriorMonth% == 0 SET Prev1YearFormFor='FY%PrevYear%'
    IF %PriorMonth% == 0 SET PriorMonth=12
    IF %PriorMonth%==1 SET TempMonth='January'
    IF %PriorMonth%==2 SET TempMonth='February'
    IF %PriorMonth%==3 SET TempMonth='March'
    IF %PriorMonth%==4 SET TempMonth='April'
    IF %PriorMonth%==5 SET TempMonth='May'
    IF %PriorMonth%==6 SET TempMonth='June'
    IF %PriorMonth%==7 SET TempMonth='July'
    IF %PriorMonth%==8 SET TempMonth='August'
    IF %PriorMonth%==9 SET TempMonth='September'
    IF %PriorMonth%==10 SET TempMonth='October'
    IF %PriorMonth%==11 SET TempMonth='November'
    IF %PriorMonth%==12 SET TempMonth='December'
    echo alter database '%App%'.'%Cube%' set variable 'Prev1PerFormFor' %TempMonth%; >> %CurrDir%\%OuputMaxl%
    echo alter database '%App%'.'%Cube%' set variable 'Prev1YearFormFor' %Prev1YearFormFor%; >> %CurrDir%\%OuputMaxl%

    Rem Set Pre-Previous Period and Year
    SET /A PriorMonth=%Mon% - 2
    SET Prev2YearFormFor='FY%CurrYear%'
    IF %PriorMonth% == 0 SET Prev2YearFormFor='FY%PrevYear%'
    IF %PriorMonth% == -1 SET Prev2YearFormFor='FY%PrevYear%'
    IF %PriorMonth% == 0 SET PriorMonth=12
    IF %PriorMonth% == -1 SET PriorMonth=11
    IF %PriorMonth%==1 SET TempMonth='January'
    IF %PriorMonth%==2 SET TempMonth='February'
    IF %PriorMonth%==3 SET TempMonth='March'
    IF %PriorMonth%==4 SET TempMonth='April'
    IF %PriorMonth%==5 SET TempMonth='May'
    IF %PriorMonth%==6 SET TempMonth='June'
    IF %PriorMonth%==7 SET TempMonth='July'
    IF %PriorMonth%==8 SET TempMonth='August'
    IF %PriorMonth%==9 SET TempMonth='September'
    IF %PriorMonth%==10 SET TempMonth='October'
    IF %PriorMonth%==11 SET TempMonth='November'
    IF %PriorMonth%==12 SET TempMonth='December'
    echo alter database '%App%'.'%Cube%' set variable 'Prev2PerFormFor' %TempMonth%; >> %CurrDir%\%OuputMaxl%
    echo alter database '%App%'.'%Cube%' set variable 'Prev2YearFormFor' %Prev2YearFormFor%; >> %CurrDir%\%OuputMaxl%
    echo logout; >> %CurrDir%\%OuputMaxl%
    echo spool off; >> %CurrDir%\%OuputMaxl%
    echo exit; >> %CurrDir%\%OuputMaxl%

    Rem Set Essbase Env
    call %ESSSETENV%
    Rem Encrypt MaxL Script
    essmsh -E %CurrDir%\%OuputMaxl% %PKE% > nul
    Rem Del Original MaxL Script
    del %CurrDir%\%OuputMaxl% >> %LogSubDir%\%EXECLOG%
    Rem Run Encrypted MaxL Script
    essmsh -D %CurrDir%\%OuputMaxl%s %PKD% > nul
    Rem Del Encrypted MaxL Script
    del %CurrDir%\%OuputMaxl%s >> %LogSubDir%\%EXECLOG%

    echo MaxL log U can find here: %LogSubDir%\%LogDate%_EssVarsUpdate.log >> %LogSubDir%\%EXECLOG%
    GOTO :fine

    :error
    set ERRORLEVEL=-1
    echo Wrong input parameter '%Month%' (Num. of month) :( >> %LogSubDir%\%EXECLOG%
    echo Input value must be in range [1..12] >> %LogSubDir%\%EXECLOG%
    GOTO :end

    :fine
    set ERRORLEVEL=0
    echo Essbase Variables has been updated successfully =) >> %LogSubDir%\%EXECLOG%
    GOTO :end

    :end
    echo Finished: %date% @ %time% >> %LogSubDir%\%EXECLOG%
    echo ... >> %LogSubDir%\%EXECLOG%
  5. Автоматизируем запуск этого файла, вставляя задачу в Task Scheduler. Сначала я готовил батничек для ручного режима с менюшкой для ответственного пользователя, но пришел к выводу, что могу автоматизировать процесс такого обновления переменных: я знаю, что пользователи полезут в систему к 1-му числу, значит числа 25 могу смело обновлять переменные. 
UPD: Макс, спасибо за помощь в вопросах корректного запуска essmsh и шифрования учетных данных!

25 января 2012

Please, don't kill me!

Не убивайте свои системы EPM 11.1.2.0, они сделают это сами :) ):


Бага оказалась небанальной:

Симптомы
Недоступность системы для работы пользователей.
Во время работы пропал доступ к сервису Reporting & Analysis Framework, ответственного за формирование отчетов Financial Reporting и Web Analysis. Cервис Reporting & Analysis Framework в свою очередь связан с модулем Workspace – основной точкой входа во все приложения CIBRIS (Hyperion Planning, Hyperion Financial Consolidation). Риска потери данных в системе не было.

Диагностика
1. Неработоспособность Reporting & Analysis Framework привела к неработоспособности Workspace. Кроме того, была обнаружена неявная ошибка: компонент Reporting & Analysis Framework не мог записывать данные в свой лог-файл (баг вендора), из-за чего также не работал корректно.
2. SmartView не работал, т.к. использует протокол http через workspace.
3. Анализ лога WebLogic Server (WLS) указал на множество накопленных «мертвых», неиспользуемых объектов системы, в частности Reporting & Analysis Framework, из-за чего запросы выполнялись дольше установленного таймаута, что не позволяло возвращать результаты по запросу в установленное время.
4. Антивирус на сервере не настроен в соответствии с рекомендациями вендора Recommendations Regarding Antivirus Settings for Enterprise Performance Management (EPM) System Products [ID 1315173.1].

Лечение
Никогда не оставляйте включенным утюг опцию Change Ownership Event в этой версии здесь:
Workspace - Navigate - Administer - Reporting & Analysis - Event Tracking
и беспощадно убейте этот лог-файл:
Middleware_Home\user_projects\epmsystem1\diagnostics\logs\ReportingAnalysis\rafservletsUTBackup.log
Все подробности в документе Raframework Web Application Crashes Due to Usage Tracking. [ID 1334441.1].

23 января 2012

Оптимизация БД EPMA для EPM 11.1.x

Со временем сильно увеличивается БД EPM Architect, что негативно сказывается на скорости работы этого компонента. А в некоторых случаях, веб-сервер не успевает получить ответ в установленный таймаут, и возникает проблема, когда приложение (наример, Planning) может остаться в подвешенном состоянии.

Ниже представлено решение этой проблемы для EPM 11.1.3+
  1. Остановить службу EPMA Process Manager
  2. Сделать полный бэкап БД EPM Architect
  3. Запустить службу EPMA Process Manager
  4. Запустить утилиту database_cleanup_utility.exe, которая находится
    либо здесь для 11.1.1.x: \Hyperion\products\Foundation\BPMA\AppServer\DimensionServer\ServerEngine\bin\
    либо здесь для 11.1.2.x: \Oracle\Middleware\EPMSystem11R1\products\Foundation\BPMA\AppServer\DimensionServer\ServerEngine\bin
  5. Использовать администраторский логин/пароль EPM
  6. Запустить очистку для записей старше 45-60 дней
  7. Либо почистить БД EPM Architect скриптом (пример для Oracle DB 10g+):
    SELECT TO_CHAR(SYSDATE,'Dy DD-Mon-YYYY HH24:MI:SS') AS "Current Time 1" FROM DUAL;

    CREATE TABLE tmp_DS_MaxTransactions NOLOGGING AS
    SELECT a.i_application_id, MAX(i_transaction_id) AS i_transaction_id
      FROM DS_Transaction_History a
      JOIN DS_Application b
      ON a.i_library_id = b.i_library_id
      AND a.i_application_id = b.i_application_id
      JOIN DS_Library c
      ON a.i_library_id = c.i_library_id
      WHERE c.b_master = 1
      AND a.i_application_id IS NOT NULL
      AND (b.i_first_deploy_transaction_id IS NOT NULL OR b.b_master = 1)
      AND i_transaction_id >= COALESCE(b.i_last_deployed_transaction_id, b.i_first_deploy_transaction_id, 0)
      AND e_transaction_action = 'OrderChildren'
      GROUP BY a.i_application_id;
    COMMIT;

    SELECT TO_CHAR(SYSDATE,'Dy DD-Mon-YYYY HH24:MI:SS') AS "Current Time 2" FROM DUAL;

    -- Keep newest OrderChildren row for each application.  Logging resumes for this table
    -- after it is created and populated by this statement.
    CREATE TABLE tmp_DS_Transaction_History NOLOGGING AS
      SELECT a.* FROM DS_Transaction_History a
        JOIN tmp_DS_MaxTransactions b
        ON a.i_transaction_id = b.i_transaction_id;
    COMMIT;

    SELECT TO_CHAR(SYSDATE,'Dy DD-Mon-YYYY HH24:MI:SS') AS "Current Time 3" FROM DUAL;

    DROP TABLE tmp_DS_MaxTransactions;

    SELECT TO_CHAR(SYSDATE,'Dy DD-Mon-YYYY HH24:MI:SS') AS "Current Time 4" FROM DUAL;

    ALTER TABLE tmp_DS_Transaction_History NOLOGGING;

    SELECT TO_CHAR(SYSDATE,'Dy DD-Mon-YYYY HH24:MI:SS') AS "Current Time 5" FROM DUAL;

    -- Add back all non-OrderChildren rows.
    INSERT INTO tmp_DS_Transaction_History
      SELECT * FROM DS_Transaction_History
      WHERE e_transaction_action != 'OrderChildren';
    COMMIT;

    SELECT TO_CHAR(SYSDATE,'Dy DD-Mon-YYYY HH24:MI:SS') AS "Current Time 6" FROM DUAL;

    DROP TABLE DS_Transaction_History;

    SELECT TO_CHAR(SYSDATE,'Dy DD-Mon-YYYY HH24:MI:SS') AS "Current Time 7" FROM DUAL;

    RENAME tmp_DS_Transaction_History TO DS_Transaction_History;

    SELECT TO_CHAR(SYSDATE,'Dy DD-Mon-YYYY HH24:MI:SS') AS "Current Time 8" FROM DUAL;

    ALTER TABLE DS_Transaction_History
      ADD CONSTRAINT PK_TranHist PRIMARY KEY (i_transaction_id, i_detail_id);

    SELECT TO_CHAR(SYSDATE,'Dy DD-Mon-YYYY HH24:MI:SS') AS "Current Time 9" FROM DUAL;

    CREATE INDEX IdxTranHist01 ON DS_Transaction_History(i_library_id, i_dimension_id, i_member_id);

    SELECT TO_CHAR(SYSDATE,'Dy DD-Mon-YYYY HH24:MI:SS') AS "Current Time 10" FROM DUAL;

    CREATE INDEX IdxTranHist02 ON DS_Transaction_History(i_library_id, d_created);

    SELECT TO_CHAR(SYSDATE,'Dy DD-Mon-YYYY HH24:MI:SS') AS "Current Time 11" FROM DUAL;

    ALTER TABLE DS_Transaction_History LOGGING;

    SELECT TO_CHAR(SYSDATE,'Dy DD-Mon-YYYY HH24:MI:SS') AS "Current Time 12" FROM DUAL;

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 адресу сервера. Все работает!

10 июля 2011

Запуск/остановка сервисов EPM 11.1.2.1

Ввиду того, что в этом релизе изменились имена некоторых сервисов, некоторых не стало вовсе, а также в связи с переводом на sc start|stop, предлагаю Вашему вниманию обновленные скрипты для запуска платформы Oracle EPM System 11.1.2.1 (DB, Foundation, Essbase, Planning, Reporting&Analysis):

epmStart.bat
@ECHO OFF
ECHO -----EPM 11.1.2.1 STARTING / Batch EPM full start script by Antun Kulkov, 2011
ECHO -----See more at http://silw.blogspot.com
ECHO -------SQL Server Starting
sc start "MSSQLSERVER"
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Oracle Process Manager (ohsInstance)
sc start "OracleProcessManager_ohsInstance1649849633"
waitfor NONEXISTINGSIGNAL /T 10
ECHO -------Oracle Process Manager (EPM_epmsystem1)
sc start "opmn_EPM_epmsystem1"
waitfor NONEXISTINGSIGNAL /T 10
ECHO -------Oracle Process Manager (ConfigurationManager)
sc start "OracleEpmSystem_Administratord_oracle_middleware_user_projects_epmsystem1ConfigurationManager"
waitfor NONEXISTINGSIGNAL /T 10
ECHO -------Hyperion RMI Registry
sc start "Hyperion RMI Registry"
waitfor NONEXISTINGSIGNAL /T 10
ECHO -------Hyperion Foundation Services - Managed Server
sc start HyS9FoundationServices
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion Administration Services - Web Application
sc start HyS9eas
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion Integration Services
sc start "Essbase Integration Server"
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion Provider Services - Web Application
sc start HyS9aps
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion Studio Service BPMS
sc start "Hyperion Studio Service BPMS bpms1"
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion EPM Architect - Process Manager
sc start EPMA_Server
waitfor NONEXISTINGSIGNAL /T 30
ECHO -------Hyperion EPMA Data Synchronizer - Web Application
sc start HyS9EPMADataSynchronizer
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion EPMA Web Tier - Web Application
sc start HyS9EPMAWebTier
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion CALC Manager - Web Application
sc start HyS9CALC
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion Planning - WebHyS9Planning Application
sc start HyS9Planning
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion Web Analysis - Web Application
sc start HyS9WebAnalysis
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion Reporting and Analysis Framework
sc start HyS9RaFrameworkAgent
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion Financial Reporting - Web Application
sc start HyS9FRReports
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion Reporting and Analysis Framework - Web Application
sc start HyS9RaFramework
waitfor NONEXISTINGSIGNAL /T 5
ECHO ALL DONE!
waitfor NONEXISTINGSIGNAL /T 10
ECHO -----Oracle EPM System has been started.

epmStop.bat
@ECHO OFF
ECHO -----EPM 11.1.2.1 STOPPING / Batch EPM full stop script by Antun Kulkov, 2011
ECHO -----See more at http://silw.blogspot.com
ECHO -------Hyperion Web Analysis - Web Application
sc stop HyS9WebAnalysis
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion Reporting and Analysis Framework
sc stop HyS9RaFrameworkAgent
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion Financial Reporting - Web Application
sc stop HyS9FRReports
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion Reporting and Analysis Framework - Web Application
sc stop HyS9RaFramework
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion Planning - WebHyS9Planning Application
sc stop HyS9Planning
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion CALC Manager - Web Application
sc stop HyS9CALC
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion EPMA Web Tier - Web Application
sc stop HyS9EPMAWebTier
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion EPMA Data Synchronizer - Web Application
sc stop HyS9EPMADataSynchronizer
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion EPM Architect - Process Manager
sc stop EPMA_Server
waitfor NONEXISTINGSIGNAL /T 30
ECHO -------Hyperion Studio Service BPMS
sc stop "Hyperion Studio Service BPMS bpms1"
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion Provider Services - Web Application
sc stop HyS9aps
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion Integration Services
sc stop "Essbase Integration Server"
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion Administration Services - Web Application
sc stop HyS9eas
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion Foundation Services - Managed Server
sc stop HyS9FoundationServices
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion RMI Registry
sc stop "Hyperion RMI Registry"
waitfor NONEXISTINGSIGNAL /T 10
ECHO -------Oracle Process Manager (ConfigurationManager)
sc stop "OracleEpmSystem_Administratord_oracle_middleware_user_projects_epmsystem1ConfigurationManager"
waitfor NONEXISTINGSIGNAL /T 10
ECHO -------Oracle Process Manager (ohsInstance)
sc stop "OracleProcessManager_ohsInstance1649849633"
waitfor NONEXISTINGSIGNAL /T 10
ECHO -------Oracle Process Manager (EPM_epmsystem1)
sc stop "opmn_EPM_epmsystem1"
waitfor NONEXISTINGSIGNAL /T 10
ECHO -------SQL Server Stopping
sc stop "MSSQLSERVER"
waitfor NONEXISTINGSIGNAL /T 5
ECHO ALL DONE!
waitfor NONEXISTINGSIGNAL /T 10
ECHO -----Oracle EPM System has been stopped.

Понятно, что данные скрипты приведены только для примера и требуют уточнений в части сервисов RDBMS и номера сервиса OHS. Кроме того, можно более гибко управлять запуском даже с удаленных машин, используя все возможности команды sc. Верные имена служб можно найти в реестре в ветке:
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\Root\LEGACY_{ServiceName}\0000\Service

07 мая 2011

Batch Sequence via MaxL

Занимаюсь старинной версией Hyperion Planning 3.5/Essbase 7.1
Приложение HBRules (для создания и управления бизнес-правилами; современный аналог - CalcManager) имеет ряд неприятных ограничений. В этот раз меня разозлил момент, связанный с тем, что невозможно создавать длинные последовательности (sequences). А именно такая задача и стояла, озаглавленная как «Полный пересчет модели».
Итак, один большой сиквенс сделать невозможно. Разбить на несколько – неудобно, потому что пересчеты возможно запускать только по ночам. Да, еще хочется иметь лог для оценки времени (для поиска узких мест и дальнейшей их оптимизации) и статуса завершения расчетов.

Итак, пришел к такому варианту:

1. Переводим (Export) нужные правила в Essbase, чтобы иметь возможность запускать их через MaxL. Минус очевиден: мы теряем связь правила, которое будет портировано в Essbase, и оригинального правила в HBRules, которое может измениться. Лучшее, что я придумал – создать таблицу соответствий имен правил HBRules – Essbase. При изменении правила в HBRules необходимо экспортировать его в Essbase-правило с тем же именем.

2. Готовим список правил Essbase, которые нужно запускать. Располагаем их в необходимом порядке запуска:
FC-1-01
FC-1-02
FC-2-01
Список сохраним в ascii-файлик RulesList.txt.

3. Пишем batch-скрипт, который будет генерить(!) MaxL-скрипт для полного расчета:
@echo off
echo =======================================================
echo Batch AutoCalc Essbase App Script by Antun Kulkov, 2011
echo See more at http://silw.blogspot.com
setlocal
rem ------ Settings -------
set year=%date:~6%
set month=%date:~3,2%
set day=%date:~0,2%
set hour=%time:~0,2%
if '%hour:~0,1%'==' ' set hour=0%time:~1,1%
set minute=%time:~3,2%
set tdate=%year%-%month%-%day%-%hour%%minute%
set STARTPATH=D:\Hyperion\AutoCalc
set ESSMSH=%ARBORPATH%\bin\essmsh.exe
set SERVER=essbase_server_name_or_ip
set USER=ess_admin
set PASSWORD=ess_admin_password
set APPNAME=app_name
set FILE_MAXL=%STARTPATH%\%APPNAME%_script.maxl
set FILE_LOG=%STARTPATH%\logs\AutoCalc_%APPNAME%_%tdate%.log
rem ------ End settings -------
echo Start: %tdate%

echo spool on to '%FILE_LOG%'; > %FILE_MAXL%
echo login '%USER%' '%PASSWORD%' on '%SERVER%'; >> %FILE_MAXL%
echo alter application '%APPNAME%' enable startup; >> %FILE_MAXL%
for /f %%i in (%STARTPATH%\RulesList.txt) do (
echo execute calculation '%APPNAME%'.'Plan1'.'%%i'; >> %FILE_MAXL%
)
echo logout; >> %FILE_MAXL%

echo MaxL script has been generated and run:
echo %FILE_MAXL%
echo See details of calc execution in:
echo %FILE_LOG%
%ESSMSH% %STARTPATH%\%APPNAME%_script.maxl
echo =======================================================
где STARTPATH – директория запуска данного скрипта,
SERVER, USER, PASSWORD – задают сервер Essbase и его пользователя с администраторскими правами,
APPNAME – имя приложения (скажу, что работал с одним кубом Plan1, поэтому прописал его жестко в скрипте). Не забываем брать в кавычки значения переменных, которые содержат пробелы!

Принцип работы:
В папке с этим batch-скриптом генрим MaxL-скрипт (APPNAME_script.maxl), получая имена правил из файла RulesList.txt. И выполняем этот MaxL-скрипт, на всякий случай запуская приложение в Essbase. Лог выполнения MaxL-скрипта пишется в APPNAME_AutoCalc_{дата-время}.log. Все прозрачно!

Замечание: Для правил, использующих переменные с вводом данных (например, предела ставки начисления ЕСН), необходимо установить необходимые значения как дефолтные!

4. Добавляем наш batch-скрипт в расписание, если нужно.

Enjoy!

UPD: Альтернативный (несколько более сложный, но более функциональный) вариант описан у Романа Удальцова здесь

14 марта 2011

EPM 11.1.2 – Мониторинг веб-приложений

Еще одна очень полезная фича в новой версии EPM 11.1.2, окончательно перешедшей на WebLogic - возможность мониторить веб-приложения EPM с помощью extension template для WebLogic, котоый добавляется в функциональность Enterprise Manager Fusion Middleware Control. Как раз с этим была у меня проблема на серверах с ограниченной производительностью - отслеживать состояния веб-приложений и вообще компонент EPM.


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

11 марта 2011

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

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

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

04 марта 2011

EPMA 11.1.2 Import Profile File Upload Error

В этом релизе существует такой баг - при создании профайла импорта метаданных при создании/загрузке измерений из файла в момент попытки загрузки самого файла получаем ошибку типа
Failure of server APACHE bridge:
Cannot open TEMP post file 'd:\TEMP\\1\_wl_proxy\_post_3924_1' for POST of 17045 bytes
Build date/time: Oct 29 2009 02:08:24
Change Number: 1013
Failure of server APACHE bridge:
Internal Server failure, APACHE plugin. Cannot continue.
Build date/time: Oct 29 2009 02:08:24
Change Number: 1013
Уточню, что в примере системная переменная TEMP = d:\TEMP
Для решения проблемы необходимо:
1. Задать этой папке разрешение на полный доступ для групп Все (Everyone) и System
Проверить пользователя можно для сервиса OPMN
2. Создать субдиректорию _wl_proxy в папке %TEMP%\1.
3. Перезапустить сервисы EPM и в частности - OPMN.
Enjoy!

19 февраля 2011

EPM 11.1.2 на Windows 7

Сошлись желание провести такой заманчивый тест и поднять дома окружение для проведения некоторых работ халтурку на дом взять: написать правила, построить отчеты.
Для работы нам пригодятся:
1. ПК с установленной Windows 7. В моем случае это русская 64-битная Профессиональная редакция (CPU: Intel Core 2 Quad Q8200 RAM: 4Gb DDR2 1066MHz).
2. Установленный AdminPack для Windows 7 для использования IIS (для EPMA) и отслеживания служб и прочих "серверных" рюшечек. Взять здесь.
3. Установленная СУБД. Достаточно редакции Express. Я выбрал MS SQL Server 2008 R2 Express 64bit.
4. Статья Тима Тоу Windows 7 / Essbase 11.1.1.3 Installation Tutorial
5. Дистрибутивы EPM System 11.1.2. Я взял те же, что и в этой статье.

Итак, по статье Тима:
- устанавливаем loopback сетевой адаптер.
- копируем из установленной на машине JRE папки (у меня c:\Java\jre6) все содержимое в папку [instaltoolpath]\jre\win32\1.6.0 . Если таковых нету - создаем их смело!
- и правим installTool.cmd по причине различий CMD_Shell серверных и десктопных ОСей, принудительно прописывая команду старта jar-инсталлера
[instaltoolpath]\jre\win32\1.6.0\bin\java.exe -Xmx1024M -Djava.library.path=%TMP% -DRELEASE_VERSION=11.1.2.0 -Djava.util.logging.config.class=oracle.core.ojdl.logging.LoggingConfiguration -Doracle.core.ojdl.logging.config.file=\installTool-logging.xml -DDATE_TIME=%DATE_TIME% -jar \installTool.jar %*
Запускаем файл installTool от имени Администратора и устанавливаем все по накатанной.

UPD: Если инсталлер запустился, то любые ошибки установки связаны либо с неверной (не в ту директорию, не от той версии архив) или неполной распаковкой дистрибутивов, либо с работой файервола/антивируса. У меня Comodo CIS после некоторого времени, не получая моего разрешения на действие компоненты установки, блокировал выполнение установки какого-то компонента. Это вызывало ошибки.

Конфигурируем аналогично описанному здесь через EPM Configurator, который запускаем от имени Администратора.

После завершения конфигурирования идем в реестр HKLM\SOFTWARE\Hyperion Solutions и устанавливаем значения -Xms128m / -Xmx512m везде, где найдем, и перезапускаем сервисы для лучшей их производительности на ограниченном объеме RAM.
Для грубой оценки верхнего предела (Xmx) можно считать так: объем оперативной памяти / (кол-во сервисов EPM + SQL + Oracle HTTP Server + 5). Здесь нужно пробовать каждый компонент, например Shared Services и EPMA любят побольше. Я же не запускаю BI сервисы (FinReporting, WebAnalysis и их фреймворк). Также можно не загружать CalcManager (для тех, кто как и я по старинке работают с business rules), Essbase Studio. А если у вас только classic Planning приложения, то и весь комплекс EPMA.
Для удобства использования:
- В сервисах (службах) для всех компонент EPM (начинаются со слова Hyperion) и Oracle Proccess manager выставляем свойства запуска "Вручную". Запускать можно через ярлыки в Пуске.
- Аналогичную операцию проводим для сервера БД. Но для его запуска настраиваем пару bat-файлов для запуска/остановки.
Пример запуска SQL Server:
@ECHO OFF
ECHO -------SQL Server Starting
net start "MSSQLSERVER"
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------SQL Server Browser Starting
net start "SQLBrowser"
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------SQL Server Agent Starting
net start "SQLSERVERAGENT"
waitfor NONEXISTINGSIGNAL /T 5
Пример остановки SQL Server:
@ECHO OFF
ECHO -------SQL Server Agent Stopping
net stop "SQLSERVERAGENT"
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------SQL Server Browser Stopping
net stop "SQLBrowser"
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------SQL Server Stopping
net stop "MSSQLSERVER"
waitfor NONEXISTINGSIGNAL /T 5
Кладем файлы, например в %hyperion_home%, а ярлычки кидаем на рабочий стол или в Пуск к EPM.
В моем случае не появились ярлыки на запуск EPM System. Кроме того, запуск сервисов через них занимает больше 10 минут. Напишем свой bat. Отрабатывает быстрее.
startEPM.bat
ECHO -------EPM 11.1.2 STARTING / Batch EPM full start script by Antun Kulkov, 2011
@ECHO OFF
ECHO -------Oracle Process Manager (ohsInstance)
net start "Oracle Process Manager (ohsInstance3193331783)"
waitfor NONEXISTINGSIGNAL /T 10
ECHO -------Oracle Process Manager (EPM_epmsystem1)
net start "opmn_EPM_epmsystem1"
waitfor NONEXISTINGSIGNAL /T 10
ECHO -------Oracle Process Manager (ConfigurationManager)
net start "Oraclec_oracle_middle~1_epmsys~1c_oracle_middleware_user_projects_epmsystem1ConfigurationManager"
waitfor NONEXISTINGSIGNAL /T 10
ECHO -------Hyperion RMI Registry
net start "Hyperion RMI Registry"
waitfor NONEXISTINGSIGNAL /T 10
ECHO -------Hyperion Foundation Services - Managed Server
net start HyS9FoundationServices
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion Administration Services - Web Application
net start HyS9eas
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion Integration Services
net start "Hyperion Integration Services"
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion Provider Services - Web Application
net start HyS9aps
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion Studio Service BPMS
net start "Hyperion Studio Service BPMS bpms1"
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion EPM Architect - Process Manager
net start HyS9BPMA_ProcessManager
waitfor NONEXISTINGSIGNAL /T 30
ECHO -------Hyperion EPMA Data Synchronizer - Web Application
net start HyS9EPMADataSynchronizer
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion EPMA Web Tier - Web Application
net start HyS9EPMAWebTier
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion CALC Manager - Web Application
net start HyS9CALC
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion Planning - WebHyS9Planning Application
net start HyS9Planning
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion Web Analysis - Web Application
net start HyS9WebAnalysis
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion Reporting and Analysis Framework
net start HyS9RaFrameworkAgent
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion Financial Reporting - Print Service
net start FRPrintService
waitfor NONEXISTINGSIGNAL /T 30
ECHO -------Hyperion Financial Reporting - Web Application
net start HyS9FRReports
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion Reporting and Analysis Framework - Web Application
net start HyS9RaFramework
waitfor NONEXISTINGSIGNAL /T 5
ECHO ALL DONE!
waitfor NONEXISTINGSIGNAL /T 10
stopEPM.bat
ECHO -------EPM 11.1.2 STOPPING / Batch EPM full stop script by Antun Kulkov, 2011
@ECHO OFF
ECHO -------Hyperion Reporting and Analysis Framework - Web Application
net stop HyS9RaFramework
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion Financial Reporting - Web Application
net stop HyS9FRReports
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion Financial Reporting - Print Service
net stop FRPrintService
waitfor NONEXISTINGSIGNAL /T 30
ECHO -------Hyperion Reporting and Analysis Framework
net stop HyS9RaFrameworkAgent
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion Web Analysis - Web Application
net stop HyS9WebAnalysis
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion Planning - WebHyS9Planning Application
net stop HyS9Planning
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion CALC Manager - Web Application
net stop HyS9CALC
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion EPMA Web Tier - Web Application
net stop HyS9EPMAWebTier
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion EPMA Data Synchronizer - Web Application
net stop HyS9EPMADataSynchronizer
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion EPM Architect - Process Manager
net stop HyS9BPMA_ProcessManager
waitfor NONEXISTINGSIGNAL /T 30
ECHO -------Hyperion Studio Service BPMS
net stop "Hyperion Studio Service BPMS bpms1"
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion Integration Services
net stop "Hyperion Integration Services"
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion Provider Services - Web Application
net stop HyS9aps
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion Administration Services - Web Application
net stop HyS9eas
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion Foundation Services - Managed Server
net stop HyS9FoundationServices
waitfor NONEXISTINGSIGNAL /T 5
ECHO -------Hyperion RMI Registry
net stop "Hyperion RMI Registry"
waitfor NONEXISTINGSIGNAL /T 10
ECHO -------Oracle Process Manager (ConfigurationManager)
net stop "Oraclec_oracle_middle~1_epmsys~1c_oracle_middleware_user_projects_epmsystem1ConfigurationManager"
waitfor NONEXISTINGSIGNAL /T 10
ECHO -------Oracle Process Manager (EPM_epmsystem1)
net stop "opmn_EPM_epmsystem1"
waitfor NONEXISTINGSIGNAL /T 10
ECHO -------Oracle Process Manager (ohsInstance)
net stop "Oracle Process Manager (ohsInstance3193331783)"
waitfor NONEXISTINGSIGNAL /T 10
ECHO ALL DONE!
waitfor NONEXISTINGSIGNAL /T 10

UPD: Вариант использования SC вместо NET (start|stop) хорошо описан здесь у Романа Удальцова

Порядок запуска после установки становится таким:
- Запускаем SQL Server - из нашего первого батничка;
- Запускаем Foundation Services (Oracle WebLogic 10) - есть ярлычок в Пуске, но в нашем случае нет необходимости;
- Запускаем EPM System - из второго нашего батничка.
Порядок остановки обратен.


Enjoy!

18 февраля 2011

Как верно провести первичную настройку EPM System 11.1.2

Наконец-то появились задачи по работе со свежайшей (на сегодня) версии Oracle EPM System 11.1.2. Сразу скажу, что у этой версии от предшественницы (11.1.1.3) появилось сразу несколько негативных отличий:
- Субъективное: дизайн. Понятно, что подогнали под 11-ую линейку Fusion MiddleWare. Но цветовая гамма предшественницы радовала гораздо больше! Может быть, Oracle выложит файлики с предыдущими темами оформления?!
- Миграционное: LCM без проблем не может импортировать выгрузки даже из предыдущей версии. Хотя в 11.1.2.1 (он же SP1) обещают исправить.
- Стартовое: изменился порядок первичной настройки (конфигурирования) системы сразу после установки.

О последнем и напишу подробнее в этой статье.
Сразу скажу, что задачи крутятся вокруг Planning. Я устанавливаю всё на MS Win2003 Server R2 (64bit; Standard Edition) с MS SQL Server 2005 SP4.
Компоненты, которые я распаковал для установки:
- Foundation: Foundation Services, Performance Management Architect, CalcManager;
- Essbase;
- Planning;
- Reports & Analysis: Financial Reporting, Web Analysis.
При первой установке решил пройтись по накатанной (как в 11.1.1.3). Ан-нет! Не случилось. В первый раз подвел Oracle HTTP Server. Во второй – не смог настроиться Essbase. Как оказалось из-за неверного/неполного удаления предыдущее инсталляции. Как все почистить целиком, и установить заново, читайте здесь.

Сразу отмечу, что стоит создавать для каждого компонента СВОЮ отдельную базу. И устанавливайте каждой базе свойство AutoShrink = True.

Поковырявшись в гугле и оракл-форумах, пошел дед закидывать невод решился на третью попытку. В этот раз все прошло так и даже работает:
Итак, вот порядок удачных действий:
1. После установки идем через Пуск в EPM System Configurator. Делаем uncheck всех компонентов и выбираем в Hyperion Foundation только: Common Settings, Configure Database, Configure Oracle Configuration Manager. Соглашаемся на все. Я выбрал в качестве веб-сервера Oracle HTTP-Server. Насчет поддержки Oracle Support: если у вас промышленный сервер и он смотрит в интернет (пусть через проксю), то можете соглашаться и настраивать. Там все просто. В ином случае – плюньте на этот момент. В ходе установки задайте дефолтовый админский пароль.
2. Если все хорошо, то идем опять в EPM System Configurator (или Task Panel, если вы не закрыли сам конфигуратор) и деплоим (применяем) Shared Services, выбрав только Configure Web Server и Deploy to App Server. Тут все просто. Нужно только придумать и записать пароль для домена Oracle WebLogic.
3. После этого этапа можно сразу зайти через web в консоль Shared Services и подключить MSAD. При использовании IIS: если не стартует веб-приложение, через консоль IIS запустите веб-узлы и приложения, не забыв назначить для узлов использовать ASP.NET 2.x.
4. Теперь через EPM System Configurator настраиваем сам компонент Essbase, остальные пока можно оставить в сторонке.
5. Затем также настраиваем все остальные компоненты вкладки Essbase, но по порядку и по одному! Для проверки этих компонент нужно иметь запущенными сервисы: Foundation Servoces, Oracle Proccess Manager (EPM_epmsystem1), Administration Services.
6. Конфигурируем EPMA. Здесь все просто, НО: при создании БД под EPMA нужно проверить свойства READ_COMMITTED_SNAPSHOT и ALLOW_SNAPSHOT_ISOLATION. Они должны иметь значения ON. Если лень искать, то просто запустите следующий скрипт:
ALTER DATABASE HP11_EPMA SET READ_COMMITTED_SNAPSHOT ON;
ALTER DATABASE HP11_EPMA SET ALLOW_SNAPSHOT_ISOLATION ON;
где HP11_EPMA – база под EPMA.
7. Конфигурируем CalcManager. Все просто.
8. Конфигурируем Planning. Сначала все доступные компоненты, а затем кластер.
9. Конфигурируем Reporting & Analysis.
10. А теперь, чтобы все было доступно в Workspace, выполняем задачи:
- Configure Web Server
- и Configure Logical Address for Application Server под Hyperion Foundation.

Вот и все! Если все разворачиваете на Oracle HTTP-Server, то стучитесь к компонентам через 19000 порт после запуска всех нужных сервисов! Например, http://localhost:19000/workspace/

Enjoy!

UPD: В реестре HKLM\SOFTWARE\Hyperion Solutions установите значения -Xms512m / -Xmx1024m везде, где найдете, и перезапустите сервисы для лучшей их производительности.

Бэкап компонент EPM 11.1.2

Следуя рекомендациям Oracle, настроим бэкап следующего:
- Директории с конфигурациями продуктов EPM
%Hyperion_Home%\user_projects\epmsystem1\config
- Директорию WebLogic Domain
%Hyperion_Home%\user_projects\domains\EPMSystem
- Директорию контента LCM
%Hyperion_Home%\user_projects\epmsystem1\import_export
- Веток реестра с параметрами EPM
- Директории с настройками и данными приложений

Последний пункт обычно автоматизируют отдельно, о чем написано:
- Здесь про данные из баз приложений Essbase.
- Здесь про формы Planning.
- Некоторые дополнения напишу позже.
Поэтому в скрипте ниже эти моменты пропустим.

Итак, с целью максимальной автоматизации делаем следующее:
- Создаем папочку под бэкапы EPM. У меня это d:\BACKUP\EPM. Структура такова:
- Ложим туда такой bat-файл:

rem Batch 7zipped backup script by Antun Kulkov, 2011
@echo off
set year=%date:~6%
set month=%date:~3,2%
set day=%date:~0,2%
set hour=%time:~0,2%
if "%hour:~0,1%"==" " set hour=0%time:~1,1%
set minute=%time:~3,2%
set tdate=%year%-%month%-%day%-%hour%%minute%
set DOMAIN_HOME=C:\Hyperion\user_projects
set BACKUP_HOME=d:\BACKUP\EPM
set ZIP_HOME="c:\Program Files\7-Zip"
@echo on
rem Config Backup
%ZIP_HOME%\7za.exe a -t7z %BACKUP_HOME%\config\config-%tdate%.7z %DOMAIN_HOME%\epmsystem1\config -m0=BCJ -m1=LZMA:d=21 -mx=9 -ms -mmt > %BACKUP_HOME%\config\config-%tdate%.log

rem WebLogic Domain Dir Backup
rem call "%DOMAIN_HOME%\domains\EPMSystem\bin\stopWebLogic.cmd" %*
%ZIP_HOME%\7za.exe a -t7z %BACKUP_HOME%\weblogic_domain\wldomain-%tdate%.7z %DOMAIN_HOME%\domains\EPMSystem -m0=BCJ -m1=LZMA:d=21 -mx=9 -ms -mmt > %BACKUP_HOME%\weblogic_domain\wldomain-%tdate%.log
rem call "%DOMAIN_HOME%\domains\EPMSystem\bin\startWebLogic.cmd" %*

rem Lifecycle Management content Backup
%ZIP_HOME%\7za.exe a -t7z %BACKUP_HOME%\LCM_impexp\lcm-%tdate%.7z %DOMAIN_HOME%\epmsystem1\import_export -m0=BCJ -m1=LZMA:d=21 -mx=9 -ms -mmt > %BACKUP_HOME%\LCM_impexp\lcm-%tdate%.log

rem Registry Backup
set rkey_hklm="HKEY_LOCAL_MACHINE"
set rkey_osenv="HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
DEL %BACKUP_HOME%\registry\*.reg
REG EXPORT %rkey_hklm% %BACKUP_HOME%\registry\HKLMreg-%tdate%.reg
REG EXPORT %rkey_osenv% %BACKUP_HOME%\registry\OSEnv-%tdate%.reg
%ZIP_HOME%\7za.exe a -t7z %BACKUP_HOME%\registry\reg-%tdate%.7z %BACKUP_HOME%\registry\*.reg -m0=BCJ -m1=LZMA:d=21 -mx=9 -ms -mmt > %BACKUP_HOME%\registry\reg-%tdate%.log
DEL %BACKUP_HOME%\registry\*.reg

rem Finished!

Все достаточно прозрачно:
- Сначала задаем нужные переменные для дат/времени и директорий DOMAIN_HOME (она = %Hyperion_Home%\user_projects\), BACKUP_HOME (собственно куда класть бэкапы) и ZIP_HOME (папка с архиватором; у меня 7-zip).
- Затем бэкапим то, что я описал в самом начале статьи.
- Отдельно про WebLogic Domain. Рекомендуют останавливать, но можно и так)) Поэтому я закомментил его остановку и старт. Вообще рекомендуют полную остановку EPM, но у меня разброс филиалов в 7 часовых поясов, что не позволяет выводить систему из рабочего состояния.
- Отдельно про реестр. Переменная rkey_hklm – это ветка реестра HKLM, где, в том числе, лежат параметры EPM. Здесь можно выбрать и конкретную ветку Hyperion Solutions, но я решил бэкапить все. А rkey_osenv – ветка с переменными окружения Windows. Порядок работы такой: выгружаем из реестра в два файла, бэкапим в архив и прибираемся, удаляя файлы выгрузок.

Ну, и добавляем наш волшебный файлик в Task Scheduler по расписанию. Enjoy!

16 февраля 2011

Как упростить установку обновлений для EPM 11.1.2

Обычная процедура установки обновлений выглядит так:
- Остановка всех или некоторых сервисов;
- Применение патча (через OPatch);
- Иногда нужны дополнительные действия;
- Повторное развертывание компонент на веб-сервере (через EPM Configurator);
- Запуск сервисов.

Я написал небольшой bat-файл для себя, который упрощает второй шаг из перечисленных выше:

set patch_number="hp_11.1.2.0.02"
rem Batch script to automate opatch by Antun Kulkov, 2011
@echo off
set year=%date:~6%
set month=%date:~3,2%
set day=%date:~0,2%
set hour=%time:~0,2%
if "%hour:~0,1%"==" " set hour=0%time:~1,1%
set minute=%time:~3,2%
set tdate=%year%%month%%day%-%hour%%minute%
@echo on
opatch.bat apply %EPM_ORACLE_HOME%\OPatch\%patch_number% -oh %EPM_ORACLE_HOME% -jre %JAVA_HOME% > opatchLog-%tdate%-p%patch_number%.log


Вот такой файл, который нужно положить в %EPM_ORACLE_HOME%\OPatch.
Самое главное – задать в первой строке значение переменной patch_number, которое равно названию папки, в которой лежат обновления. В данном случае применял фикс к Planning (hp_11.1.2.0.02). Если есть пробелы, обязательно берите все значение в кавычки. В ином случае – можно обойтись без них.

Можно, конечно, передавать параметром значение patch_number, но мне так показалось удобнее. А вот делать в цикле, считывая директории, не стоит. Каждое обновление требует дополнительных действий и тщательной проверки после выполнения всех действий по обновлению!

Еще перевязал оригинальный лайн на свой JRE, используя переменную windows-окружения %JAVA_HOME%. У меня это "c:\Java\jdk6\jre". Ну, и пишем все в лог, чтобы иметь возможность отслеживать результаты. Файл лога будет лежать в %EPM_ORACLE_HOME%\OPatch.

Не забываем внимательно читать Readme к каждому патчу и фиксу!

12 февраля 2011

Как удалить EPM System 11.1.2

Иногда случается так, что компоненты Oracle EPM System 11.1.2 запороты кривыми руками =) и необдуманными действиями, или понятно, что переустановить будет быстрее, чем разобраться в проблемах.
Переустановка некоторых компонентов также может не дать результатов, а при полном удалении этих компонентов и новой их инсталляции EPM System Configurator сходит с ума, неверно отражая иерархию и не позволяя управлять большинством Foundation компонентов. У меня такое наблюдалось при проблемах конфигурации Essbase, которые были вызваны ошибками при установке Essbase.
Мое окружение: MS Win2003 Server R2 (64bit; Standard Edition) и MS SQL Server 2005 SP4.

Итак! Всё, что смогли – забэкапили через LCM или дедовскими методами и в путь:
1. Останавливаем все сервисы EPM и Oracle Proccess Manager (можно через Пуск).
2. Идем через Пуск в Uninstall EPM System и следуем инструкциям, удаляя ВСЁ!
3. Перезагружаемся!
4. Удаляем все то, что не подчистил Uninstaller:
a. Установочную директорию (EPMSystem_Home). У меня это C:\Hyperion;
b. В реестре ветку HKEY_LOCAL_MACHINE\SOFTWARE\Hyperion Solutions;
c. В реестре ветку HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\opmn_EPM_epmsystem1;
d. В реестре ветку HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Oraclec_hyperion_epmsys~1c_hyperion_user_projects_epmsystem1ConfigurationManager (в моем случае Oraclec_hyperion_epmsys~1c_hyperion – это производное от пути к основным компонентам c:\hyperion\epmsys~1 и установочной директории c:\hyperion)
5. Перезагружаемся!
6. Удаляем с помощью ccleaner все баги в реестре, в том числе HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Enum\Root\LEGACY_ORACLEC_HYPERION_EPMSYS~1C_HYPERION_USER_PROJECTS_EPMSYSTEM1CONFIGURATIONMANAGER
7. Перезагружаемся!
8. Проверяем в сервисах отсутствие любых Hyperion и Oracle сервисов из тех, что были к EPM System.
9. Можно подчистить в папке c:\Documents and Settings\[Твой_User] все файлы и папки от EPM.
10. Можно дропнуть БД под SharedServices, если хочется)) Все равно мы чистим все на корню, и при новой установке лучше создать эту БД заново.
Всё! Система чиста и готова к новой установке EPM. О том, как правильно провести первичную настройку EPM System 11.1.2 я расскажу в следующий раз.

17 декабря 2009

Оптимизировали-оптимизировали, да и...

Со временем, при эксплуатации Системы (в нашем случае – EPM 9.3.1 - Planning) возникают проблемы с перфомансом (производительностью). И часто, все попытки оптимизации заканчиваются на изменении модели. Это верно, но не совсем полно. Ведь есть моменты, которые часто упускаются из виду.

Ключевые аспекты производительности:
  • Аппаратные средства и инфраструктура
  • Сторонние продукты
  • Продукты EPM/Hyperion
  • Модель в приложении
  • Контроль использования Системы
Основные моменты описаны в документах Oracle:
  • Oracle’s Hyperion EPM, Fusion Edition - Performance Tuning Guide (у меня документ для релиза 11.1.1.1 с пометкой ORACLE INTERNAL USE ONLY)
  • System Configuration Settings and Best Practices (презентация PPT, описывает схожие моменты, что и первый документ, но в некоторых местах дополняет его)
  • Документы и презентации по ASO (видимо, BSO все-таки больше походит для многих вещей в части бюджетирования с точки зрения консультантов): Essbase 7X New Features (ASO); документ по сравнению и рекомендациям по применению ASO vs. BSO
  • Design Optimisation for Essbase (c конференции EMEA Services Conference 2004)
  • Advanced Essbase Calc Optimisation (c конференции EMEA Services Conference 2003)
  • Техническая документация других используемых продуктов (MS Win2003 Server и его компоненты, Oracle DB и проч.)
Документов много, учесть нужно по возможности все. По результатам отпишу отдельный пост.

30 сентября 2009

Оптимизация настроек TCP/IP для многосерверных систем

Часто для дополнительной оптимизации работы EPM и других систем, которые установлены на нескольких серверах, рекомендуют настроить работу протокола TCP/IP на этих серверах. Я обычно настраиваю все сервера, устанавливая в реестре Windows (при необходимости создавая) следующие параметры в ветке
HKLM\System\CurrentControlSet\Services\tcpip\Parameters

<Параметр: Значение (тип данных)>
MaxUserPort: 65534 (decimal)
TcpTimedWaitDelay: 30 (decimal)
GlobalMaxTcpWindowSize: 131400 (decimal)
TcpWindowSize: 131400 (decimal)
Tcp1323Opts: 3 (decimal)

Оригинал (почти): http://www.redbooks.ibm.com/redpapers/pdfs/redp3943.pdf