Verwaltung und Fehlerbehebung von Cubes mit föderierten Partitionen

Nutzen Sie die folgenden Richtlinien für die Verwaltung und Fehlerbehebung für Essbase-Cubes mit föderierten Partitionen.

In diesem Thema wird angenommen, dass Sie eine föderierte Partition erstellt und die Informationen in den vorhergehenden Themen gelesen haben.

Cubes mit föderierten Partitionen modellieren und testen

Befolgen Sie beim Entwerfen eines Cubes mit föderierter Partition folgende Testrichtlinien, falls die Erstellung zu lange dauert. Diese Richtlinien können nützlich sein, wenn Sie die Fehlerbehebung oder Performanceüberwachung phasenweise durchführen.

  • Beginnen Sie das Projekt mit der föderierten Partition in einer Testumgebung.

  • Beginnen Sie mit Cube-Modellen, die folgende Merkmale aufweisen:

    • Nicht viele Ebenen

    • Nicht viele gemeinsame Elemente oder Attribute

  1. Planen Sie beim Erstellen einer föderierten Partition Offlinevorgänge, wenn Abfragen für die Instanz nicht zulässig sind.

  2. Trennen Sie aktive Essbase-Benutzersessions nach und nach mit den MaxL-Befehlen alter application disable commands und/oder disable connects (um neue Benutzeraktivität zu verhindern), gefolgt von alter system logout session und/oder kill request (wenn Sie aktive Sessions beenden möchten, die nicht abgeschlossen werden müssen). Beachten Sie, dass MaxL keine Anforderungen beenden kann, die in Autonomous Data Warehouse ausgeführt werden. Wenn Sie Befehle in der Anwendung deaktivieren, müssen Sie diese nach der Erstellung der föderierten Partition wieder aktivieren.

  3. Timeoutoptimierung ausführen:
    • HTTPS-Proxy im Kundennetzwerk: Passen Sie die Timeouts im Kundennetzwerk an
    • Load Balancer: Erhöhen Sie den LoadBalance-Timeout auf 1260 Sekunden (21 Minuten)
    • Erhöhen Sie die HTTPD-Timeouts auf 21 Minuten
      /etc/httpd/conf.d/00_base.conf:ProxyTimeout 1260
      /etc/httpd/conf.d/00_base.conf:Timeout 1260
    • APS/JAPI-Timeout:
      • Wählen Sie auf der Seite Konsole der Essbase-Weboberfläche die Option Konfiguration aus, und notieren Sie sich den Wert von olap.server.netSocketTimeOut. Ein Wert von 200 ms bedeutet, dass bei Vorliegen von jeweils 5 dieser Eigenschaften 1 Sekunde Wartezeit entsteht.
      • Um einen APS-/JAPI-Timeoutgrenzwert von 30 Minuten festzulegen, setzen Sie olap.server.netRetryCount auf 9000.
  4. Erstellen Sie die föderierte Partition.
  5. Machen Sie die Timeoutanpassungen aus Schritt 3 rückgängig.
  6. Aktivieren Sie Benutzer mit alter application enable commands und/oder enable connects wieder im System, falls diese zuvor deaktiviert wurden.
  7. Für Berichte in einem Essbase-Cube mit einer föderierten Partition müssen Sie QRYGOVEXECTIME so optimieren, dass der Wert größer als die erwartete Zeit für die Ausführung von Abfragen für föderierte Partitionen ist. Beachten Sie, dass QRYGOVEXECTIME keine Anforderungen beenden kann, die in Autonomous Data Warehouse ausgeführt werden.
  8. Nach Abschluss der Tests und der Optimierung in der Entwicklungsumgebung nehmen Sie die föderierte Partition anhand der oben genannten Schritte 1 bis 7 in eine Produktionsumgebung auf.

Hinweis:

Wenn beim Erstellen der föderierten Partition der Fehler "Modellstruktur konnte nicht gespeichert werden" angezeigt wird, warten Sie, bis die Sessions abgeschlossen sind, und aktualisieren Sie dann den Browser. Wenn die föderierte Partition erstellt wurde, validieren Sie sie in SQL Developer. Wenn Sie in SQL Developer erfolgreich validiert wird, ist die föderierte Partition zur Verwendung bereit. Wenn sie in SQL Developer nicht validiert werden kann, muss das Modell korrigiert werden, und Sie müssen eine Timeoutoptimierung wie oben in Schritt 3 beschrieben vornehmen.

Vorsichtsmaßnahmen zu Metadaten für Cubes mit föderierten Partitionen

