Údržba a riešenie problémov kocky federovanej partície

Nasledujúce pokyny sú určené pre údržbu alebo riešenie problémov kociek Essbase s federovanými partíciami.

V tejto téme sa predpokladá, že ste vytvorili federovanú partíciu a oboznámili sa s informáciami v predchádzajúcich témach.

Modelovanie a testovanie kociek federovaných partícií

Ak pri navrhovaní kocky federovanej partície trvá vytváranie príliš dlho, postupujte podľa týchto pokynov na testovanie. Tieto pokyny môžu byť užitočné na implementáciu fázovaného prístupu pri riešení problémov s výkonom alebo pri monitorovaní výkonu.

  • Spustite projekt federovanej partície v testovacom prostredí.

  • Začnite s modelmi kocky, ktoré majú nasledujúce vlastnosti:

    • nemajú veľa úrovní,

    • nemajú veľa zdieľaných členov ani atribútov.

  1. Pri vytváraní federovanej partície naplánujte offline operácie, keď nie sú povolené dopyty voči inštancii.

  2. Postupne odpojte aktívne používateľské relácie služby Essbase s použitím príkazov MaxL alter application disable commands a/alebo disable connects (aby sa zabránilo novej činnosti používateľa), za ktorými nasleduje príkaz alter system logout session a/alebo kill request (ak potrebujete ukončiť všetky aktívne relácie, ktoré nie je potrebné dokončiť). Upozorňujeme, že príkaz MaxL nemôže ukončiť žiadne požiadavky, ktoré môžu byť spustené v databáze Autonomous Data Warehouse. Ak deaktivujete príkazy v aplikácii, po vytvorení federovanej partície ich nezabudnite znova aktivovať.

  3. Vykonajte ladenie časového limitu:
    • HTTPS proxy v sieti zákazníka – upravte časové limity siete zákazníka
    • Zariadenie na vyrovnávanie záťaže – zvýšte časový limit LoadBalance na 1 260 sekúnd (21 minút)
    • Zvýšte časové limity HTTPD na 21 minút
      /etc/httpd/conf.d/00_base.conf:ProxyTimeout 1260
      /etc/httpd/conf.d/00_base.conf:Timeout 1260
    • Časový limit APS/JAPI:
      • Na stránke Konzola vo webovom rozhraní Essbase vyberte položku Konfigurácia a všimnite si hodnotu olap.server.netSocketTimeOut. Hodnota 200 ms znamená, že každá hodnota 5 pre tieto vlastnosti znamená 1 sekundu čakania.
      • Ak chcete nastaviť časový limit pre APS/JAPI na 30 minút, nastavte položku olap.server.netRetryCount na 9000.
  4. Vytvorte federovanú partíciu.
  5. Vráťte späť úpravy časového limitu v kroku 3.
  6. Umožnite používateľom vrátiť sa späť do systému pomocou príkazov alter application enable commands alebo connects, ak boli predtým deaktivované.
  7. Pre zostavy kocky Essbase s federovanou partíciou vylaďte nastavenie QRYGOVEXECTIME tak, aby bolo dlhšie než očakávaný čas na vykonávanie dopytov voči federovaným partíciám. Upozorňujeme, že QRYGOVEXECTIME nemôže ukončiť žiadne požiadavky, ktoré môžu byť spustené v databáze Autonomous Data Warehouse.
  8. Po dokončení testovania a ladenia vývojového prostredia použite vyššie uvedené kroky 1 až 7 na pridanie federovanej partície do produkčného prostredia.

Poznámka:

Ak sa pri vytváraní federovanej partície zobrazí chyba „Nepodarilo sa uložiť štruktúru“, počkajte na dokončenie relácií a potom obnovte prehľadávač. Ak bola federovaná partícia vytvorená, overte ju v nástroji SQL Developer. Ak ju nástroj SQL Developer overí, federovaná partícia je pripravená na použitie. Ak ju nástroj SQL Developer neoverí, model je potrebné opraviť a je potrebné vyladiť časový limit, ako je opísané vyššie v kroku 3.

Preventívne opatrenia pre metadáta pre kocky federovanej partície

Keď Essbase obsahuje federovanú partíciu, pri úprave štruktúry kocky postupujte opatrne. Ak pridáte alebo premenujete členy, uistite sa, že zmeny metadát sa prejavia aj v tabuľke faktov v databáze Autonomous Data Warehouse.

