Maintenance et dépannage des cubes de partition fédérée

Utilisez les instructions ci-après pour effectuer la maintenance ou le dépannage des cubes Essbase avec des partitions fédérées.

Cette rubrique suppose que vous ayez créé une partition fédérée et passé en revue les informations détaillées dans les rubriques précédentes.

Modélisation et test de cubes de partition fédérée

Lors de la conception d'un cube de partition fédérée, suivez les instructions de test ci-après si la création prend trop de temps. Ces instructions peuvent être utiles si vous voulez adopter une approche par phases pour dépanner ou surveiller les performances.

  • Commencez le projet de partition fédérée dans un environnement de test.

  • Commencez par les modèles de cube qui présentent les caractéristiques suivantes :

    • Peu de niveaux

    • Peu d'attributs ou de membres partagés

  1. Lors de la création d'une partition fédérée, planifiez des opérations hors ligne lorsque les requêtes portant sur l'instance ne sont pas autorisées.

  2. Déconnectez progressivement les sessions utilisateur Essbase actives, à l'aide des instructions MaxL alter application disable commands et/ou disable connects (pour éviter toute nouvelle activité utilisateur), suivies de alter system logout session et/ou kill request (si vous devez mettre fin à des sessions actives qui n'ont pas besoin d'être terminées). MaxL ne peut pas mettre fin aux demandes qui sont potentiellement en cours d'exécution dans Autonomous Data Warehouse. Si vous désactivez les commandes dans l'application, n'oubliez pas de les réactiver après la création de la partition fédérée.

  3. Ajustez les délais d'expiration :
    • Proxy HTTPS sur réseau client : ajustez les délais d'expiration du réseau client.
    • Equilibreur de charge : augmentez le délai d'expiration LoadBalance jusqu'à 1 260 secondes (21 minutes).
    • Augmentez les délais d'expiration HTTPD jusqu'à 21 minutes :
      /etc/httpd/conf.d/00_base.conf:ProxyTimeout 1260
      /etc/httpd/conf.d/00_base.conf:Timeout 1260
    • Délai d'expiration APS/JAPI :
      • Sur la page Console de l'interface Web Essbase, sélectionnez Configuration et notez la valeur de olap.server.netSocketTimeOut. Une valeur de 200 ms correspond à 1 seconde d'attente toutes les 5 propriétés.
      • Pour fixer la limite du délai d'expiration APS/JAPI à 30 minutes, définissez olap.server.netRetryCount sur 9 000.
  4. Créez la partition fédérée.
  5. Rétablissez les ajustements de délai d'expiration de l'étape 3.
  6. Autorisez les utilisateurs à revenir dans le système à l'aide des instructions alter application enable commands et/ou connects, si vous aviez désactivé ces fonctions précédemment.
  7. Pour les rapports sur un cube Essbase avec une partition fédérée, ajustez la valeur QRYGOVEXECTIME de sorte qu'elle soit supérieure au temps prévu pour exécuter des requêtes sur les partitions fédérées. QRYGOVEXECTIME ne peut pas mettre fin aux demandes qui sont potentiellement en cours d'exécution dans Autonomous Data Warehouse.
  8. Une fois l'environnement de développement testé et ajusté, suivez les étapes 1 à 7 ci-dessus pour ajouter la partition fédérée dans un environnement de production.

Remarque :

Si le message d'erreur Echec de l'enregistrement de l'outline s'affiche lors de la création de la partition fédérée, attendez la fin des sessions, puis actualisez le navigateur. Si la partition fédérée a été créée, validez-la dans SQL Developer. Si elle est validée dans SQL Developer, la partition fédérée est prête à être utilisée. Si vous ne parvenez pas à la valider dans SQL Developer, corrigez le modèle et ajustez le délai comme décrit à l'étape 3 ci-dessus.

Précautions relatives aux métadonnées pour les cubes de partition fédérée

