Для обслуживания и устранения неполадок кубов Essbase с федерированными разделами следуйте приведенным ниже рекомендациям.
В этом разделе предполагается, что вы создали федерированный раздел и ознакомились с информацией, подробно описанной в предыдущих разделах.
При проектировании куба федерированного раздела, если создание раздела занимает слишком много времени, следуйте приведенным ниже инструкциям. Эти инструкции полезны для пошаговой диагностики или отслеживания производительности.
Запустите проект федерированного раздела в тестовой среде.
Начните с моделей кубов с указанными ниже характеристиками:
не очень много уровней
не очень много общих элементов или атрибутов
При создании федерированного раздела запланируйте автономные операции, если для экземпляра не разрешены запросы.
Постепенно отключите активные сеансы пользователей Essbase с помощью команд disable commands
и (или) disable connects
в alter application MaxL (чтобы предотвратить создание новых сеансов) с последующим завершением сеанса в alter system (logout session
) и (или) удалением запроса (kill request
, если нужно завершить все активные сеансы, не дожидаясь выполнения заданий). Обратите внимание, что MaxL не может удалить запросы, которые выполняются в Autonomous Data Warehouse. Если вы отключили команды в приложении, помните, что их нужно снова включить после создания федерированного раздела.
/etc/httpd/conf.d/00_base.conf:ProxyTimeout 1260
/etc/httpd/conf.d/00_base.conf:Timeout 1260
olap.server.netRetryCount
равным 9000.Примечание.:
Если при создании федерированного раздела отображается сообщение об ошибке "Сбой при сохранении структуры", дождитесь завершения сеансов, а затем обновите браузер. Если федерированный раздел создан, проверьте его в SQL Developer. Если федерированный раздел успешно проходит проверку в SQL Developer, то он готов к использованию. Если он не проходит проверку в SQL Developer, необходимо исправить модель и выполнить настройку времени ожидания, как описано выше в шаге 3.Если в Essbase есть федерированный раздел, необходимо соблюдать осторожность при изменении структуры куба. При добавлении или переименовании элементов убедитесь, что изменения метаданных учтены также в таблице фактов в Autonomous Data Warehouse.
Если структура Essbase не синхронизируется с таблицей фактов в Autonomous Data Warehouse, федерированный раздел перестанет быть допустимым или не будет корректно работать. Чтобы исправить это, придется его удалить, внести изменения в структуру и таблицу фактов, а затем заново создать федерированный раздел.
Если федерированный раздел станет недопустимым, можно столкнуться с ошибкой, начинающейся с Ошибка Essbase (1040235). Удаленное предупреждение из федерированного раздела
.
Федерированный раздел станет недопустимым при следующих изменениях структуры Essbase:
Добавление, переименование или удаление измерений
Добавление, переименование или удаление сохраненных элементов в измерении сводной таблицы
Превращение любых сохраненных элементов в динамические
Для других типов изменений в структуре Essbase, не указанных выше (например, при добавлении или переименовании элемента не в измерении сводной таблицы), необходимо внести соответствующее изменение в нужную строку данных в таблице фактов. В противном случае возможны сбои в работе федерированного раздела.
Если вы заранее знаете, что метаданные структуры Essbase изменятся, лучше сначала удалить федерированный раздел, внести изменения в структуру, а затем создать раздел заново.
Если метаданные Essbase изменились и федерированный раздел стал недопустимым, выполните следующие действия.
Удалите федерированный раздел и связанное с ним подключение (если оно не используется иным образом), как описано в разделе "Удаление федерированного раздела".
Вручную удалите из пользовательской схемы федерированного раздела в хранилище Autonomous Data Warehouse любые таблицы, сгенерированные Essbase, и другие объекты, которые не были удалены вместе с федерированным разделом.
Убедитесь, что изменения структуры внесены в куб Essbase.
Заново создайте таблицу фактов. См. раздел "Создание таблицы фактов".
Заново создайте подключение к Autonomous Data Warehouse. Это может быть как глобальное подключение (под главным значком "Источники данных" в веб-интерфейсе Essbase), так и определенное в "Источниках данных" только для данного приложения. Следуйте инструкциям в разделе "Создание подключения для федерированных разделов".
Заново создайте федерированный раздел, как описано в разделе "Создание федерированного раздела".
Если сведения о подключении к хранилищу Autonomous Data Warehouse, которое Essbase использует для федерированного раздела, изменились, необходимо удалить и заново создать федерированный раздел, а также удалить связанные с ним объекты и таблицы метаданных из схемы таблицы.
Удалить и заново создать федерированный раздел придется также, если после создания раздела произойдет любое из следующих событий:
Изменение порта Autonomous Data Warehouse
Изменение имени подключение
подключение использует бумажник, и вы переключаетесь с одного имени сервиса на другое (для изменения производительности или параллельности)
При обновлении структуры меняется сопоставление элементов с таблицей фактов, в результате чего прекращается синхронизация федерированного раздела. Чтобы узнать больше, см. "Меры предосторожности при работе с метаданными в федерированных разделах".
Если вы заранее знаете, что информация о подключении изменится, лучше заранее удалить федерированный раздел, а после внесения изменений создать его заново. Если информация о подключении изменилась и федерированный раздел стал недопустимым, выполните следующие действия.
Удаление федерированного раздела
Удалите федерированный раздел и связанное с ним подключение (если оно не используется иным образом), как описано в разделе "Удаление федерированного раздела".
Удаление объектов и таблиц метаданных, связанных с федерированным разделом
Удалите из пользовательской схемы федерированного раздела в хранилище Autonomous Data Warehouse любые таблицы, сгенерированные Essbase, и другие объекты, которые не были удалены вместе с федерированным разделом.
Подключитесь к хосту Essbase Server по SSH как пользователь opc.
ssh -i MPOCI_KEY.pem opc@100.xxx.xxx.xxx
Переключитесь на пользователя oracle и перейдите в его основную папку.
sudo su - oracle
Перейдите в папку приложений.
cd /u01/data/essbase/app
Используя приложение Essbase и имя куба, определите уникальный префикс, связанный с объектами и метаданными федерированного раздела.
Получите имя приложения (AppName). При вводе имени учитывается регистр, поэтому запишите его точно. В этом примере AppName = Sample.
ls
Sample
Подсчитайте число знаков (appx) в имени приложения.
Пример: appx = 6.
Перейдите в папку куба и получите имя куба (DbName). При вводе имени учитывается регистр, поэтому запишите его точно. В этом примере DbName = Basic.
cd /Sample
ls
Basic
Подсчитайте число знаков (dby) в имени куба.
Пример: dby = 5.
Создайте префикс Prefix следующим образом:
ESSAV_<appx><AppName>_<dby><DbName>_
Пример.
<Prefix> = ESSAV_6Sample_5Basic_
С помощью SQL Developer или другого инструмента подключитесь к Oracle Database как пользователь схемы, к которой подключен федерированный раздел.
Выполните инструкцию SELECT, чтобы создать список объектов, связанных с приложением вашего федерированного раздела. Это объекты, которые вы удалите на следующем этапе.
Формат инструкции SELECT:
SELECT * FROM user_OBJECTS WHERE OBJECT_NAME like '<Prefix>%';
Пример.
SELECT * FROM user_OBJECTS WHERE OBJECT_NAME like 'ESSAV_6Sample_5Basic_%';
Выполните сохраненную процедуру PL/SQL, которая удаляет все аналитические представления, пакеты, иерархии, таблицы и другие объекты, связанные с префиксом Prefix.
Пример
Замените ESSAV_6Sample_5Basic_
на свой префикс Prefix.
SET SERVEROUTPUT ON; declare prefix_str varchar2(70) := 'ESSAV_6Sample_5Basic_'; BEGIN FOR c IN ( SELECT ANALYTIC_VIEW_NAME FROM user_analytic_views WHERE ANALYTIC_VIEW_NAME like prefix_str || '%' ) LOOP EXECUTE IMMEDIATE 'DROP ANALYTIC VIEW "' || c.ANALYTIC_VIEW_NAME || '" '; DBMS_OUTPUT.PUT_LINE('ANALYTIC VIEW ' || c.ANALYTIC_VIEW_NAME || ' dropped successfully.'); END LOOP; FOR c IN ( SELECT distinct OBJECT_NAME FROM USER_PROCEDURES WHERE OBJECT_TYPE='PACKAGE' and OBJECT_NAME like prefix_str || '%' ) LOOP EXECUTE IMMEDIATE 'DROP PACKAGE "' || c.OBJECT_NAME || '" '; DBMS_OUTPUT.PUT_LINE('PACKAGE ' || c.OBJECT_NAME || ' dropped successfully.'); END LOOP; FOR c IN ( SELECT distinct HIER_NAME FROM USER_HIERARCHIES WHERE HIER_NAME like prefix_str || '%' ) LOOP EXECUTE IMMEDIATE 'DROP HIERARCHY "' || c.HIER_NAME || '" '; DBMS_OUTPUT.PUT_LINE('HIERARCHY ' || c.HIER_NAME || ' dropped successfully.'); END LOOP; FOR c IN ( SELECT distinct DIMENSION_NAME FROM USER_ATTRIBUTE_DIM_TABLES_AE WHERE DIMENSION_NAME like prefix_str || '%' ) LOOP EXECUTE IMMEDIATE 'DROP ATTRIBUTE DIMENSION "' || c.DIMENSION_NAME || '" '; DBMS_OUTPUT.PUT_LINE('ATTRIBUTE DIMENSION ' || c.DIMENSION_NAME || ' dropped successfully.'); END LOOP; FOR c IN ( SELECT distinct TABLE_NAME FROM USER_TABLES WHERE TABLE_NAME like prefix_str || '%' ) LOOP EXECUTE IMMEDIATE 'DROP TABLE "' || c.TABLE_NAME || '" purge'; DBMS_OUTPUT.PUT_LINE('TABLE ' || c.TABLE_NAME || ' dropped successfully.'); END LOOP; FOR c IN ( SELECT distinct VIEW_NAME FROM USER_VIEWS WHERE VIEW_NAME like prefix_str || '%' ) LOOP EXECUTE IMMEDIATE 'DROP VIEW "' || c.VIEW_NAME || '" '; DBMS_OUTPUT.PUT_LINE('VIEW ' || c.VIEW_NAME || ' dropped successfully.'); END LOOP; FOR c IN ( SELECT distinct TYPE_NAME FROM USER_TYPES WHERE TYPE_NAME like prefix_str || '%' ) LOOP EXECUTE IMMEDIATE 'DROP TYPE "' || c.TYPE_NAME || '" FORCE'; DBMS_OUTPUT.PUT_LINE('TYPE ' || c.TYPE_NAME || ' dropped successfully.'); END LOOP; END; /
Удалите объекты и обновите соответствующие таблицы, связанные с метаданными. Сначала нужно получить значения ESSBASE_INSTANCE_UNIQUE_ID и OTL_ID.
Подключитесь к хосту Essbase Server по SSH как пользователь opc.
ssh -i MPOCI_KEY.pem opc@100.xxx.xxx.xxx
Переключитесь на пользователя oracle и перейдите в его основную папку.
sudo su - oracle
Найдите процесс Essbase Agent.
ps -ef | grep ESSS | grep -v "grep"
Приведенная выше команда должна вернуть список процессов, имена которых начинаются с oracle
, с двумя идентификаторами процесса, например:
oracle 10769 19563 ...
Первый идентификатор процесса — <PID>
, который вы используете на следующем этапе.
С помощью команды strings получите значение ESSBASE_INSTANCE_UNIQUE_ID.
strings /proc/<PID>/environ | grep ESSBASE_INSTANCE_UNIQUE_ID
Пример.
strings /proc/10769/environ | grep ESSBASE_INSTANCE_UNIQUE_ID
Приведенная выше команда должна вернуть значение ESSBASE_INSTANCE_UNIQUE_ID; например,
ESSBASE_INSTANCE_UNIQUE_ID=EWRnHFlQteCEzWUhF7P3TPKunf3bYs
С помощью SQL Developer или другого инструмента подключитесь к Oracle Database как пользователь схемы, к которой подключен федерированный раздел.
Выполните инструкцию SELECT, чтобы получить значение OTL_ID.
Формат инструкции SELECT:
SELECT OTL_ID FROM ESSAV_OTL_MTD_VERSION where APPNAME ='<AppName>' and "JAGENT_INSTANCE_ID"='<ESSBASE_INSTANCE_UNIQUE_ID>';
Пример
Замените ESSAV_6Sample_5Basic
своим именем приложения AppName, а 'EWRnHFlQteCEzWUhF7P3TPKunf3bYs'
— своим параметром ESSBASE_INSTANCE_UNIQUE_ID.
SELECT OTL_ID FROM ESSAV_OTL_MTD_VERSION where APPNAME ='ESSAV_6Sample_5Basic' and "JAGENT_INSTANCE_ID"='EWRnHFlQteCEzWUhF7P3TPKunf3bYs';
Приведенный выше запрос должен вернуть значение OTL_ID; например,
62
Выполните сохраненную процедуру PL/SQL, чтобы удалить все таблицы, связанные с метаданными и привязанные к OTL_ID.
Пример
Замените 62
своим параметром OTL_ID.
SET SERVEROUTPUT ON; BEGIN FOR c IN ( SELECT distinct TABLE_NAME FROM USER_TABLES WHERE TABLE_NAME like 'ESSAV_MTD_62_%' ) LOOP EXECUTE IMMEDIATE 'DROP TABLE "' || c.TABLE_NAME || '" purge'; DBMS_OUTPUT.PUT_LINE('TABLE ' || c.TABLE_NAME || ' dropped successfully.'); END LOOP; END; /
Выполните инструкцию UPDATE, чтобы установить для таблицы ESSAV_OTL_MTD_VERSION неактивный статус.
Пример
Замените ESSAV_6Sample_5Basic
своим именем приложения AppName, а EWRnHFlQteCEzWUhF7P3TPKunf3bYs
— своим параметром ESSBASE_INSTANCE_UNIQUE_ID.
UPDATE "ESSAV_OTL_MTD_VERSION" SET "OTL_STATUS" = 'INACTIVE' where APPNAME ='ESSAV_6Sample_5Basic' and "JAGENT_INSTANCE_ID"='EWRnHFlQteCEzWUhF7P3TPKunf3bYs'; commit;
Повторное создание подключения и федерированного раздела
Заново создайте подключение к Autonomous Data Warehouse. Это может быть как глобальное подключение (под главным значком "Источники данных" в веб-интерфейсе Essbase), так и определенное в "Источниках данных" только для данного приложения. Следуйте инструкциям в разделе "подключение". Обязательно протестируйте и сохраните подключение.
Заново создайте федерированный раздел, как описано в разделе "Создание федерированного раздела".
Если вы по-прежнему видите сообщение об ошибке подключения, например Ошибка Essbase(1350012): Сбой при попытке подключения к OCI
, см. раздел "https://support.oracle.com/rs?type=doc&id=2925030.1".
Федерированные разделы не переносятся вместе с приложениями Essbase. Готовясь перенести приложение и куб на другой сервер или перейти на другую версию Essbase, необходимо удалить федерированный раздел и создать его заново в новой среде.
Чтобы создать резервную копию федерированного куба, выполните указанные ниже действия.
Создайте резервную копию приложения без данных, но вместе со всеми элементами, которые могут понадобиться (свойства конфигурации, фильтры, переменные, сценарии расчетов и другие артефакты). Для этого используйте Экспорт LCM (или задание Экспорт LCM в веб-интерфейсе Essbase).
Создайте резервную копию таблицы фактов. См. Резервное копирование и восстановление Autonomous Database.
Удалите определение федерированного раздела из куба, как описано в разделе "Удаление федерированного раздела".
Чтобы восстановить федерированный куб из резервной копии, выполните указанные ниже действия.
Заново создайте приложение с помощью LcmImport: восстановление файлов куба (или задания Импорт LCM в веб-интерфейсе Essbase).
При необходимости восстановите таблицу фактов в Autonomous Data Warehouse.
Повторно создайте подключение к Autonomous Data Warehouse. Рекомендуем использовать новое имя подключения, чтобы избежать ошибок.
Заново создайте федерированный раздел.