Ak štruktúra Essbase nebude synchronizovaná s tabuľkou faktov v databáze Autonomous Data Warehouse, federovaná partícia bude neplatná alebo nebude fungovať správne. Na odstránenie tohto problému bude potrebné zrušiť federovanú partíciu, vykonať zmeny v štruktúre a tabuľke faktov a potom znova vytvoriť federovanú partíciu.

Ak bude federovaná partícia neplatná, môže sa vyskytnúť chyba, ktorá sa začína textom Chyba Essbase (1040235): Vzdialené upozornenie z federovanej partície.

Nasledujúce typy zmien štruktúry Essbase zapríčinia, že federovaná partícia bude neplatná:

  • Pridanie, premenovanie alebo odobratie dimenzií

  • Pridanie, premenovanie alebo odobratie uložených členov v dimenzii kontingenčnej tabuľky

  • Zmena ľubovoľného člena z uloženého na dynamický

V prípade iných typov zmien štruktúry Essbase, ktoré nie sú uvedené vyššie (napríklad pridanie alebo premenovanie člena inej dimenzie než dimenzie kontingenčnej tabuľky), by ste mali vykonať zodpovedajúcu zmenu v ovplyvnenom riadku dát v tabuľke faktov. V opačnom prípade nemusí federovaná partícia fungovať správne.

Ak vopred viete, že dôjde k zmene metadát štruktúry Essbase, je lepšie najprv odobrať federovanú partíciu, vykonať zmeny štruktúry, aktualizovať tabuľku faktov a potom federovanú partíciu znova vytvoriť.

Ak sa však metadáta Essbase zmenili a zapríčinili neplatnosť federovanej partície, vykonajte nasledujúcu akciu:

  1. Odoberte federovanú partíciu a k nej priradené pripojenie (ak sa inak nepoužíva), ako je opísané v časti Odobratie federovanej partície.

    Zo schémy používateľa federovanej partície v databáze Autonomous Data Warehouse manuálne odstráňte všetky tabuľky vygenerované službou Essbase a ostatné objekty, ktoré sa nepodarilo odobrať s federovanou partíciou.

  2. Uistite sa, že zmeny štruktúry sú v kocke Essbase dokončené.

  3. Znova vytvorte tabuľku faktov. Pozrite si časť Vytvorenie tabuľky faktov.

  4. Znova vytvorte pripojenie k databáze Autonomous Data Warehouse. Môže ísť o globálne pripojenie (pod hlavnou ikonou Zdroje vo webovom rozhraní Essbase) alebo sa môže nachádzať v zdrojoch definovaných práve pre danú aplikáciu. Postupujte podľa pokynov v časti Vytvorenie pripojenia pre federované partície.

  5. Znova vytvorte federovanú partíciu, ako je opísané v časti Vytvorenie federovanej partície.

Ako postupovať v prípade zmeny detailov databázového pripojenia

Ak sa zmenili detaily pripojenia databázy Autonomous Data Warehouse, ktorú služba Essbase používa pre federovanú partíciu, bude potrebné túto federovanú partíciu zrušiť a znova vytvoriť, a tiež vyčistiť priradené objekty a tabuľky metadát z databázovej schémy.

Ak sa po vytvorení federovanej partície vyskytne ktorákoľvek z nasledujúcich udalostí, bude potrebné túto federovanú partíciu zrušiť a znova vytvoriť:

  • Zmení sa port databázy Autonomous Data Warehouse.

  • Zmení sa názov Pripojenie.

  • Pripojenie používa wallet a vy môžete prepnúť z jedného názvu služby na iný názov (s cieľom vykonať zmeny vo výkone alebo súbežnosti).

  • Aktualizácia štruktúry zmení mapovanie člena k tabuľke faktov, čo spôsobí, že federovaná partícia nebude synchronizovaná. Detaily nájdete v časti Preventívne opatrenia pre metadáta pre kocky federovanej partície.

Ak vopred viete, že dôjde k zmene detailov pripojenia, je lepšie odobrať federovanú partíciu ešte pred vykonaním danej zmeny a potom ju znova vytvoriť. Ak sa však pripojenie zmenilo a zapríčinilo neplatnosť federovanej partície, vykonajte nasledujúce kroky.

Zrušenie federovanej partície