Si Essbase comporte une partition fédérée, faites attention lors de la modification de l'outline de cube. Si vous ajoutez ou renommez des membres, assurez-vous que les modifications de métadonnées sont également représentées dans la table de faits dans Autonomous Data Warehouse.

Si l'outline Essbase n'est plus synchronisée avec la table de faits dans Autonomous Data Warehouse, la partition fédérée devient non valide ou ne fonctionne plus correctement. Pour résoudre ce problème, vous devrez supprimer la partition fédérée, apporter des modifications à l'outline et à la table de faits, puis recréer la partition fédérée.

Si une partition fédérée devient non valide, un message d'erreur commençant par Erreur Essbase (1040235) : Avertissement distant en provenance de la partition fédérée peut apparaître.

Les types de modification d'outline Essbase suivants rendront une partition fédérée non valide :

  • Ajout, changement de nom ou suppression de dimensions

  • Ajout, changement de nom ou suppression de membres stockés dans la dimension de pivot

  • Définition d'un membre stocké en tant que membre dynamique

Pour les autres types de modification d'outline Essbase non indiqués ci-dessus (par exemple, ajout ou changement de nom d'un membre d'une dimension autre que de pivot), vous devez modifier en conséquence la ligne de données concernée dans la table de faits. Sinon, la partition fédérée peut ne pas fonctionner correctement.

Si vous savez à l'avance que les métadonnées de l'outline Essbase seront modifiées, il est préférable de commencer par enlever la partition fédérée, d'apporter les modifications à l'outline, de mettre à jour la table de faits, puis de recréer la partition fédérée.

