Poniżej przedstawiono wskazówki ułatwiające obsługę kostek Essbase z partycjami federowanymi oraz rozwiązywanie ewentualnych problemów.
Przyjęto tu założenie, że została utworzona partycja federowana oraz że użytkownik zapoznał się z informacjami przedstawionymi w poprzednich tematach.
Jeśli podczas projektowania kostki z partycją federowaną tworzenie trwa zbyt długo, należy skorzystać z tych wytycznych dotyczących testowania. Mogą być one przydatne w przypadku zastosowania podejścia fazowego do rozwiązywania problemów lub monitorowania wydajności.
Rozpocząć projekt partycji federowanej w środowisku testowym.
Zacząć od modeli kostek mających następujące cechy:
niezbyt wiele poziomów
niezbyt wiele współużytkowanych elementów lub atrybutów
Podczas tworzenia partycji federowanej zaplanować operacje offline na czas, w którym nie będzie można kierować zapytań do instancji.
Stopniowo rozłączać aktywne sesje użytkowników Essbase, używając polecenia alter application disable commands
i/lub polecenia disable connects
narzędzia MaxL (aby uniemożliwić użytkownikom podejmowanie nowych działań), a następnie poleceń alter system logout session
i/lub kill request
(jeśli trzeba zakończyć aktywne sesje, które nie wymagają ukończenia). Należy pamiętać, że MaxL nie umożliwia przerywania żądań, które mogą być uruchomione w Autonomous Data Warehouse. Jeśli polecenia zostaną wyłączone w aplikacji, należy pamiętać, aby włączyć je ponownie po utworzeniu partycji federowanej.
/etc/httpd/conf.d/00_base.conf:ProxyTimeout 1260
/etc/httpd/conf.d/00_base.conf:Timeout 1260
olap.server.netRetryCount
.Uwaga:
Jeśli podczas tworzenia partycji federowanej zostanie wyświetlony komunikat o błędzie "Nie udało się zapisać struktury", należy poczekać na ukończenie sesji, a następnie odświeżyć okno przeglądarki. Gdy partycja federowana zostanie utworzona, należy zweryfikować ją w narzędziu SQL Developer. Jeśli weryfikacja w narzędziu SQL Developer przebiegnie pomyślnie, będzie to oznaczać, że partycja federowana jest gotowa do użycia. Jeśli weryfikacja w narzędziu SQL Developer zakończy się niepowodzeniem, to trzeba naprawić model oraz dostroić limity czasu, jak opisano to wcześniej w punkcie 3.Jeśli Essbase ma partycję federowaną, należy zachować ostrożność podczas edytowania struktury kostki. W przypadku dodawania elementów lub zmieniania ich nazw należy upewnić się, że zmiany metadanych są także odzwierciedlane w tabeli faktów w Autonomous Data Warehouse.
Jeśli struktura Essbase utraci synchronizację z tabelą faktów w Autonomous Data Warehouse, partycja federowana stanie się niepoprawna lub nie będzie poprawnie działać. Aby rozwiązać ten problem, należy usunąć partycję federowaną, wprowadzić zmiany w strukturze i tabeli faktów, a następnie ponownie utworzyć partycję federowaną.
Jeśli partycja federowana stanie się niepoprawna, może występować błąd, z którym jest skojarzony komunikat rozpoczynający się od ciągu Błąd Essbase (1040235): Odległe ostrzeżenie z partycji federowanej
.
Zmiany struktury Essbase następujących typów będą powodować, że partycja federowana stanie się niepoprawna:
Dodawanie i usuwanie wymiarów oraz zmienianie ich nazw
Dodawanie i usuwanie elementów składowanych w wymiarze przestawnym oraz zmienianie ich nazw
Zmiana elementu ze składowanego na dynamiczny
W przypadku innych niewymienionych powyżej typów zmian struktury Essbase (takich jak dodanie elementu wymiaru nieprzestawnego lub zmiana jego nazwy) należy wprowadzić odpowiednią zmianę we właściwym wierszu danych w tabeli faktów. W przeciwnym razie partycja federowana może nie działać poprawnie.
Jeśli z wyprzedzeniem wiadomo, że metadane struktury Essbase zostaną zmienione, lepiej jest najpierw usunąć partycję federowaną, wprowadzić zmiany struktury i zaktualizować tabelę faktów, a następnie utworzyć ponownie partycję federowaną.
Jeśli jednak metadane Essbase zostaną zmienione, przez co partycja federowana stanie się niepoprawna, należy wykonać następującą czynność:
Usunąć partycję federowaną i powiązane z nią połączenie (jeśli nie jest używane w inny sposób), jak opisano w temacie Usuwanie partycji federowanej.
Ze schematu użytkownika partycji federowanej w Autonomous Data Warehouse usunąć ręcznie wszystkie wygenerowane przez Essbase tabele i inne obiekty, których nie udało się usunąć wraz z partycją federowaną.
Upewnić się, że zmiany struktury zostały wprowadzone w kostce Essbase.
Ponownie utworzyć tabelę faktów. Zob. Tworzenie tabeli faktów.
Utworzyć ponownie połączenie z Autonomous Data Warehouse. Może to być połączenie globalne (dostępne za pośrednictwem głównej ikony "Źródła" w internetowym interfejsie Essbase) albo połączenie należące do źródeł zdefiniowanych tylko dla aplikacji. Postępować zgodnie z instrukcjami podanymi w temacie Tworzenie połączenia dla partycji federowanych.
Utworzyć ponownie partycję federowaną, jak opisano w temacie Tworzenie partycji federowanej.
Jeśli szczegóły połączenia z Autonomous Data Warehouse używanego przez Essbase na potrzeby partycji federowanej zostaną zmienione, konieczne będzie usunięcie i ponowne utworzenie partycji federowanej oraz wyczyszczenie powiązanych obiektów i tabel metadanych ze schematu bazy danych.
Partycję federowaną trzeba będzie usunąć i utworzyć ponownie, jeśli po utworzeniu partycji federowanej wystąpi dowolne z następujących zdarzeń:
Zmiana portu używanego przez Autonomous Data Warehouse
Zmiana nazwy połączenia
Na potrzeby połączenia jest używany portfel i przełączono się z jednej nazwy usługi na inną (w celu zmiany wydajności lub współbieżności)
Aktualizacja struktury spowodowała zmianę mapowania elementów na tabelę faktów, przez co partycja federowana nie jest już zsynchronizowana. Zob. Środki ostrożności dotyczące metadanych kostek partycji federowanej, aby zapoznać się ze szczegółowymi informacjami.
Jeśli z wyprzedzeniem wiadomo, że szczegóły połączenia zostaną zmienione, lepiej jest usunąć partycję federowaną przed wprowadzeniem tych zmian oraz utworzyć ją ponownie już po ich wprowadzeniu. Jeśli jednak połączenie zostanie zmienione, przez co partycja federowana stanie się niepoprawna, należy wykonać poniższe etapy.
Usuwanie partycji federowanej
Należy usunąć partycję federowaną i powiązane z nią połączenie (jeśli nie jest używane w inny sposób), jak opisano w temacie Usuwanie partycji federowanej.
Czyszczenie obiektów powiązanych i tabel metadanych partycji federowanej
Ze schematu użytkownika partycji federowanej w Autonomous Data Warehouse usunąć wszystkie wygenerowane przez Essbase tabele i inne obiekty, których nie udało się usunąć wraz z partycją federowaną.
Połączyć się za pomocą protokołu SSH z hostem Serwer Essbase jako użytkownik opc.
ssh -i MPOCI_KEY.pem opc@100.xxx.xxx.xxx
Zmienić użytkownika na oracle (i przejść do jego katalogu podstawowego).
sudo su - oracle
Przejść do katalogu aplikacji.
cd /u01/data/essbase/app
Za pomocą aplikacji Essbase i nazwy kostki określić unikatowy prefiks powiązany z obiektami i metadanymi partycji federowanej.
Pobrać nazwę aplikacji (AppName). W nazwie rozróżniana jest wielkość liter, więc należy zwrócić na to uwagę. W tym przykładzie AppName = Sample.
ls
Sample
Zliczyć liczbę znaków (appx) w nazwie aplikacji.
Przykład: appx = 6.
Przejść do katalogu kostki i pobrać nazwę kostki (DbName). W nazwie rozróżniana jest wielkość liter, więc należy zwrócić na to uwagę. W tym przykładzie DbName = Basic.
cd /Sample
ls
Basic
Zliczyć liczbę znaków (dby) w nazwie kostki.
Przykład: dby = 5.
Skonstruować Prefiks w następujący sposób:
ESSAV_<appx><AppName>_<dby><DbName>_
Przykład:
<Prefix> = ESSAV_6Sample_5Basic_
Za pomocą SQL Developer lub innego narzędzia połączyć się z bazą danych Oracle jako użytkownik schematu, z którym połączona jest partycja federowana.
Uruchomić instrukcję SELECT, aby utworzyć ofertę obiektów powiązanych z aplikacją partycji federowanej. Są to obiekty, które zostaną wyczyszczone na następnym etapie.
Instrukcja SELECT ma następujący format:
SELECT * FROM user_OBJECTS WHERE OBJECT_NAME like '<Prefix>%';
Przykład:
SELECT * FROM user_OBJECTS WHERE OBJECT_NAME like 'ESSAV_6Sample_5Basic_%';
Uruchomić składowaną procedurę PL/SQL służącą do czyszczenia wszystkich perspektyw analitycznych, pakietów, hierarchii, tabel i innych obiektów powiązanych z wartością Prefiks.
Przykład
Zastąpić ESSAV_6Sample_5Basic_
wybraną wartością Prefiks.
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; /
Usunąć i zaktualizować powiązane tabele dotyczące metadanych. Najpierw należy pobrać wartości ESSBASE_INSTANCE_UNIQUE_ID i OTL_ID.
Połączyć się za pomocą protokołu SSH z hostem Serwer Essbase jako użytkownik opc.
ssh -i MPOCI_KEY.pem opc@100.xxx.xxx.xxx
Zmienić użytkownika na oracle (i przejść do jego katalogu podstawowego).
sudo su - oracle
Wyszukać proces Agent Essbase.
ps -ef | grep ESSS | grep -v "grep"
Powyższe polecenie powinno zwrócić listę procesów, która zaczyna się od oracle
, po którym następują dwa ID procesów, na przykład:
oracle 10769 19563 ...
Pierwszy ID procesu to <PID>
, który zostanie użyty na następnym etapie.
Za pomocą polecenia strings przechwycić wartość ESSBASE_INSTANCE_UNIQUE_ID.
strings /proc/<PID>/environ | grep ESSBASE_INSTANCE_UNIQUE_ID
Przykład:
strings /proc/10769/environ | grep ESSBASE_INSTANCE_UNIQUE_ID
Powyższe polecenie powinno zwrócić wartość ESSBASE_INSTANCE_UNIQUE_ID, na przykład:
ESSBASE_INSTANCE_UNIQUE_ID=EWRnHFlQteCEzWUhF7P3TPKunf3bYs
Za pomocą SQL Developer lub innego narzędzia połączyć się z bazą danych Oracle jako użytkownik schematu, z którym połączona jest partycja federowana.
Uruchomić instrukcję SELECT, aby uzyskać wartość OTL_ID.
Instrukcja SELECT ma następujący format:
SELECT OTL_ID FROM ESSAV_OTL_MTD_VERSION where APPNAME ='<AppName>' and "JAGENT_INSTANCE_ID"='<ESSBASE_INSTANCE_UNIQUE_ID>';
Przykład
Zastąpić ESSAV_6Sample_5Basic
wartością AppName, a EWRnHFlQteCEzWUhF7P3TPKunf3bYs
wartością ESSBASE_INSTANCE_UNIQUE_ID.
SELECT OTL_ID FROM ESSAV_OTL_MTD_VERSION where APPNAME ='ESSAV_6Sample_5Basic' and "JAGENT_INSTANCE_ID"='EWRnHFlQteCEzWUhF7P3TPKunf3bYs';
Powyższe zapytanie powinno zwrócić wartość OTL_ID, na przykład:
62
Uruchomić składowaną procedurę PL/SQL służącą do usuwania tabel dotyczących metadanych powiązanych z wartością OTL_ID.
Przykład
Zastąpić 62
wartością 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; /
Uruchomić instrukcję UPDATE, aby ustawić status tabeli ESSAV_OTL_MTD_VERSION na nieaktywny.
Przykład
Zastąpić ESSAV_6Sample_5Basic
wartością AppName, a EWRnHFlQteCEzWUhF7P3TPKunf3bYs
wartością ESSBASE_INSTANCE_UNIQUE_ID.
UPDATE "ESSAV_OTL_MTD_VERSION" SET "OTL_STATUS" = 'INACTIVE' where APPNAME ='ESSAV_6Sample_5Basic' and "JAGENT_INSTANCE_ID"='EWRnHFlQteCEzWUhF7P3TPKunf3bYs'; commit;
Utworzyć ponownie połączenie i partycję federowaną
Utworzyć ponownie połączenie z Autonomous Data Warehouse. Może to być połączenie globalne (dostępne za pośrednictwem głównej ikony "Źródła" w internetowym interfejsie Essbase) albo połączenie należące do źródeł zdefiniowanych tylko dla aplikacji. Postępować zgodnie z instrukcjami podanymi w temacie połączenia. Upewnić się, że połączenie zostało przetestowane i zapisane.
Utworzyć ponownie partycję federowaną, jak opisano w temacie Tworzenie partycji federowanej.
Jeśli nadal będzie występował błąd połączenia, taki jak Błąd Essbase (1350012): Próba połączenia się z OCI zakończyła się niepowodzeniem
, przejrzeć stronę https://support.oracle.com/rs?type=doc&id=2925030.1.
Partycje federowane nie są migrowane wraz z aplikacjami Essbase. Podczas przygotowań do przeniesienia aplikacji i kostki na inny serwer albo migracji do innej wersji Essbase należy usunąć partycję federowaną i utworzyć ją ponownie w nowym środowisku.
Aby utworzyć kopię zapasową kostki z partycją federowaną, należy:
Utworzyć kopię zapasową aplikacji bez danych, ale ze wszystkimi innymi elementami, które mogą być potrzebne (takimi jak właściwości konfiguracji, filtry, zmienne, skrypty obliczeń i inne artefakty). W tym celu można użyć funkcji Eksport LCM (lub zlecenia Eksportuj LCM w internetowym interfejsie Essbase).
Sporządzić kopię zapasową tabeli faktów. Zob. Sporządzanie zapasowej kopii bazy danych Autonomous Database i jej odtwarzanie.
Usunąć definicję partycji federowanej z kostki, wykonując kroki opisane w temacie Usuwanie partycji federowanej.
Aby odtworzyć kostkę z partycją federowaną z kopii zapasowej, należy:
Utworzyć ponownie aplikację, używając funkcji LcmImport: odtwarzanie plików kostek (lub zlecenia Importuj LCM w interfejsie internetowym Essbase).
W razie potrzeby przywrócić tabelę faktów w Autonomous Data Warehouse.
Utworzyć ponownie połączenie z Autonomous Data Warehouse. Zalecane jest użycie nowej nazwy połączenia, aby uniknąć występowania błędów.
Utworzyć ponownie partycję federowaną.