Блог посвящен большей частью информационным системам класса BPM/CPM. В основном - продуктам линейки Oracle (Hyperion) EPM System. Здесь описываются важнейшие моменты, интересные how-to, hints, tips & tricks.
Показаны сообщения с ярлыком script. Показать все сообщения
Показаны сообщения с ярлыком script. Показать все сообщения
08 июля 2013
Ускорение выгрузки данных из Essbase
Интересные сценарии выгрузки данных из Essbase с помощью MDX или Report Scripts http://camerons-blog-for-essbase-hackers.blogspot.ru/2013/07/what-makes-essbase-data-extraction-fast.html
Метки:
ASO,
BSO,
EAS,
Essbase,
Essbase 11,
example,
FAQ,
integration,
link,
MAXL,
MDX,
Optimization,
RS,
script,
study
17 мая 2013
How-to Setup Essbase Clustering on Unix
На CEAL появилась инструкция по установке и настройке кластера Essbase 11.1.2.2 на Unix.
Матрица в оф.доках описывает возможные виды и ограничения отказоустойчивых или с распределением загрузки кластеров Essbase.
Оригинальный пост
Матрица в оф.доках описывает возможные виды и ограничения отказоустойчивых или с распределением загрузки кластеров Essbase.
Оригинальный пост
Метки:
Essbase 11,
Exalytics,
example,
FAQ,
Installation,
link,
Oracle HTTP Server,
script,
services starting and stopping,
study,
Unix
05 мая 2013
Восстановление БД Essbase в резервном ДЦ, не оставливая primary БД
Леонид Борчук описал в своем блоге пример восстановления БД Essbase в резервном ДЦ без остановки primary БД.
Метки:
Essbase,
Essbase 11,
example,
FAQ,
link,
MAXL,
script,
Shared Services
02 ноября 2012
28 августа 2012
SQL запросы для получения информации о формах в Planning
Можно потратить много времени, чтобы получить информацию о формах данных в Planning: папка формы, бизнес-правила, меню и др. Можно упростить это процесс. Подробнее
13 августа 2012
Связывание windows-сервисов Hyperion
Чтобы завязать между собой сервисы EPM при запуске, essbase.ru рекомендует:
sc config “HyS9FoundationServices” depend= OracleServiceHYPFM
sc config “HyS9FinancialManagementWebSvcs” depend= OracleServiceHYPFM
sc config “HFMWebServiceManager” depend= OracleServiceHYPFM
sc config “HyS9EPMAWebTier” depend= OracleServiceHYPFM
sc config “EPMA_Server” depend= OracleServiceHYPFM
sc config “HyS9EPMADataSynchronizer” depend= OracleServiceHYPFM
sc config “HyS9CALC” depend= OracleServiceHYPFM
sc config “HyS9aifWeb” depend= OracleServiceHYPFM
Метки:
CMD,
example,
FAQ,
Hyperion,
link,
Optimization,
script,
services starting and stopping
17 мая 2012
IBH в базе Essbase
Редко, но можно столкнуться с проблемой появления некорректных (дефектных) заголовков блоков - invalid block headers (IBH), которая описывается в логе приложения Essbase примерно так:
[Wed May 16 22:51:58 2012]Local/AppName/Cube/admin@Native Directory/Error(1006068)Недопустимый статус транзакции для блока. Для поиска и устранения проблемы воспользуйтесь служебными программами поиска и устранения IBH.
Причинами могут быть:
- Какой-то сторонний процесс пытается получить доступ с блокировкой к файлам базы данных (куба) Essbase. Например, антивирус или ПО резервного копирования
- Служба Essbase была остановлена во время извлечения данных или выполнения расчетов. Иными словами, некорректная остановка или "падение" базы данных
- Проблемы с дисковой подсистемой сервера. Например, ошибки в работе RAID-массивов, bad blocks на накопителях информации
- Закончилось место на диске
- Сильная фрагментация диска
- Сильная фрагментация базы данных (куба)
- Использование Direct I/O
- Слишком маленький кэш данных куба
- Подобные ошибки встречались в Essbase 6.х и 7.х
После проверки всех пунктов из списка выше для решения проблемы можно выполнить на проблемной базе данных (кубе) MaxL скрипт:
alter application 'AppName' disable connects;alter system logout session on database 'AppName'.'Cube';alter database 'AppName'.'Cube' validate data to local logfile 'f:\IBH.log';alter database 'AppName'.'Cube' repair invalid_block_headers;alter application 'AppName' enable connects;
Этот скрипт проверяет куб на наличие IBH и записывает найденные блоки в указанный лог-файл, а затем удаляет дефектные блоки из базы данных (куба).
Иногда после выполнения скрипта необходимо выполнить реструктуризацию куба, чтобы indeх файл был перестроен с учетом исправления IBH. В идеале - выгрузить данные из куба, очистить его и загрузить данные обратно.
Иногда после выполнения скрипта необходимо выполнить реструктуризацию куба, чтобы indeх файл был перестроен с учетом исправления IBH. В идеале - выгрузить данные из куба, очистить его и загрузить данные обратно.
UPD: Кроме того, имеет смысл иметь опцию в essbase.cfg:
Наш соратник Евгений Расюк добавляет, и я его поддерживаю:
IBHFIXTHRESHOLD AppName Cube 10Эта команда говорит Essbase, что нужно проверять наличие IBH на кубе (это происходит и без указания опции в явном виде) и, в случае превышения порога 10% (пример), базу данных следует корректно остановить. Это сделано, с целью показать, что критическая масса IBH накоплена, и нужно что-то делать. Однако, в EPM 11 за работоспособность Essbase отвечает сервис OPMN, который регулярно пингует службу OLAP-сервера и может заставить запуститься приложение заново.
Наш соратник Евгений Расюк добавляет, и я его поддерживаю:
- Всегда нужно иметь бэкап с выгруженными данными в текст. Это хоть и долго, на гораздо надежнее простого копирования файлов куба - "это видимость бэкапа" - в таком случае все проблемы (например, IBH) будут также занесены в бэкап
- Нужно стараться проектировать модели таким образом, чтобы исключить кастом расчеты на агрегируемых уровнях
16 апреля 2012
Списки пользователей в Excel
Как и обещал, начинаю выкладывать некоторые "секреты" подготовки материалов к аудиту моей теперешней промышленной системы (FDM, HFM, Planning 11.1.2.00).
Для начала аудиторы запросили список существующих и удаленных пользователей системы. Используя вот эту подсказу вендора (структура и описание реляционных БД продуктов EPM), накидал 2! вьюхи в СУБД (MS SQL Server), в которых отразил все необходимые данные. К сожалению, FDM/HFM слабо интегрированы с HSS, поэтому вьюх и оказалось две.
Отчет по доступу к подсистеме бюджетирования на базе Planning/Essbase был получен таким образом из БД HSS:
Отчет по доступу к подсистеме подготовки МСФО отчетности на базе FDM/HFM был получен из БД HSS + HSV_ProductionHFMAppName_SECCACCESS:
Таким образом, подключившись к созданным вьюшкам из Excel, свободно получаем данные для формирования отчетов по безопасности.
Отмечу, что пользователей мы декативируем, а не удаляем, сохраняя таким образом целостность аудита. По полю ACCOUNTSTATUS устанавливаем фильтр: где 1 - активный пользователь; 2 - "мертвая душенка".
Для начала аудиторы запросили список существующих и удаленных пользователей системы. Используя вот эту подсказу вендора (структура и описание реляционных БД продуктов 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 - имя БД HSS, HSV_ProductionHFMAppName_SECCLASSES - имя таблицы с классами безопасности FDM/HFM.
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
Таким образом, подключившись к созданным вьюшкам из Excel, свободно получаем данные для формирования отчетов по безопасности.
Отмечу, что пользователей мы декативируем, а не удаляем, сохраняя таким образом целостность аудита. По полю ACCOUNTSTATUS устанавливаем фильтр: где 1 - активный пользователь; 2 - "мертвая душенка".
06 апреля 2012
MaxL по расписанию
Часто бывает необходимым поставить выполнение MaxL скрпита в расписание. Причем этот скрипт создан в EAS Console и хранится на сервере. Я решил эту задачу созданием batch файла, который ставится в расписание Windows Server:
@echo offВходящим параметром является имя MaxL скрпита без расширения.
rem - Input parameter is a name of MaxL script (only name w/out extension)
setlocalВся информация сохранится в логе, имя файла которого задается переменной EXECLOG.
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
SET EXECLOG=AutoStartMaxL-%1.logПоскольку в консоли вход и подключение производить не нужно, а внешним скриптом - необходимо, добавляем строки входа (login) и завершения работы (logout и exit).
SET RunMaxl=AutoStartMaxL.mxl
SET CurrDir=%CD%
echo Started: %date% @ %time% > %CurrDir%\%EXECLOG%
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Добавляем в расписание (Task Scheduler) задачу на выполнение нашего bat-файла с параметром - именем MaxL скрпита.
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%
Метки:
CMD,
EAS,
Essbase,
Essbase 11,
Essbase 9,
example,
Hyperion,
MAXL,
script,
windows server
26 марта 2012
Скользкие формы Planning
Встала передо мной задача: построить формы в Planning таким образом, чтобы на форме был текущий месяц (Period Dim) и пару месяцев назад. Естественно, каждый раз перестраивать ручками формы лень, а есть ситуации, когда нужно "заглянуть" на 1-2 мес в прошлый год. Вот и получаются у нас "скользящие" формы.
К сожалению, сами формы данных, в отличие от отчетов FinReporting, построить с использование ссылающихся функций (вроде Prior) нельзя. Ответ нашелся на форуме: https://forums.oracle.com/forums/thread.jspa?messageID=9454665 Да, и так понятно, что это единственный вариант - через переменные подстановки в Essbase. Прекрасно, приступим к реализации:
К сожалению, сами формы данных, в отличие от отчетов FinReporting, построить с использование ссылающихся функций (вроде Prior) нельзя. Ответ нашелся на форуме: https://forums.oracle.com/forums/thread.jspa?messageID=9454665 Да, и так понятно, что это единственный вариант - через переменные подстановки в Essbase. Прекрасно, приступим к реализации:
- Определяемся с набором переменных. Для каждого "специфического" периода может быть нужен свой год. Например, в моем случае: в январе текущего понадобятся еще ноябрь и декабрь прошлого года, а в феврале - только декабрь прошлого года и январь нынешнего:
- CurrYearFor - текущий год
- CurrPerFor - текущий период для Прогнозирования
- Prev1PerFormFor - предыдущий период
- Prev1YearFormFor - год для предыдущего периода (Prev1PerFormFor)
- Prev2PerFormFor - пред-пердыдущий период
- Prev2YearFormFor - год для пред-предыдущего периода (Prev2PerFormFor)
- Создаем эти переменные подстановки в кубе приложения 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';
- Настраиваем формы данных на использование этих переменных. Здесь придется отказаться от выбора года и периода в срезе, потому что придется эти измерения "зашивать" в таблицы данных.
- Готовим скрипт (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% - Автоматизируем запуск этого файла, вставляя задачу в Task Scheduler. Сначала я готовил батничек для ручного режима с менюшкой для ответственного пользователя, но пришел к выводу, что могу автоматизировать процесс такого обновления переменных: я знаю, что пользователи полезут в систему к 1-му числу, значит числа 25 могу смело обновлять переменные.
10 июля 2011
Запуск/остановка сервисов EPM 11.1.2.1
Ввиду того, что в этом релизе изменились имена некоторых сервисов, некоторых не стало вовсе, а также в связи с переводом на sc start|stop, предлагаю Вашему вниманию обновленные скрипты для запуска платформы Oracle EPM System 11.1.2.1 (DB, Foundation, Essbase, Planning, Reporting&Analysis):
Понятно, что данные скрипты приведены только для примера и требуют уточнений в части сервисов RDBMS и номера сервиса OHS. Кроме того, можно более гибко управлять запуском даже с удаленных машин, используя все возможности команды sc. Верные имена служб можно найти в реестре в ветке:
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
21 мая 2011
17,7 секунд - быстро, но долго
Перемещено из блога Oracle Hyperion Planning: заметки администратора с разрешения автора - Романа Удальцова
Запуск бизнес-правил из командной строки с использованием Hyperion CmdLineLauncher – это удобно в ситуации, когда необходимо многократно запускать вручную кучу последовательностей, содержащих в себе большое число бизнес-правил. Один раз автоматизировал, и сиди себе запускай батничек.
Но обнаружилась интересная особенность. При запуске из командной строки любое бизнес-правило выполняется на некоторую константу дольше, чем при запуске его же из нативной последовательности Essbase. Покажу на примере...
У меня запускается ряд последовательностей, содержащих в себе в общей сложности 547 бизнес-правил. Очень многие из них, судя по hbrlaunch.log, выполняются за доли секунды.
Статистика автоматизированного запуска из командной строки выглядит следующим образом (число бизнес-правил / время выполнения):
Самое интересное происходит в левой части графика:
Видно, что ни одно бизнес-правило не выполнилось быстрей, чем за 17,7 секунд.
Простая арифметика показывает, что на моем примере это целых... 17,7 х 547 = 9681,9 сек. = 2 часа 41 минута 21,9 секунды, потраченные непонятно на что! Распараллеливание запусков бизнес-правил несколько уменьшает это время (примерно до полутора часов), но от этого не легче.
Всё это пока просто наблюдение, если докопаюсь до причины – расскажу.
Есть предположение, что это причиной задержки может служить запуск Java для каждого из процессов, но почему так долго?
UPD
Завёл по этому поводу SR, за 3 дня переписки ничего толкового не посоветовали.
Их резюме – «I'm afraid that we have no other reports of this timing difference nor any documentation that would explain why it might occur. If you believe that this is a significant issue I could test it and then raise it with Development as a bug, although I'm not sure they would accept it as such.»
UPD2
Финальный ответ от Oracle.
Мое предположение подтвердилось. Ну и надо учесть время подключения к EAS:
«I have been able to get an explanation as to why the rules will take longer to run when launched via the cmdlnlauncher: CmdLnLauncher has to connect to remote EAS server in order to launch the rule. For Planning, the rule engine runs within the same JVM and that's why it can launch the rule faster compared to CmdLnlauncher.»
Запуск бизнес-правил из командной строки с использованием Hyperion CmdLineLauncher – это удобно в ситуации, когда необходимо многократно запускать вручную кучу последовательностей, содержащих в себе большое число бизнес-правил. Один раз автоматизировал, и сиди себе запускай батничек.
Но обнаружилась интересная особенность. При запуске из командной строки любое бизнес-правило выполняется на некоторую константу дольше, чем при запуске его же из нативной последовательности Essbase. Покажу на примере...
У меня запускается ряд последовательностей, содержащих в себе в общей сложности 547 бизнес-правил. Очень многие из них, судя по hbrlaunch.log, выполняются за доли секунды.
Статистика автоматизированного запуска из командной строки выглядит следующим образом (число бизнес-правил / время выполнения):
Самое интересное происходит в левой части графика:
Видно, что ни одно бизнес-правило не выполнилось быстрей, чем за 17,7 секунд.
Простая арифметика показывает, что на моем примере это целых... 17,7 х 547 = 9681,9 сек. = 2 часа 41 минута 21,9 секунды, потраченные непонятно на что! Распараллеливание запусков бизнес-правил несколько уменьшает это время (примерно до полутора часов), но от этого не легче.
Всё это пока просто наблюдение, если докопаюсь до причины – расскажу.
Есть предположение, что это причиной задержки может служить запуск Java для каждого из процессов, но почему так долго?
UPD
Завёл по этому поводу SR, за 3 дня переписки ничего толкового не посоветовали.
Их резюме – «I'm afraid that we have no other reports of this timing difference nor any documentation that would explain why it might occur. If you believe that this is a significant issue I could test it and then raise it with Development as a bug, although I'm not sure they would accept it as such.»
UPD2
Финальный ответ от Oracle.
Мое предположение подтвердилось. Ну и надо учесть время подключения к EAS:
«I have been able to get an explanation as to why the rules will take longer to run when launched via the cmdlnlauncher: CmdLnLauncher has to connect to remote EAS server in order to launch the rule. For Planning, the rule engine runs within the same JVM and that's why it can launch the rule faster compared to CmdLnlauncher.»
Метки:
Роман Удальцов,
business-rules,
CMD,
Essbase,
Essbase 9,
example,
FAQ,
Hyperion,
JRE,
Optimization,
script
CmdLineLauncher - Параллельное выполнение бизнес-правил
Перемещено из блога Oracle Hyperion Planning: заметки администратора с разрешения автора - Романа Удальцова
Возникла задача ускорить выполнение немаленькой (под 500 шагов) последовательности бизнес-правил. При внимательном рассмотрении выяснилось, что часть из них может выполняться параллельно, чем я и воспользовался с помощью стандартной утилиты Hyperion CmdLineLauncher (лежит в \Hyperion\products\Essbase\eas\console\bin\).
Результатом творческого поиска стала следующая конструкция:
/logs/*.log – логи последнего запуска, старые складываются в logs.rar
/prompts/*.prompts – временные файлы значений переменных
/sys/ – служебные файлы и скрипты, см. подробности далее
Описание последовательности.txt – специально подготовленный текстовый файл
Запуск бизнес-правил.bat – запуск выполнения последовательности
Процесс начинается с подготовки файла Описание последовательности.txt. По сути, это csv-файл следующего вида:
Некоторые пояснения:
– Полное название бизнес-правила включает в себя префикс в виде наименования приложения, оно было выделено в отдельный столбец просто для удобства подготовки файла, позже 1 и 2 столбцы склеиваются
– В столбцах перечисляются все возможные измерения, элементы которых могут встречаться во входных параметрах бизнес-правил
– В случае отсутствия значения (например, Прил1.Бизнес-правило 2 не требует Entity) ставится символ -
– Первая строка форматируется произвольно, т.к. она исключается из обработки
– Parallel можно читать следующим образом: Следующий шаг выполняется [1 – параллельно / 0 – последовательно] с текущим
Таким образом, в приведенном выше примере Прил1.Бизнес-правило 1 будет запущено на параллельное выполнение для ЦФО 1 и ЦФО 2, после чего выполнится Прил1.Бизнес-правило 2 (последовательно).
Далее "Описание последовательности.txt" скармливается скрипту "Запуск бизнес-правил.bat" (запуск из cmd вида "Запуск бизнес-правил.bat" "Описание последовательности.txt" или просто drag-n-drop):
– Строки входного файла можно комментировать символом, указанным в eol, в данном случае #
– Разделители меняются в delims, например, можно заменить ; на или любой другой на ваш вкус
– Между запусками установлен таймаут 4 секунды, если timeout у вас не работает (он входит в Windows Resource Kit), можно использовать конструкцию вида ping -n 5 127.0.0.1>nul (необходимое число секунд + 1)
– skip указывает на число игнорируемых верхних строк
Здесь используется довольно простой скрипт для назначения общих переменных \sys\Глобальные переменные.cmd:
Как видно из Запуск бизнес-правил.bat, он построчно обрабатывает входной текстовый файл и в зависимости от параметра Parallel запускает \sys\RunHBR.bat в указанными в строке входного файла параметрами в параллель (1) с промежутками в 4 секунды, либо перед запуском следующего бизнес-правила ожидает завершения текущего (0).
А вот сам \sys\RunHBR.bat, запускающий CmdLineLauncher:
Возникла задача ускорить выполнение немаленькой (под 500 шагов) последовательности бизнес-правил. При внимательном рассмотрении выяснилось, что часть из них может выполняться параллельно, чем я и воспользовался с помощью стандартной утилиты Hyperion CmdLineLauncher (лежит в \Hyperion\products\Essbase\eas\console\bin\).
Результатом творческого поиска стала следующая конструкция:
/logs/*.log – логи последнего запуска, старые складываются в logs.rar
/prompts/*.prompts – временные файлы значений переменных
/sys/ – служебные файлы и скрипты, см. подробности далее
Описание последовательности.txt – специально подготовленный текстовый файл
Запуск бизнес-правил.bat – запуск выполнения последовательности
Процесс начинается с подготовки файла Описание последовательности.txt. По сути, это csv-файл следующего вида:
Application;Rule;DBName;Year;Scenario;Version;Entity;Parallel[0/1]
Прил1;Бизнес-правило 1;Plan1;FY11;Budget;Version 1;ЦФО 1;1
Прил1;Бизнес-правило 1;Plan1;FY11;Budget;Version 1;ЦФО 2;0
Прил1;Бизнес-правило 2;Plan1;FY11;Budget;Version 1;-;0
Некоторые пояснения:
– Полное название бизнес-правила включает в себя префикс в виде наименования приложения, оно было выделено в отдельный столбец просто для удобства подготовки файла, позже 1 и 2 столбцы склеиваются
– В столбцах перечисляются все возможные измерения, элементы которых могут встречаться во входных параметрах бизнес-правил
– В случае отсутствия значения (например, Прил1.Бизнес-правило 2 не требует Entity) ставится символ -
– Первая строка форматируется произвольно, т.к. она исключается из обработки
– Parallel можно читать следующим образом: Следующий шаг выполняется [1 – параллельно / 0 – последовательно] с текущим
Таким образом, в приведенном выше примере Прил1.Бизнес-правило 1 будет запущено на параллельное выполнение для ЦФО 1 и ЦФО 2, после чего выполнится Прил1.Бизнес-правило 2 (последовательно).
Далее "Описание последовательности.txt" скармливается скрипту "Запуск бизнес-правил.bat" (запуск из cmd вида "Запуск бизнес-правил.bat" "Описание последовательности.txt" или просто drag-n-drop):
@echo offОсновные шаги понятны из комментариев, вот несколько уточнений:
chcp 1251 >nul
:: Определение пути к папке HBRLauncher
set HBRPath=%~dp0
set HBRPath=%HBRPath:~0,-1%
:: Определение общих параметров
call "%HBRPath%\sys\Глобальные переменные.cmd" %HBRPath%
:: Архивация старых логов
%HBRPath%\sys\rar.exe m -ep1 -idp %HBRPath%\logs\logs.rar %HBRPath%\logs\*.log >nul
:: Удаление старых временных файлов значений переменных
if exist %HBRPath%\*.prompts del %HBRPath%\*.prompts
:: i:App – j:Rule – k:DBName – l:Year – m:Scenario – n:Version – o:Entity – p:Parallel[0/1] – q:Timeout
for /f "usebackq skip=1 eol=# tokens=1-9 delims=;" %%i in (%1) do (
echo [%%i][%%k][%%l][%%m][%%n][%%j][%%o]
if '%%p'=='1' start "" /d"%HBRPath%\sys\" /min %HBRPath%\sys\RunHBR.bat "%%i" "%%j" "%%k" "%%l" "%%m" "%%n" "%%o"
if '%%p'=='0' start "" /d"%HBRPath%\sys\" /min /w %HBRPath%\sys\RunHBR.bat "%%i" "%%j" "%%k" "%%l" "%%m" "%%n" "%%o"
timeout %%q >nul
)
– Строки входного файла можно комментировать символом, указанным в eol, в данном случае #
– Разделители меняются в delims, например, можно заменить ; на
– Между запусками установлен таймаут 4 секунды, если timeout у вас не работает (он входит в Windows Resource Kit), можно использовать конструкцию вида ping -n 5 127.0.0.1>nul (необходимое число секунд + 1)
– skip указывает на число игнорируемых верхних строк
Здесь используется довольно простой скрипт для назначения общих переменных \sys\Глобальные переменные.cmd:
:: Входные переменные: %HBRPath%
@echo off
:: Essbase Administration Server
set EAS=EASServerName
:: Логин
set User=admin
:: Активное приложение
set App=Essbase/EssbaseServerName/AppName/
:: Зашифрованный пароль – файл формируется отдельно (см. \Essbase\eas\console\bin\PasswordEncryption.bat)
set PwdFile=%HBRPath%\sys\%User%.password
Как видно из Запуск бизнес-правил.bat, он построчно обрабатывает входной текстовый файл и в зависимости от параметра Parallel запускает \sys\RunHBR.bat в указанными в строке входного файла параметрами в параллель (1) с промежутками в 4 секунды, либо перед запуском следующего бизнес-правила ожидает завершения текущего (0).
А вот сам \sys\RunHBR.bat, запускающий CmdLineLauncher:
:: 1:App - 2:Rule - 3:DBName - 4:Year - 5:Scenario - 6:Version - 7:Entity
:: Запись входных параметров бизнес-правила (с удалением кавычек)
set Rule=%~1.%~2
set DBName=%~3
set Year=%~4
set Scenario="%~5"
set Version="%~6"
set Entity="%~7"
:: Лог-файл
set Log="%HBRPath%\logs\%date:~6,4%%date:~3,2%%date:~0,2%.%time:~0,2%%time:~3,2%%time:~6,2%%time:~9,2%.%~2.%~7.log"
:: Начало выполнения
echo [%date:~0,2%.%date:~3,2%.%date:~6,4% %time:~0,2%:%time:~3,2%:%time:~6,2%.%time:~9,2%] – Начало выполнения бизнес-правила "%Rule%" (%~7) 1>>%Log%
echo. 1>>%Log%
:: Путь к временному файлу значений входных переменных
set Prompts="%HBRPath%\prompts\%date:~6,4%%date:~3,2%%date:~0,2%.%time:~0,2%%time:~3,2%%time:~6,2%%time:~9,2%.%~2.%~7.prompts"
:: Формирование файла значений переменных
echo %Rule% >>%Prompts%
echo ExecDB::%App%%DBName% >>%Prompts%
if not [%Year%]==[-] echo YearPrompt::"%Year%" >>%Prompts%
if not [%Entity%]==["-"] echo EntityPrompt::"%Entity%" >>%Prompts%
if not [%Version%]==["-"] echo VersionPrompt::"%Version%" >>%Prompts%
if not [%Scenario%]==["-"] echo ScenarioPrompt::"%Scenario%" >>%Prompts%
:: Запуск бизнес-правила
call %HBRPath%\sys\CmdLineLauncher -p:"%PwdFile%" -S%EAS% -U%User% -r"%Rule%" -f%Prompts% 1>>%Log% 2>&1
:: Удаление файла значений переменных
del %Prompts%
echo. 1>>%Log%
echo [%date:~0,2%.%date:~3,2%.%date:~6,4% %time:~0,2%:%time:~3,2%:%time:~6,2%.%time:~9,2%] – Окончание выполнения бизнес-правила "%Rule%" (%~7) 1>>%Log%
exit
Метки:
Роман Удальцов,
business-rules,
CMD,
Essbase,
Essbase 9,
example,
FAQ,
Hyperion,
Optimization,
script
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, которые нужно запускать. Располагаем их в необходимом порядке запуска:
3. Пишем batch-скрипт, который будет генерить(!) MaxL-скрипт для полного расчета:
SERVER, USER, PASSWORD – задают сервер Essbase и его пользователя с администраторскими правами,
APPNAME – имя приложения (скажу, что работал с одним кубом Plan1, поэтому прописал его жестко в скрипте). Не забываем брать в кавычки значения переменных, которые содержат пробелы!
Принцип работы:
В папке с этим batch-скриптом генрим MaxL-скрипт (APPNAME_script.maxl), получая имена правил из файла RulesList.txt. И выполняем этот MaxL-скрипт, на всякий случай запуская приложение в Essbase. Лог выполнения MaxL-скрипта пишется в APPNAME_AutoCalc_{дата-время}.log. Все прозрачно!
Замечание: Для правил, использующих переменные с вводом данных (например, предела ставки начисления ЕСН), необходимо установить необходимые значения как дефолтные!
4. Добавляем наш batch-скрипт в расписание, если нужно.
Enjoy!
UPD: Альтернативный (несколько более сложный, но более функциональный) вариант описан у Романа Удальцова здесь
Приложение HBRules (для создания и управления бизнес-правилами; современный аналог - CalcManager) имеет ряд неприятных ограничений. В этот раз меня разозлил момент, связанный с тем, что невозможно создавать длинные последовательности (sequences). А именно такая задача и стояла, озаглавленная как «Полный пересчет модели».
Итак, один большой сиквенс сделать невозможно. Разбить на несколько – неудобно, потому что пересчеты возможно запускать только по ночам. Да, еще хочется иметь лог для оценки времени (для поиска узких мест и дальнейшей их оптимизации) и статуса завершения расчетов.
Итак, пришел к такому варианту:
1. Переводим (Export) нужные правила в Essbase, чтобы иметь возможность запускать их через MaxL. Минус очевиден: мы теряем связь правила, которое будет портировано в Essbase, и оригинального правила в HBRules, которое может измениться. Лучшее, что я придумал – создать таблицу соответствий имен правил HBRules – Essbase. При изменении правила в HBRules необходимо экспортировать его в Essbase-правило с тем же именем.
2. Готовим список правил Essbase, которые нужно запускать. Располагаем их в необходимом порядке запуска:
FC-1-01Список сохраним в ascii-файлик RulesList.txt.
FC-1-02
FC-2-01
3. Пишем batch-скрипт, который будет генерить(!) MaxL-скрипт для полного расчета:
@echo offгде STARTPATH – директория запуска данного скрипта,
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 =======================================================
SERVER, USER, PASSWORD – задают сервер Essbase и его пользователя с администраторскими правами,
APPNAME – имя приложения (скажу, что работал с одним кубом Plan1, поэтому прописал его жестко в скрипте). Не забываем брать в кавычки значения переменных, которые содержат пробелы!
Принцип работы:
В папке с этим batch-скриптом генрим MaxL-скрипт (APPNAME_script.maxl), получая имена правил из файла RulesList.txt. И выполняем этот MaxL-скрипт, на всякий случай запуская приложение в Essbase. Лог выполнения MaxL-скрипта пишется в APPNAME_AutoCalc_{дата-время}.log. Все прозрачно!
Замечание: Для правил, использующих переменные с вводом данных (например, предела ставки начисления ЕСН), необходимо установить необходимые значения как дефолтные!
4. Добавляем наш batch-скрипт в расписание, если нужно.
Enjoy!
UPD: Альтернативный (несколько более сложный, но более функциональный) вариант описан у Романа Удальцова здесь
11 марта 2011
Изменение режима обслуживания приложения Planning через batch-файл
Очень интересное и простое решение, которое можно использовать, например на время бэкапа или обновления метаданных (через ODI/batch).
В первом случае [бэкап] обычно используют MaxL скрипт, который принудительно прерывает операции в Essbase и производит выгрузку данных. При этом пользователь обычно может войти в приложение, но получит ошибку при открытии формы, поскольку Essbase находится в этот момент в режиме обслуживания. Не очень красиво, конечно. Да, и пользователь начнет писать гневные письма.
Во втором случае [обновления справочников/измерений в приложении Planning] желательно пользователей до завершения деплоя вообще не пускать в приложение.
Таким образом, очень удобно поставить в расписание перед бэкапом, обновлением и т.п. задачу перевода приложения в режим обслуживания с доступом только администраторам, а по окончании этих работ - обратно дать доступ пользователям.
Метод изменения режима обслуживания приложения Planning через batch-файл описан по этой ссылке.
В первом случае [бэкап] обычно используют MaxL скрипт, который принудительно прерывает операции в Essbase и производит выгрузку данных. При этом пользователь обычно может войти в приложение, но получит ошибку при открытии формы, поскольку Essbase находится в этот момент в режиме обслуживания. Не очень красиво, конечно. Да, и пользователь начнет писать гневные письма.
Во втором случае [обновления справочников/измерений в приложении Planning] желательно пользователей до завершения деплоя вообще не пускать в приложение.
Таким образом, очень удобно поставить в расписание перед бэкапом, обновлением и т.п. задачу перевода приложения в режим обслуживания с доступом только администраторам, а по окончании этих работ - обратно дать доступ пользователям.
Метод изменения режима обслуживания приложения Planning через batch-файл описан по этой ссылке.
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-инсталлера
UPD: Если инсталлер запустился, то любые ошибки установки связаны либо с неверной (не в ту директорию, не от той версии архив) или неполной распаковкой дистрибутивов, либо с работой файервола/антивируса. У меня Comodo CIS после некоторого времени, не получая моего разрешения на действие компоненты установки, блокировал выполнение установки какого-то компонента. Это вызывало ошибки.
Конфигурируем аналогично описанному здесь через EPM Configurator, который запускаем от имени Администратора.
После завершения конфигурирования идем в реестр HKLM\SOFTWARE\Hyperion Solutions и устанавливаем значения -Xms128m / -Xmx512m везде, где найдем, и перезапускаем сервисы для лучшей их производительности на ограниченном объеме RAM.
- В сервисах (службах) для всех компонент EPM (начинаются со слова Hyperion) и Oracle Proccess manager выставляем свойства запуска "Вручную". Запускать можно через ярлыки в Пуске.
- Аналогичную операцию проводим для сервера БД. Но для его запуска настраиваем пару bat-файлов для запуска/остановки.
Пример запуска SQL Server:
В моем случае не появились ярлыки на запуск EPM System. Кроме того, запуск сервисов через них занимает больше 10 минут. Напишем свой bat. Отрабатывает быстрее.
startEPM.bat
UPD: Вариант использования SC вместо NET (start|stop) хорошо описан здесь у Романа Удальцова
Порядок запуска после установки становится таким:
- Запускаем SQL Server - из нашего первого батничка;
- Запускаем Foundation Services (Oracle WebLogic 10) - есть ярлычок в Пуске, но в нашем случае нет необходимости;
- Запускаем EPM System - из второго нашего батничка.
Порядок остановки обратен.
Enjoy!
Для работы нам пригодятся:
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 от имени Администратора и устанавливаем все по накатанной.\installTool-logging.xml -DDATE_TIME=%DATE_TIME% -jar \installTool.jar %*
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Пример остановки SQL Server:
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
@ECHO OFFКладем файлы, например в %hyperion_home%, а ярлычки кидаем на рабочий стол или в Пуск к EPM.
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
В моем случае не появились ярлыки на запуск EPM System. Кроме того, запуск сервисов через них занимает больше 10 минут. Напишем свой bat. Отрабатывает быстрее.
startEPM.bat
ECHO -------EPM 11.1.2 STARTING / Batch EPM full start script by Antun Kulkov, 2011stopEPM.bat
@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
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 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-файл:
Все достаточно прозрачно:
- Сначала задаем нужные переменные для дат/времени и директорий 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!
- Директории с конфигурациями продуктов 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!
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;
Подписаться на:
Сообщения (Atom)