Při řešení problémů s krychlemi Essbase s federovanými oddíly nebo při jejich údržbě použijte následující pokyny.
Toto téma předpokládá, že jste vytvořili federovaný oddíl a prošli jste si informace uvedené v předchozích tématech.
Když navrhujete krychli federovaného oddílu a vytvoření trvá příliš dlouho, postupujte podle těchto pokynů pro testování. Tyto pokyny mohou být užitečné pro postupné řešení problémů nebo sledování výkonu.
Spusťte projekt federovaného oddílu v testovacím prostředí.
Začněte s modely krychlí, které mají následující vlastnosti:
nemají mnoho úrovní
nemají mnoho sdílených prvků nebo atributů
Při vytváření federovaného oddílu naplánujte offline operace, když nejsou povoleny dotazy vůči instanci.
Postupně odpojujte aktivní uživatelské relace systému Essbase pomocí příkazu MaxL alter application disable commands
nebo disable connects
(abyste zabránili jakékoli nové aktivitě uživatelů), a poté příkazem alter system logout session
nebo kill request
(pokud potřebujete ukončit aktivní relace, které není potřebné dokončit). Všimněte si, že MaxL nemůže ukončit žádné požadavky, které mohou být spuštěny v Autonomous Data Warehouse. Pokud v aplikaci deaktivujete příkazy, nezapomeňte je po vytvoření federovaného oddílu znovu aktivovat.
/etc/httpd/conf.d/00_base.conf:ProxyTimeout 1260
/etc/httpd/conf.d/00_base.conf:Timeout 1260
olap.server.netRetryCount
na 9000.Poznámka:
Pokud se při vytváření federovaného oddílu zobrazí chyba „Uložení osnovy selhalo“, počkejte na dokončení relací a poté aktualizujte obsah prohlížeče. Pokud byl federovaný oddíl vytvořen, ověřte jej v nástroji SQL Developer. Pokud federovaný oddíl projde ověřením v nástroji SQL Developer, je připraven k použití. Pokud ověřením v aplikaci SQL Developer neprojde, je třeba opravit model a vyladit časový limit, jak je popsáno výše v kroku 3.Pokud systém Essbase disponuje federovaným oddílem, postupujte při úpravách osnovy krychle opatrně. Pokud přidáváte nebo přejmenováváte prvky, ujistěte se, že změny metadat jsou reprezentovány i v tabulce faktů v Autonomous Data Warehouse.
Pokud dojde k narušení synchronizace osnovy Essbase s tabulkou faktů ve službě Autonomous Data Warehouse, federovaný oddíl se stane neplatným nebo nebude správně fungovat. K nápravě je nutné zrušit federovaný oddíl, provést změny v osnově a tabulce faktů a poté federovaný oddíl znovu vytvořit.
Pokud se federovaný oddíl stane neplatným, může se objevit chybová zpráva začínající textem Chyba Essbase (1040235): Vzdálená výstraha federovaného oddílu
.
Následující typy změn osnovy Essbase způsobí neplatnost federovaného oddílu:
Přidání, přejmenování nebo odebrání dimenzí
Přidání, přejmenování nebo odebrání uložených prvků v kontingenční dimenzi
Změna libovolného prvku z uloženého na dynamický
U jiných typů změn osnovy Essbase, které nejsou uvedeny výše (například přidání nebo přejmenování prvku, který není prvkem kontingenční dimenze), byste měli provést odpovídající změnu v příslušném řádku dat v tabulce faktů. V opačném případě nemusí federovaný oddíl fungovat správně.
Pokud předem víte, že se metadata osnovy Essbase změní, je vhodné nejprve odebrat federovaný oddíl, provést změny osnovy, aktualizovat tabulku faktů a poté znovu vytvořit federovaný oddíl.
Pokud však došlo ke změně metadat Essbase a federovaný oddíl se stal neplatným, proveďte následující akci:
Odeberte federovaný oddíl a k němu přiřazené připojení (pokud je jinak nepoužívané) podle pokynů uvedených v tématu Odebrání federovaného oddílu.
V uživatelském schématu federovaného oddílu ve službě Autonomous Data Warehouse ručně odstraňte všechny tabulky generované systémem Essbase a další objekty, jejichž odebrání s federovaným oddílem selhalo.
Zajistěte, aby byly změny osnovy dokončeny v krychli Essbase.
Znovu vytvořte tabulku faktů. Prostudujte si téma Vytvoření tabulky faktů.
Znovu vytvořte připojení k Autonomous Data Warehouse. Může se jednat o globální připojení (pod hlavní ikonou Zdroje ve webovém rozhraní Essbase) nebo o připojení definované pouze pro danou aplikaci. Postupujte podle pokynů v části Vytvoření připojení k federovaným oddílům
Znovu vytvořte federovaný oddíl podle pokynů uvedených v tématu Vytvoření federovaného oddílu.
V případě změn podrobností připojení ke službě Autonomous Data Warehouse, které systém Essbase používá pro federovaný oddíl, bude nutné zrušit a znovu vytvořit federovaný oddíl a vyčistit související objekty a tabulky metadat ze schématu databáze.
Pokud po vytvoření federovaného oddílu dojde k některé z následujících událostí, bude nutné tento federovaný oddíl zrušit a znovu vytvořit:
Změní se port Autonomous Data Warehouse
Změní se název připojení
připojení používá wallet a vy přepnete z jednoho názvu služby na jiný (abyste provedli změny výkonu nebo souběžnosti)
Aktualizace osnovy změní mapování prvků na tabulku faktů, takže federovaný oddíl přestane být synchronizován. Podrobnosti viz Opatření týkající se metadat pro federované krychle oddílů.
Pokud předem víte, že dojde ke změně podrobností připojení, je vhodné federovaný oddíl před změnou odebrat a po změně jej znovu vytvořit. Pokud však došlo ke změně připojení, která způsobila zneplatnění federovaného oddílu, proveďte následující kroky.
Zrušení federovaného oddílu
Odeberte federovaný oddíl a k němu přiřazené připojení (pokud je jinak nepoužívané) podle pokynů uvedených v tématu Odebrání federovaného oddílu.
Vyčištění objektů a tabulek metadat souvisejících s federovaným oddílem
V uživatelském schématu federovaného oddílu ve službě Autonomous Data Warehouse zrušte všechny tabulky generované systémem Essbase a další objekty, jejichž odebrání s federovaným oddílem selhalo.
Použijte příkaz ssh pro hostitelský počítač serveru Essbase jako uživatel opc.
ssh -i MPOCI_KEY.pem opc@100.xxx.xxx.xxx
Proveďte změnu na uživatele oracle (a přejděte do jeho domovského adresáře).
sudo su - oracle
Přejděte do adresáře aplikací.
cd /u01/data/essbase/app
Pomocí aplikace Essbase a názvu krychle identifikujte jedinečnou předponu spojenou s objekty a metadaty federovaného oddílu.
Získejte název aplikace (AppName). V názvu jsou rozlišována velká a malá písmena, proto zaznamenejte přesnou kombinaci velkých a malých písmen. V uvedeném příkladu AppName = Sample.
ls
Sample
Spočítejte počet znaků (appx) v názvu aplikace.
Příklad: appx = 6.
Přejděte do adresáře krychle a získejte název krychle (DbName). V názvu jsou rozlišována velká a malá písmena, proto zaznamenejte přesnou kombinaci velkých a malých písmen. V uvedeném příkladu DbName = Basic.
cd /Sample
ls
Basic
Spočítejte počet znaků (dby) v názvu krychle.
Příklad: dby = 5.
Sestavte položku Prefix jako:
ESSAV_<appx><AppName>_<dby><DbName>_
Příklad:
<Prefix> = ESSAV_6Sample_5Basic_
Pomocí nástroje SQL Developer nebo jiného nástroje se připojte k systému Oracle Database jako uživatel schématu, k němuž je připojen federovaný oddíl.
Spuštěním příkazu SELECT vytvořte seznam objektů přidružených k vaší aplikaci federovaného oddílu. Jedná se o objekty, které v dalším kroku vyčistíte.
Příkaz SELECT má následující formát:
SELECT * FROM user_OBJECTS WHERE OBJECT_NAME like '<Prefix>%';
Příklad:
SELECT * FROM user_OBJECTS WHERE OBJECT_NAME like 'ESSAV_6Sample_5Basic_%';
Spusťte uloženou proceduru PL/SQL, která vyčistí všechna analytická zobrazení, balíčky, hierarchie, tabulky a další objekty spojené s položkou Prefix.
Příklad
Nahraďte řetězec ESSAV_6Sample_5Basic_
svou položkou 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; /
Zrušte a aktualizujte přidružené tabulky související s metadaty. Nejprve je nutné získat hodnoty pro položky ESSBASE_INSTANCE_UNIQUE_ID a OTL_ID.
Použijte příkaz ssh pro hostitelský počítač serveru Essbase jako uživatel opc.
ssh -i MPOCI_KEY.pem opc@100.xxx.xxx.xxx
Proveďte změnu na uživatele oracle (a přejděte do jeho domovského adresáře).
sudo su - oracle
Vyhledejte proces agentu Essbase.
ps -ef | grep ESSS | grep -v "grep"
Výše uvedený příkaz by měl vrátit výpis procesu, který začíná řetězcem oracle
následovaným dvěma ID procesu, například:
oracle 10769 19563 ...
Považujte první ID procesu za <PID>
, které použijete v dalším kroku.
Použijte příkaz strings k zachycení hodnoty položky ESSBASE_INSTANCE_UNIQUE_ID.
strings /proc/<PID>/environ | grep ESSBASE_INSTANCE_UNIQUE_ID
Příklad:
strings /proc/10769/environ | grep ESSBASE_INSTANCE_UNIQUE_ID
Výše uvedený příkaz by měl vrátit hodnotu položky ESSBASE_INSTANCE_UNIQUE_ID, například:
ESSBASE_INSTANCE_UNIQUE_ID=EWRnHFlQteCEzWUhF7P3TPKunf3bYs
Pomocí nástroje SQL Developer nebo jiného nástroje se připojte k systému Oracle Database jako uživatel schématu, k němuž je připojen federovaný oddíl.
Spuštěním příkazu SELECT získejte hodnotu položky OTL_ID.
Příkaz SELECT má následující formát:
SELECT OTL_ID FROM ESSAV_OTL_MTD_VERSION where APPNAME ='<AppName>' and "JAGENT_INSTANCE_ID"='<ESSBASE_INSTANCE_UNIQUE_ID>';
Příklad
Nahraďte řetězec ESSAV_6Sample_5Basic
svou hodnotou položky AppName a identifikátor 'EWRnHFlQteCEzWUhF7P3TPKunf3bYs'
svou hodnotou identifikátoru ESSBASE_INSTANCE_UNIQUE_ID.
SELECT OTL_ID FROM ESSAV_OTL_MTD_VERSION where APPNAME ='ESSAV_6Sample_5Basic' and "JAGENT_INSTANCE_ID"='EWRnHFlQteCEzWUhF7P3TPKunf3bYs';
Výše uvedený dotaz by měl vrátit hodnotu položky OTL_ID, například:
62
Spusťte uloženou proceduru PL/SQL ke zrušení tabulek souvisejících s metadaty a přidružených k položce OTL_ID.
Příklad
Nahraďte hodnotu 62
svou hodnotou položky 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; /
Spuštěním příkazu UPDATE nastavte tabulku ESSAV_OTL_MTD_VERSION do neaktivního statusu.
Příklad
Nahraďte řetězec ESSAV_6Sample_5Basic
svou hodnotou položky AppName a identifikátor EWRnHFlQteCEzWUhF7P3TPKunf3bYs
svou hodnotou identifikátoru ESSBASE_INSTANCE_UNIQUE_ID.
UPDATE "ESSAV_OTL_MTD_VERSION" SET "OTL_STATUS" = 'INACTIVE' where APPNAME ='ESSAV_6Sample_5Basic' and "JAGENT_INSTANCE_ID"='EWRnHFlQteCEzWUhF7P3TPKunf3bYs'; commit;
Opětovné vytvoření připojení a federovaného oddílu
Znovu vytvořte připojení k Autonomous Data Warehouse. Může se jednat o globální připojení (pod hlavní ikonou Zdroje ve webovém rozhraní Essbase) nebo o připojení definované pouze pro danou aplikaci. Postupujte podle pokynů v části připojení Nezapomeňte připojení otestovat a uložit.
Znovu vytvořte federovaný oddíl podle pokynů uvedených v tématu Vytvoření federovaného oddílu.
Pokud se i nadále zobrazuje chyba připojení, například Chyba Essbase(1350012): Pokus o připojení k OCI selhal
, podívejte se na https://support.oracle.com/rs?type=doc&id=2925030.1.
Federované oddíly nejsou migrovány společně s aplikacemi Essbase. Při přípravě přesunu aplikace a krychle na jiný server nebo migrace na jinou verzi systému Essbase je potřebné federovaný oddíl odstranit a následně jej v novém prostředí znovu vytvořit.
Chcete-li zálohovat krychli federovaného oddílu,
Aplikaci zálohujte bez dat, ale včetně všech ostatních položek, které můžete potřebovat (například vlastností konfigurace, filtrů, proměnných, výpočetních skriptů a dalších artefaktů). K tomu použijte Export LCM (nebo úlohu Export LCM ve webovém rozhraní Essbase).
Zálohujte tabulku faktů. Viz část Zálohování a obnova autonomní databáze.
Odstraňte definici federovaného oddílu z krychle podle postupu uvedeného v tématu Odebrání federovaného oddílu.
Chcete-li obnovit krychli federovaného oddílu ze zálohy,
Znovu vytvořte aplikaci pomocí LcmImport: Obnovení souborů krychle (nebo úlohy Import LCM ve webovém rozhraní Essbase).
V případě potřeby obnovte tabulku faktů na Autonomous Data Warehouse.
Znovu vytvořte připojení do služby Autonomous Data Warehouse. Aby se zabránilo chybám, doporučuje se použít nový název připojení.
Znovu vytvořit federovaný oddíl.