Odoberte federovanú partíciu a k nej priradené pripojenie (ak sa inak nepoužíva), ako je opísané v časti Odobratie federovanej partície.

Vyčistenie súvisiacich objektov a tabuliek metadát federovanej partície

Zo schémy používateľa federovanej partície v databáze Autonomous Data Warehouse zrušte všetky tabuľky vygenerované službou Essbase a ostatné objekty, ktoré sa nepodarilo odobrať s federovanou partíciou.

  1. Pomocou príkazu ssh sa pripojte k hostiteľovi servera Essbase ako používateľ opc.

                      ssh -i MPOCI_KEY.pem opc@100.xxx.xxx.xxx
                   
  2. Prepnite na používateľa oracle (a prejdite do jeho domovského adresára).

                      sudo su - oracle
                   
  3. Prejdite do adresára aplikácií.

                      cd /u01/data/essbase/app
                   
  4. Pomocou aplikácie Essbase a názvu kocky identifikujte jednoznačnú predponu spojenú s objektmi a metadátami federovanej partície.

    1. Získajte názov aplikácie (AppName). V názve sa rozlišujú malé a veľké písmená, a preto ho zaznamenajte presne. V tomto príklade AppName = Sample.

      ls
      Sample
    2. Spočítajte znaky (appx) v názve aplikácie.

      Príklad: appx = 6.

    3. Prejdite do adresára kocky a získajte názov kocky (DbName). V názve sa rozlišujú malé a veľké písmená, a preto ho zaznamenajte presne. V tomto príklade DbName = Basic.

      cd /Sample
      ls
      Basic
    4. Spočítajte znaky (dby) v názve kocky.

      Príklad: dby = 5.

    5. Zostavte predponu nasledujúcim spôsobom:

      ESSAV_<appx><AppName>_<dby><DbName>_

      Príklad:

      <Prefix> = ESSAV_6Sample_5Basic_
  5. Pomocou nástroja SQL Developer alebo iného nástroja sa pripojte k databáze Oracle ako používateľ schémy, ku ktorej je pripojená federovaná partícia.

  6. Spustením príkazu SELECT vytvorte zoznam objektov spojených s vašou aplikáciou federovanej partície. Tieto objekty vyčistíte v ďalšom kroku.

    Formát príkazu SELECT je:

    SELECT * FROM user_OBJECTS WHERE OBJECT_NAME like '<Prefix>%';

    Príklad:

    SELECT * FROM user_OBJECTS WHERE OBJECT_NAME like 'ESSAV_6Sample_5Basic_%';
  7. Spustite uloženú procedúru PL/SQL, ktorá vyčistí všetky analytické zobrazenia, balíky, hierarchie, tabuľky a ďalšie objekty spojené s predponou.

    Príklad

    Reťazec ESSAV_6Sample_5Basic_ nahraďte predponou.

    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;
    /
    
  8. Zrušte a aktualizujte príslušné tabuľky súvisiace s metadátami. Najskôr je potrebné získať hodnoty pre ESSBASE_INSTANCE_UNIQUE_ID a OTL_ID.

    1. Pomocou príkazu ssh sa pripojte k hostiteľovi servera Essbase ako používateľ opc.

                              ssh -i MPOCI_KEY.pem opc@100.xxx.xxx.xxx
                           
    2. Prepnite na používateľa oracle (a prejdite do jeho domovského adresára).

                              sudo su - oracle
                           
    3. Vyhľadajte proces agenta Essbase.

                              ps -ef | grep ESSS | grep -v "grep"
                           

      Vyššie uvedený príkaz by mal vrátiť záznam procesu začínajúci sa reťazcom oracle, po ktorom nasledujú dve ID procesu, napríklad:

      oracle   10769  19563 ...

      Prvé ID procesu môžete považovať za identifikátor <PID>, ktorý použijete v ďalšom kroku.

    4. Pomocou príkazu strings zaznamenajte hodnotu ESSBASE_INSTANCE_UNIQUE_ID.

      strings /proc/<PID>/environ | grep ESSBASE_INSTANCE_UNIQUE_ID

      Príklad:

                              strings /proc/10769/environ | grep ESSBASE_INSTANCE_UNIQUE_ID
                           

      Vyššie uvedený príkaz by mal vrátiť hodnotu ESSBASE_INSTANCE_UNIQUE_ID, napríklad:

      ESSBASE_INSTANCE_UNIQUE_ID=EWRnHFlQteCEzWUhF7P3TPKunf3bYs
    5. Pomocou nástroja SQL Developer alebo iného nástroja sa pripojte k databáze Oracle ako používateľ schémy, ku ktorej je pripojená federovaná partícia.

    6. Pomocou príkazu SELECT získajte hodnotu OTL_ID.

      Formát príkazu SELECT je:

      SELECT OTL_ID FROM ESSAV_OTL_MTD_VERSION where APPNAME ='<AppName>' and "JAGENT_INSTANCE_ID"='<ESSBASE_INSTANCE_UNIQUE_ID>';

      Príklad

      Reťazec ESSAV_6Sample_5Basic nahraďte názvom aplikácie a reťazec 'EWRnHFlQteCEzWUhF7P3TPKunf3bYs' identifikátorom ESSBASE_INSTANCE_UNIQUE_ID.

      SELECT OTL_ID FROM ESSAV_OTL_MTD_VERSION where APPNAME ='ESSAV_6Sample_5Basic' and "JAGENT_INSTANCE_ID"='EWRnHFlQteCEzWUhF7P3TPKunf3bYs';
    7. Vyššie uvedený dopyt by mal vrátiť hodnotu OTL_ID, napríklad:

      62
    8. Spustením uloženej procedúry PL/SQL zrušte tabuľky súvisiace s metadátami, ktoré sú spojené s identifikátorom OTL_ID.

      Príklad

      Hodnotu 62 nahraďte identifikátorom 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;
      /
      
    9. Spustením príkazu UPDATE nastavte tabuľku ESSAV_OTL_MTD_VERSION do neaktívneho stavu.

      Príklad

      Reťazec ESSAV_6Sample_5Basic nahraďte názvom aplikácie a reťazec EWRnHFlQteCEzWUhF7P3TPKunf3bYs identifikátorom 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é vytvorenie pripojenia a federovanej partície

  1. Znova vytvorte pripojenie k databáze Autonomous Data Warehouse. Môže ísť o globálne pripojenie (pod hlavnou ikonou Zdroje vo webovom rozhraní Essbase) alebo sa môže nachádzať v zdrojoch definovaných práve pre danú aplikáciu. Postupujte podľa pokynov týkajúcich sa Pripojenie. Dbajte na to, aby ste pripojenie otestovali a uložili.

  2. Znova vytvorte federovanú partíciu, ako je opísané v časti Vytvorenie federovanej partície.

  3. Ak sa bude naďalej zobrazovať chyba pripojenia, ako napríklad Chyba Essbase (1350012): Pokus o pripojenie k OCI zlyhal, pozrite si stránku https://support.oracle.com/rs?type=doc&id=2925030.1.