Wenn Essbase eine föderierte Partition enthält, gehen Sie beim Bearbeiten der Cube-Modellstruktur vorsichtig vor. Wenn Sie Elemente hinzufügen oder umbenennen, stellen Sie sicher, dass die Metadatenänderungen auch in der Faktentabelle in Autonomous Data Warehouse widergespiegelt werden.

Wenn die Essbase-Modellstruktur nicht mehr synchron mit der Faktentabelle in Autonomous Data Warehouse ist, wird die föderierte Partition ungültig oder fehlerhaft. Um sie zu korrigieren, müssen Sie die föderierte Partition löschen, Änderungen an der Modellstruktur und der Faktentabelle vornehmen und die föderierte Partition dann erneut erstellen.

Wenn eine föderierte Partition ungültig wird, tritt möglicherweise ein Fehler auf, der wie folgt beginnt: Essbase-Fehler (1040235): Remotewarnung von föderierter Partition.

Die folgenden Typen von Essbase-Modellstrukturänderungen führen dazu, dass eine föderierte Partition ungültig wird:

  • Dimensionen hinzufügen, umbenennen oder entfernen

  • Gespeicherte Elemente in der Pivot-Dimension hinzufügen, umbenennen oder entfernen

  • Elemente von "Gespeichert" in "Dynamisch'" ändern

Bei anderen Typen vonEssbase-Modellstrukturänderungen, die oben nicht genannt sind (z.B. Element einer Nicht-Pivot-Dimension hinzufügen oder umbenennen) müssen Sie die entsprechende Änderung an der betroffenen Datenzeile in der Faktentabelle vornehmen. Andernfalls funktioniert die föderierte Partition möglicherweise nicht mehr richtig.

Wenn Sie bereits im Voraus wissen, dass Essbase-Modellstrukturmetadaten geändert werden, sollten Sie die föderierte Partition zuerst entfernen, die Modellstrukturänderung vornehmen, die Faktentabelle aktualisieren und dann die föderierte Partition erneut erstellen.

Wenn die föderierte Partition allerdings durch eine Änderung der Essbase-Metadaten ungültig wurde, führen Sie die folgende Aktion aus:

  1. Entfernen Sie die föderierte Partition und die damit verknüpfte Verbindung (wenn sie ansonsten nicht verwendet wird) wie unter Föderierte Partition entfernen beschrieben.

    Löschen Sie aus dem Benutzerschema der föderierten Partition in Autonomous Data Warehouse manuell alle von Essbase generierten Tabellen und anderen Objekte, die nicht mit der föderierten Partition entfernt werden konnten.

  2. Stellen Sie sicher, dass die Modellstrukturänderungen im Essbase-Cube abgeschlossen sind.

  3. Erstellen Sie die Faktentabelle erneut. Siehe Faktentabelle erstellen.

  4. Erstellen Sie die Verbindung zu Autonomous Data Warehouse erneut. Dabei kann es sich um eine globale Verbindung (unter dem Hauptsymbol für Quellen in der Essbase-Weboberfläche) oder eine nur für die Anwendung definierte Quelle handeln. Befolgen Sie die Anweisungen unter Verbindung für föderierte Partitionen erstellen.

  5. Erstellen Sie die föderierte Partition erneut, wie unter Föderierte Partition erstellen beschrieben.

Vorgehensweise, wenn die Datenbankverbindungsdetails geändert wurden

Wenn die Details der Autonomous Data Warehouse-Verbindung, die Essbase für eine föderierte Partition verwendet, geändert wurden, müssen Sie die föderierte Partition löschen und erneut erstellen sowie die zugehörigen Objekte und Metadatentabellen aus dem Datenbankschema löschen.

Sie müssen die föderierte Partition löschen und neu erstellen, wenn eines der folgenden Ereignisse nach der Erstellung der föderierten Partition auftritt:

  • Der Autonomous Data Warehouse-Port wird geändert.

  • Der Name der Verbindung wird geändert.

  • Die Verbindung verwendet ein Wallet, und Sie wechseln von einem Servicenamen zu einem anderen (um Performance- oder Nebenläufigkeitsänderungen vorzunehmen).

  • Die Elementzuordnung zur Faktentabelle wird aufgrund einer Modellstrukturaktualisierung geändert, sodass die föderierte Partition nicht mehr synchron ist. Details dazu finden Sie unter Vorsichtsmaßnahmen zu Metadaten für föderierte Partitions-Cubes.

Wenn Sie bereits im Voraus wissen, dass die Verbindungsdetails geändert werden, sollten Sie die föderierte Partition entfernen, bevor die Änderung stattfindet, und sie anschließend wieder erstellen. Wenn die föderierte Partition allerdings durch eine Verbindungsänderung ungültig wurde, führen Sie die folgenden Schritte aus.