Toutefois, si les métadonnées Essbase sont modifiées et rendent la partition fédérée non valide, procédez comme suit :

  1. Enlevez la partition fédérée et la connexion qui lui est associée (si elle n'est employée à aucune autre fin), comme décrit dans Suppression d'une partition fédérée.

    Dans le schéma utilisateur de la partition fédérée dans Autonomous Data Warehouse, supprimez manuellement les tables générées par Essbase et les autres objets qui n'ont pas été enlevés avec la partition fédérée.

  2. Vérifiez que les modifications d'outline sont effectuées dans le cube Essbase.

  3. Créez de nouveau la table de faits. Reportez-vous à Création de la table de faits.

  4. Recréez la connexion à Autonomous Data Warehouse. Cette connexion peut être globale (sous l'icône Sources principale dans l'interface Web Essbase) ou elle peut se trouver dans les sources définies uniquement pour l'application. Suivez les instructions décrites dans Création d'une connexion pour les partitions fédérées.

  5. Recréez la partition fédérée, comme décrit dans Création d'une partition fédérée.

Procédure à suivre en cas de modification des détails de connexion à la base de données

Si les détails de connexion à Autonomous Data Warehouse utilisés par Essbase pour une partition fédérée ont été modifiés, vous devez supprimer et recréer la partition fédérée. Vous devez également nettoyer les tables de métadonnées et objets associés dans le schéma de base de données.

Vous devrez supprimer et recréer la partition fédérée si l'un des événements suivants survient après la création de la partition fédérée :

  • Le port d'Autonomous Data Warehouse est modifié.

  • Le nom de la connexion est modifié.

  • La connexion utilise un portefeuille et vous basculez d'un nom de service à l'autre (pour apporter des modifications de simultanéité ou de performances).

  • Une mise à jour d'outline modifie le mapping de membres avec la table de faits, entraînant la désynchronisation de la partition fédérée. Pour plus de détails, reportez-vous à Précautions relatives aux métadonnées pour les cubes de partition fédérée.

Si vous savez à l'avance que les détails de connexion seront modifiés, il est préférable d'enlever la partition fédérée avant que la modification n'ait lieu, puis de la recréer après. Toutefois, si la connexion est modifiée et rend la partition fédérée non valide, suivez les étapes décrites ci-après.

Suppression de la partition fédérée

Enlevez la partition fédérée et la connexion qui lui est associée (si elle n'est employée à aucune autre fin), comme décrit dans Suppression d'une partition fédérée.

Nettoyage des tables de métadonnées et objets associés à la partition fédérée

Dans le schéma utilisateur de la partition fédérée dans Autonomous Data Warehouse, supprimez les tables générées par Essbase et les autres objets qui n'ont pas été enlevés avec la partition fédérée.

  1. Connectez-vous via SSH à l'hôte du serveur Essbase en tant qu'utilisateur opc.

                      ssh -i MPOCI_KEY.pem opc@100.xxx.xxx.xxx
                   
  2. Remplacez-le par l'utilisateur oracle (et accédez à son répertoire de base).

                      sudo su - oracle
                   
  3. Accédez au répertoire d'applications.

                      cd /u01/data/essbase/app
                   
  4. Servez-vous du nom du cube et de l'application Essbase pour identifier le préfixe unique associé aux objets et métadonnées de partition fédérée.

    1. Récupérez le nom de l'application (AppName). Le nom respecte la casse. Veillez donc à respecter strictement les majuscules et minuscules. Dans cet exemple, AppName = Sample.

      ls
      Sample
    2. Comptez le nombre de caractères (appx) dans le nom de l'application.

      Exemple : appx = 6.

    3. Accédez au répertoire de cube et récupérez le nom du cube (DbName). Le nom respecte la casse. Veillez donc à respecter strictement les majuscules et minuscules. Dans cet exemple, DbName = Basic.

      cd /Sample
      ls
      Basic
    4. Comptez le nombre de caractères (dby) dans le nom du cube.

      Exemple : dby = 5.

    5. Construisez Prefix comme suit :

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

      Exemple :

      <Prefix> = ESSAV_6Sample_5Basic_
  5. A l'aide de SQL Developer ou d'un autre outil, connectez-vous à Oracle Database en tant qu'utilisateur du schéma auquel la partition fédérée est connectée.

  6. Exécutez une instruction SELECT pour créer la liste des objets associés à votre application de partition fédérée. Ce sont ces objets que vous allez nettoyer lors de la prochaine étape.

    Le format de l'instruction SELECT est le suivant :

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

    Exemple :

    SELECT * FROM user_OBJECTS WHERE OBJECT_NAME like 'ESSAV_6Sample_5Basic_%';
  7. Exécutez une procédure PL/SQL stockée qui nettoie l'ensemble des vues analytiques, des packages, des hiérarchies, des tables et des autres objets associés à Prefix.

    Exemple

    Remplacez ESSAV_6Sample_5Basic_ par votre valeur 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;
    /
    
  8. Supprimez et mettez à jour les tables liées aux métadonnées associées. Vous devez tout d'abord obtenir les valeurs de ESSBASE_INSTANCE_UNIQUE_ID et OTL_ID.

    1. Connectez-vous via SSH à l'hôte du serveur Essbase en tant qu'utilisateur opc.

                              ssh -i MPOCI_KEY.pem opc@100.xxx.xxx.xxx
                           
    2. Remplacez-le par l'utilisateur oracle (et accédez à son répertoire de base).

                              sudo su - oracle
                           
    3. Recherchez le processus d'agent Essbase.

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

      La commande ci-dessus doit renvoyer une liste de processus commençant par oracle et suivi de deux ID de processus. Par exemple :

      oracle   10769  19563 ...

      Le premier ID de processus correspond à <PID>, que vous utiliserez dans la prochaine étape.

    4. Utilisez la commande strings pour obtenir la valeur de ESSBASE_INSTANCE_UNIQUE_ID.

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

      Exemple :

                              strings /proc/10769/environ | grep ESSBASE_INSTANCE_UNIQUE_ID
                           

      La commande ci-dessus doit renvoyer la valeur de ESSBASE_INSTANCE_UNIQUE_ID. Par exemple :

      ESSBASE_INSTANCE_UNIQUE_ID=EWRnHFlQteCEzWUhF7P3TPKunf3bYs
    5. A l'aide de SQL Developer ou d'un autre outil, connectez-vous à Oracle Database en tant qu'utilisateur du schéma auquel la partition fédérée est connectée.

    6. Exécutez une instruction SELECT pour obtenir la valeur de OTL_ID.

      Le format de l'instruction SELECT est le suivant :

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

      Exemple

      Remplacez ESSAV_6Sample_5Basic par la valeur de AppName, puis 'EWRnHFlQteCEzWUhF7P3TPKunf3bYs' par la valeur de ESSBASE_INSTANCE_UNIQUE_ID.

      SELECT OTL_ID FROM ESSAV_OTL_MTD_VERSION where APPNAME ='ESSAV_6Sample_5Basic' and "JAGENT_INSTANCE_ID"='EWRnHFlQteCEzWUhF7P3TPKunf3bYs';
    7. La requête ci-dessus doit renvoyer la valeur de OTL_ID. Par exemple :

      62
    8. Exécutez une procédure PL/SQL stockée pour supprimer les tables liées aux métadonnées associées à OTL_ID.

      Exemple

      Remplacez 62 par la valeur de 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. Exécutez une instruction UPDATE pour définir la table ESSAV_OTL_MTD_VERSION sur le statut inactif.

      Exemple

      Remplacez ESSAV_6Sample_5Basic par la valeur de AppName, puis EWRnHFlQteCEzWUhF7P3TPKunf3bYs par la valeur de ESSBASE_INSTANCE_UNIQUE_ID.

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

Recréation de la connexion et de la partition fédérée

  1. Recréez la connexion à Autonomous Data Warehouse. Cette connexion peut être globale (sous l'icône Sources principale dans l'interface Web Essbase) ou elle peut se trouver dans les sources définies uniquement pour l'application. Suivez les instructions décrites dans connexion. Veillez à tester et à enregistrer la connexion.

  2. Recréez la partition fédérée, comme décrit dans Création d'une partition fédérée.

  3. Si une erreur de connexion telle que Erreur Essbase (1350012) : Echec de la tentative de connexion à OCI continue d'apparaître, reportez-vous à https://support.oracle.com/rs?type=doc&id=2925030.1.

Sauvegarde et restauration d'une application de partition fédérée

Les partitions fédérées ne sont pas migrées avec les applications Essbase. Lors de la préparation du déplacement de l'application et du cube vers un autre serveur, ou de la migration vers une autre version d'Essbase, vous devez supprimer la partition fédérée et la recréer dans le nouvel environnement.

Pour sauvegarder le cube de partition fédérée, procédez comme suit :

  1. Sauvegardez l'application, sans les données, mais en incluant tout ce dont vous pouvez avoir besoin (comme les propriétés de configuration, les filtres, les variables, les scripts de calcul et les autres artefacts). Pour ce faire, utilisez l'export LCM (ou le job Export LCM dans l'interface Web Essbase).

  2. Sauvegardez la table de faits. Reportez-vous à Sauvegarde et restauration d'Autonomous Database.

  3. Supprimez la définition de partition fédérée du cube, en suivant les étapes décrites dans Suppression d'une partition fédérée.

Pour restaurer le cube de partition fédérée à partir de la sauvegarde, procédez comme suit :

  1. Recréez l'application, en utilisant LcmImport : restauration de fichiers de cube (ou le job Import LCM dans l'interface Web Essbase).

  2. Si nécessaire, restaurez la table de faits sur Autonomous Data Warehouse.

  3. Recréez la connexion à Autonomous Data Warehouse. Il est recommandé d'utiliser un nouveau nom de connexion pour éviter de rencontrer des erreurs.

  4. Recréez la partition fédérée.