Zálohovanie a obnovenie aplikácie federovanej partície

Federované partície sa nemigrujú s aplikáciami Essbase. Keď pripravujete presun aplikácie a kocky na iný server alebo migráciu na inú verziu Essbase, je potrebné federovanú partíciu odstrániť a znova ju vytvoriť v novom prostredí.

Ako zálohovať kocku federovanej partície:

  1. Zálohujte aplikáciu bez dát, ale vrátane všetkého ostatného, čo môžete potrebovať (napríklad vlastnosti konfigurácie, filtre, premenné, skripty výpočtov a iné artefakty). Na tento účel použite export LCM (alebo úlohu Export LCM vo webovom rozhraní Essbase).

  2. Zálohujte tabuľku faktov. Pozrite si časť Zálohovanie a obnovenie autonómnej databázy.

  3. Odstráňte definíciu federovanej partície z kocky, pričom postupujte podľa krokov v časti Odobratie federovanej partície.

Ako obnoviť kocku federovanej partície zo zálohy:

  1. Znova vytvorte aplikáciu pomocou postupu v časti LcmImport: Obnovenie súborov kocky (alebo úlohy Import LCM vo webovom rozhraní Essbase).

  2. V prípade potreby obnovte tabuľku faktov v databáze Autonomous Data Warehouse.

  3. Znova vytvorte pripojenie k databáze Autonomous Data Warehouse. Odporúča sa použiť nový názov pripojenia, aby ste zabránili výskytu chýb.

  4. Znova vytvorte federovanú partíciu.