Föderierte Partition löschen

Entfernen Sie die föderierte Partition und die damit verknüpfte Verbindung (wenn sie ansonsten nicht verwendet wird) wie unter Föderierte Partition entfernen beschrieben.

Mit der föderierten Partition verknüpfte Objekte und Metadatentabellen bereinigen

Löschen Sie aus dem Benutzerschema der föderierten Partition in Autonomous Data Warehouse alle von Essbase generierten Tabellen und anderen Objekte, die nicht mit der föderierten Partition entfernt werden konnten.

  1. Stellen Sie als opc-Benutzer eine SSH-Verbindung zum Essbase-Server her.

                      ssh -i MPOCI_KEY.pem opc@100.xxx.xxx.xxx
                   
  2. Wechseln Sie zum oracle-Benutzer (und navigieren Sie zu dessen Home-Verzeichnis).

                      sudo su - oracle
                   
  3. Navigieren Sie zum Anwendungsverzeichnis.

                      cd /u01/data/essbase/app
                   
  4. Identifizieren Sie anhand des Essbase-Anwendungs- und Cube-Namens das eindeutige Präfix für die Objekte und Metadaten der föderierten Partition.

    1. Rufen Sie den Anwendungsnamen (AppName) ab. Notieren Sie die genaue Schreibweise, da beim Namen die Groß-/Kleinschreibung beachtet wird. In diesem Beispiel: AppName = Sample.

      ls
      Sample
    2. Zählen Sie die Anzahl von Zeichen (appx) im Anwendungsnamen.

      Beispiel: appx = 6.

    3. Navigieren Sie zum Cube-Verzeichnis, und rufen Sie den Cube-Namen (DbName) ab. Notieren Sie die genaue Schreibweise, da beim Namen die Groß-/Kleinschreibung beachtet wird. In diesem Beispiel: DbName = Basic.

      cd /Sample
      ls
      Basic
    4. Zählen Sie die Anzahl von Zeichen (dby) im Cube-Namen.

      Beispiel: dby = 5.

    5. Erstellen Sie das Präfix (Prefix) wie folgt:

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

      Beispiel:

      <Prefix> = ESSAV_6Sample_5Basic_
  5. Stellen Sie mit SQL Developer oder einem anderen Tool eine Verbindung zu Oracle Database als Benutzer des Schemas her, mit dem die föderierte Partition verbunden ist.

  6. Führen Sie eine SELECT-Anweisung aus, um eine Liste mit Objekten zu erstellen, die mit Ihrer Anwendung mit föderierter Partition verknüpft sind. Diese Objekte müssen Sie im nächsten Schritt bereinigen.

    Format der SELECT-Anweisung:

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

    Beispiel:

    SELECT * FROM user_OBJECTS WHERE OBJECT_NAME like 'ESSAV_6Sample_5Basic_%';
  7. Führen Sie eine PL/SQL-Stored Procedure aus, die alle Analyse-Views, Packages, Hierarchien, Tabellen und anderen Objekte bereinigt, die mit dem Prefix-Wert verknüpft sind.

    Beispiel

    Ersetzen Sie ESSAV_6Sample_5Basic_ durch den Prefix-Wert.

    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. Löschen und aktualisieren Sie die verknüpften metadatenbezogenen Tabellen. Als Erstes müssen Sie Werte für ESSBASE_INSTANCE_UNIQUE_ID und OTL_ID abrufen.

    1. Stellen Sie als opc-Benutzer eine SSH-Verbindung zum Essbase-Server her.

                              ssh -i MPOCI_KEY.pem opc@100.xxx.xxx.xxx
                           
    2. Wechseln Sie zum oracle-Benutzer (und navigieren Sie zu dessen Home-Verzeichnis).

                              sudo su - oracle
                           
    3. Suchen Sie nach dem Essbase-Agent-Prozess.

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

      Der oben genannte Befehl sollte eine Prozessliste zurückgeben, die mit oracle beginnt, gefolgt von zwei Prozess-IDs. Beispiel:

      oracle   10769  19563 ...

      Verwenden Sie die erste Prozess-ID im nächsten Schritt als <PID>.

    4. Verwenden Sie den strings-Befehl, um den Wert von ESSBASE_INSTANCE_UNIQUE_ID zu erfassen.

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

      Beispiel:

                              strings /proc/10769/environ | grep ESSBASE_INSTANCE_UNIQUE_ID
                           

      Der oben genannte Befehl sollte den Wert von ESSBASE_INSTANCE_UNIQUE_ID zurückgeben. Beispiel:

      ESSBASE_INSTANCE_UNIQUE_ID=EWRnHFlQteCEzWUhF7P3TPKunf3bYs
    5. Stellen Sie mit SQL Developer oder einem anderen Tool eine Verbindung zu Oracle Database als Benutzer des Schemas her, mit dem die föderierte Partition verbunden ist.

    6. Führen Sie eine SELECT-Anweisung aus, um den Wert von OTL_ID abzurufen.

      Format der SELECT-Anweisung:

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

      Beispiel

      Ersetzen Sie ESSAV_6Sample_5Basic durch Ihren AppName-Wert und 'EWRnHFlQteCEzWUhF7P3TPKunf3bYs' durch Ihre ESSBASE_INSTANCE_UNIQUE_ID.

      SELECT OTL_ID FROM ESSAV_OTL_MTD_VERSION where APPNAME ='ESSAV_6Sample_5Basic' and "JAGENT_INSTANCE_ID"='EWRnHFlQteCEzWUhF7P3TPKunf3bYs';
    7. Die oben genannte Abfrage sollte den Wert von OTL_ID zurückgeben. Beispiel:

      62
    8. Führen Sie eine PL/SQL-Stored Procedure aus, um metadatenbezogene Tabellen zu löschen, die mit der OTL_ID verknüpft sind.

      Beispiel

      Ersetzen Sie 62 durch Ihre 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. Führen Sie eine UPDATE-Anweisung aus, um die ESSAV_OTL_MTD_VERSION-Tabelle in den Status "Inaktiv" zu versetzen.

      Beispiel

      Ersetzen Sie ESSAV_6Sample_5Basic durch Ihren AppName-Wert und EWRnHFlQteCEzWUhF7P3TPKunf3bYs durch Ihre ESSBASE_INSTANCE_UNIQUE_ID.

      UPDATE "ESSAV_OTL_MTD_VERSION" SET  "OTL_STATUS" = 'INACTIVE'  where APPNAME ='ESSAV_6Sample_5Basic' and "JAGENT_INSTANCE_ID"='EWRnHFlQteCEzWUhF7P3TPKunf3bYs';
      commit;

Verbindung und föderierte Partition neu erstellen

  1. Erstellen Sie die Verbindung zu Autonomous Data Warehouse erneut. Dabei kann es sich um eine globale Verbindung (unter dem Hauptsymbol für Quellen in der Essbase-Weboberfläche) oder eine nur für die Anwendung definierte Quelle handeln. Befolgen Sie die Anweisungen unter Verbindung. Achten Sie darauf, die Verbindung zu testen und zu speichern.

  2. Erstellen Sie die föderierte Partition erneut, wie unter Föderierte Partition erstellen beschrieben.

  3. Wenn weiterhin ein Verbindungsfehler wie Essbase-Fehler (1350012): Verbindungsversuch zu OCI nicht erfolgreich angezeigt wird, lesen Sie https://support.oracle.com/rs?type=doc&id=2925030.1.

Anwendung mit föderierter Partition sichern und wiederherstellen

Föderierte Partitionen werden nicht mit Essbase-Anwendungen migriert. Wenn Sie Ihre Anwendung und Ihren Cube in einen anderen Server verschieben oder zu einer anderen Essbase-Version migrieren möchten, müssen Sie die föderierte Partition löschen und in der neuen Umgebung neu erstellen.

So erstellen Sie ein Backup Ihres Cubes mit föderierter Partition:

  1. Sichern Sie die Anwendung ohne die Daten, aber mit allen anderen Elementen, die Sie benötigen (z.B. Konfigurationseigenschaften, Filter, Variablen, Berechnungsskripte und andere Artefakte). Verwenden Sie dazu LCM Export (oder den Job LCM exportieren in der Essbase-Weboberfläche).

  2. Erstellen Sie ein Backup der Faktentabelle. Siehe Autonome Datenbank sichern und wiederherstellen.

  3. Löschen Sie die Definition der föderierten Partition wie unter Föderierte Partition entfernen beschrieben aus dem Cube.

So stellen Sie Ihren Cube mit föderierter Partition aus dem Backup wieder her:

  1. Erstellen Sie die Anwendung mit LcmImport: Cube-Dateien wiederherstellen (oder dem Job LCM importieren in der Essbase-Weboberfläche) erneut.

  2. Stellen Sie die Faktentabelle gegebenenfalls in Autonomous Data Warehouse wieder her.

  3. Erstellen Sie die Verbindung erneut zu Autonomous Data Warehouse neu. Es wird empfohlen, einen neuen Verbindungsnamen zu verwenden, um Fehler zu vermeiden.

  4. Erstellen Sie die föderierte Partition neu.