Mantenimiento y solución de problemas del cubo de partición federada

Utilice las siguientes directrices para realizar el mantenimiento o solucionar problemas de cubos de Essbase con particiones federadas.

En este tema se asume que ha creado una partición federada y ha revisado la información detallada en los temas anteriores.

Modelado y prueba de cubos de partición federada

Al diseñar un cubo de partición federada, siga las directrices de prueba siguientes si la creación tarda mucho tiempo. Estas directrices pueden resultar útiles para adoptar un enfoque en fases de solución de problemas o supervisión del rendimiento.

  • Inicie el proyecto de partición federada en un entorno de prueba.

  • Comience con modelos de cubo que tengan las siguientes características:

    • que no tengan demasiados niveles

    • que no tengan demasiados miembros o atributos compartidos

  1. Al crear una partición federada, programe operaciones fuera de línea cuando no estén permitidas las consultas en la instancia.

  2. Desconecte gradualmente las sesiones de usuario activas de Essbase utilizando alter application disable commands y/o disable connects (para impedir cualquier actividad de usuario) de MaxL seguidos de alter system logout session y/o kill request (si necesita terminar cualquier sesión activa que no sea necesario completar). Tenga en cuenta que MaxL no puede terminar ninguna solicitud que se pueda estar ejecutando en Autonomous Data Warehouse. Si desactiva comandos en la aplicación, no olvide volver a activar los comandos después de crear la partición federada.

  3. Realice un ajuste de timeout:
    • Proxy HTTPS en la red del cliente: ajuste los timeouts de la red del cliente
    • Equilibrador de carga: aumente el timeout del equilibrador de carga a 1260 segundos (21 minutos)
    • Aumente los timeouts de HTTPD a 21 minutos
      /etc/httpd/conf.d/00_base.conf:ProxyTimeout 1260
      /etc/httpd/conf.d/00_base.conf:Timeout 1260
    • Timeout de APS/JAPI:
      • En la página Consola de la interfaz web de Essbase, seleccione Configuración y tome nota del valor de olap.server.netSocketTimeOut. Un valor de 200 ms implica que cada recuento de 5 de estas propiedades conlleva un tiempo de espera de 1 segundo.
      • Para definir el timeout de APS/JAPI en 30 minutos, defina olap.server.netRetryCount en 9000.
  4. Cree la partición federada.
  5. Revierta los ajustes de timeout del paso 3.
  6. Vuelva a activar los usuarios en el sistema mediante los comandos de activación y/o las conexiones alter application si estos se habían desactivado previamente.
  7. Para los informes en un cubo de Essbase con una partición federada, ajuste QRYGOVEXECTIME para que sea superior al tiempo esperado para ejecutar las consultas en las particiones federadas. Tenga en cuenta que QRYGOVEXECTIME no puede terminar ninguna solicitud que se pueda estar ejecutando en Autonomous Data Warehouse.
  8. Cuando se haya completado la prueba y el ajuste del entorno de desarrollo, utilice los pasos del 1 al 7 anteriores para agregar la partición federada a un entorno de producción.

Nota:

Si aparece el error "Fallo al guardar el esquema" al crear la partición federada, espere a que la sesión se complete y, a continuación, refresque el explorador. Si se ha creado la partición federada, valídela en SQL Developer. Si se valida en SQL Developer, la partición federada estará lista para usarla. Si no se valida en SQL Developer, será necesario corregir el modelo y ajustar el timeout como se describe en el paso 3.

Precauciones con los metadatos para los cubos de partición federada

Si Essbase tiene una partición federada, tenga cuidado al editar el esquema del cubo. Si agrega o renombra miembros, asegúrese de que los cambios en los metadatos también se representen en la tabla de hechos en Autonomous Data Warehouse.

Si el esquema de Essbase deja de estar sincronizado con la tabla de hechos en Autonomous Data Warehouse, la partición federada ya no será válida o no funcionará correctamente. Para corregirlo, deberá borrar la partición federada, realizar cambios en el esquema y la tabla de hechos y, a continuación, volver a crear la partición federada.

Si una partición federada dejar de ser válida, es posible que obtenga un error que empiece por Essbase Error(1040235): Remote warning from federated partition.

Los siguientes tipos de cambios de esquema de Essbase provocarán que la partición federada deje de ser válida:

  • Adición, renombrado y eliminación de dimensiones

  • Adición, renombrado y eliminación de miembros almacenados en la dimensión de giro

  • Cambio de cualquier miembro de almacenado a dinámico

En el caso de otros tipos de cambios de esquema de Essbase no indicados anteriormente (por ejemplo, agregar o renombrar un miembro de dimensión de tabla no dinámica), debe realizar el cambio correspondiente en la fila de datos afectada de la tabla de hechos. De lo contario, es posible que la partición federada no funcione correctamente.

Si sabe con antelación que van a cambiar los metadatos del esquema de Essbase, es mejor eliminar primero la partición federada, realizar los cambios de esquema, actualizar la tabla de hechos y, a continuación, volver a crear la partición de federación.

Sin embargo, si los metadatos de Essbase han cambiado y esto ha provocado que la partición federada deje de ser válida, realice la siguiente acción:

  1. Elimine la partición federada y la conexión asociada a esta (si no se utiliza de otro modo), como se describe en Eliminación de una partición federada.

    En el esquema de usuario de la partición federada de Autonomous Data Warehouse, suprima manualmente todas las tablas y otros objetos generados por Essbase que no se hayan podido eliminar con la partición federada.

  2. Asegúrese de que los cambios del esquema se hayan completado en el cubo de Essbase.

  3. Vuelva a crear la tabla de hechos. Consulte Creación de la tabla de hechos.

  4. Vuelva a crear la conexión a Autonomous Data Warehouse. Esta puede ser una conexión global (bajo el icono principal Orígenes en la interfaz web de Essbase), o puede estar en los Orígenes que se han definido solo para la aplicación. Siga las instrucciones de Creación de una conexión para particiones federadas.

  5. Vuelva a crear la partición federada, como se describe en Creación de una partición federada.

Qué hacer si los detalles de conexión a base de datos han cambiado

Si han cambiado los detalles de la conexión a Autonomous Data Warehouse que utiliza Essbase para una partición federada, debe borrar y volver a crear la partición federada y limpiar los objetos y las tablas de metadatos asociados del esquema de base de datos.

Debe borrar y volver a crear la partición federada si se produce alguno de los siguientes eventos después de la creación de la partición federada:

  • El puerto de Autonomous Data Warehouse cambia

  • El nombre de la conexión cambia

  • La conexión utiliza una cartera y cambia de un nombre de servicio a otro (para realizar cambios de rendimiento o simultaneidad)

  • Una actualización de esquema cambia la asignación de miembros a la tabla de hechos, lo que provoca que la partición federada quede desincronizada. Consulte Precauciones con los metadatos para los cubos de partición federada para obtener más información.

Si sabe con antelación que van a cambiar los detalles de conexión, es mejor eliminar la partición federada antes de que se produzca el cambio y volver crearla. Sin embargo, si la conexión ha cambiado y ha causado que la partición federada deje de ser válida, realice los siguientes pasos.

Borrar la partición federada

Elimine la partición federada y la conexión asociada a esta (si no se utiliza de otro modo), como se describe en Eliminación de una partición federada.

Limpiar las tablas de metadatos y los objetos relacionados con la partición federada

En el esquema de usuario de la partición federada de Autonomous Data Warehouse, borre todas las tablas y otros objetos generados por Essbase que no se hayan podido eliminar con la partición federada.

  1. Utilice ssh para conectarse al host del servidor de Essbase como usuario opc.

                      ssh -i MPOCI_KEY.pem opc@100.xxx.xxx.xxx
                   
  2. Cambie al usuario oracle (y vaya a su directorio de inicio).

                      sudo su - oracle
                   
  3. Vaya hasta el directorio de aplicaciones.

                      cd /u01/data/essbase/app
                   
  4. Mediante la aplicación de Essbase y el nombre de cubo, identifique el prefijo único asociado a los objetos y los metadatos de su partición federada.

    1. Obtenga el nombre de aplicación (AppName). El nombre distingue entre mayúsculas y minúsculas, por lo que debe utilizar las mayúsculas/minúsculas exactas. En este ejemplo, AppName = Sample.

      ls
      Sample
    2. Cuente el número de caracteres (appx) en el nombre de aplicación.

      Ejemplo: appx = 6.

    3. Navegue al directorio de cubos y obtenga el nombre del cubo (DbName). El nombre distingue entre mayúsculas y minúsculas, por lo que debe utilizar las mayúsculas/minúsculas exactas. En este ejemplo, DbName = Basic.

      cd /Sample
      ls
      Basic
    4. Cuente el número de caracteres (dby) en el nombre del cubo.

      Ejemplo: dby = 5.

    5. Cree Prefix del siguiente modo:

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

      Ejemplo:

      <Prefix> = ESSAV_6Sample_5Basic_
  5. Mediante SQL Developer u otra herramienta, conéctese a Oracle Database como usuario del esquema al que está conectada la partición federada.

  6. Ejecute una sentencia SELECT para crear una lista de objetos asociados a su aplicación de partición federada. Estos son los objetos que limpiará en el siguiente paso.

    El formato de la sentencia SELECT es el siguiente:

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

    Ejemplo:

    SELECT * FROM user_OBJECTS WHERE OBJECT_NAME like 'ESSAV_6Sample_5Basic_%';
  7. Ejecute un procedimiento PL/SQL almacenado que limpie todas las vistas analíticas, paquetes, jerarquías, tablas y otros objetos asociados a Prefix.

    Ejemplo

    Reemplace ESSAV_6Sample_5Basic_ por 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. Borre y actualice las tablas relacionadas con los metadatos asociados. Primero, debe obtener los valores de ESSBASE_INSTANCE_UNIQUE_ID y OTL_ID.

    1. Utilice ssh para conectarse al host del servidor de Essbase como usuario opc.

                              ssh -i MPOCI_KEY.pem opc@100.xxx.xxx.xxx
                           
    2. Cambie al usuario oracle (y vaya a su directorio de inicio).

                              sudo su - oracle
                           
    3. Busque el proceso del agente de Essbase.

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

      El comando anterior debería devolver una lista de procesos que comiencen por oracle seguido de dos identificadores de proceso; por ejemplo,

      oracle   10769  19563 ...

      Suponga que el primer identificador de proceso es <PID>, que utilizará en el siguiente paso.

    4. Utilice el comando strings para capturar el valor de ESSBASE_INSTANCE_UNIQUE_ID.

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

      Ejemplo:

                              strings /proc/10769/environ | grep ESSBASE_INSTANCE_UNIQUE_ID
                           

      El comando anterior debería devolver el valor de ESSBASE_INSTANCE_UNIQUE_ID; por ejemplo,

      ESSBASE_INSTANCE_UNIQUE_ID=EWRnHFlQteCEzWUhF7P3TPKunf3bYs
    5. Mediante SQL Developer u otra herramienta, conéctese a Oracle Database como usuario del esquema al que está conectada la partición federada.

    6. Ejecute una sentencia SELECT para obtener el valor de OTL_ID.

      El formato de la sentencia SELECT es el siguiente:

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

      Ejemplo

      Reemplace ESSAV_6Sample_5Basic por su AppName, y 'EWRnHFlQteCEzWUhF7P3TPKunf3bYs' por su ESSBASE_INSTANCE_UNIQUE_ID.

      SELECT OTL_ID FROM ESSAV_OTL_MTD_VERSION where APPNAME ='ESSAV_6Sample_5Basic' and "JAGENT_INSTANCE_ID"='EWRnHFlQteCEzWUhF7P3TPKunf3bYs';
    7. La consulta anterior debería devolver el valor de OTL_ID; por ejemplo,

      62
    8. Ejecute un procedimiento PL/SQL para borrar tablas relacionadas con metadatos asociadas a OTL_ID.

      Ejemplo

      Reemplace 62 por su 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. Ejecute una sentencia UPDATE para definir la tabla ESSAV_OTL_MTD_VERSION en el estado inactivo.

      Ejemplo

      Reemplace ESSAV_6Sample_5Basic por su AppName, y EWRnHFlQteCEzWUhF7P3TPKunf3bYs por su ESSBASE_INSTANCE_UNIQUE_ID.

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

Volver a crear la conexión y la partición federada

  1. Vuelva a crear la conexión a Autonomous Data Warehouse. Esta puede ser una conexión global (bajo el icono principal Orígenes en la interfaz web de Essbase), o puede estar en los Orígenes que se han definido solo para la aplicación. Siga las instrucciones de conexión. Asegúrese de Probar y Guardar la conexión.

  2. Vuelva a crear la partición de federación como se describe en Creación de una partición federada.

  3. Si sigue apareciendo un error de conexión como Essbase Error(1350012): Attempt to connect to OCI failed, compruebe https://support.oracle.com/rs?type=doc&id=2925030.1.

Copia de seguridad y restauración de una aplicación de partición federada

Las particiones federadas no se migran con las aplicaciones de Essbase. Durante la preparación para mover la aplicación y el cubo a otro servidor o realizar la migración a otra versión de Essbase, tendrá que suprimir la partición federada y volver a crearla en el nuevo entorno.

Para hacer una copia de seguridad del cubo de partición federada:

  1. Realice una copia de seguridad de la aplicación, sin los datos, pero incluyendo todo lo que necesite (como las propiedades de configuración, los filtros, las variables, los scripts de cálculo y otros artefactos). Para ello, utilice la exportación de LCM (o el trabajo Exportar LCM en la interfaz web de Essbase).

  2. Realice una copia de seguridad de la tabla de hechos. Consulte Copia de seguridad y restauración de Autonomous Database.

  3. Suprima la definición de partición federada del cubo, siguiendo los pasos que se indican en Eliminación de una partición federada.

Para restaurar el cubo de partición federada a partir de la copia de seguridad:

  1. Vuelva a crear la aplicación utilizando LcmImport: Restauración de archivos de cubo (o el trabajo Importar LCM en la interfaz web de Essbase).

  2. Si es necesario, restaure la tabla de hechos en Autonomous Data Warehouse.

  3. Vuelva a crear la conexión en Autonomous Data Warehouse. Se recomienda utilizar un nuevo nombre de conexión para evitar que se produzcan errores.

  4. Vuelva a crear la partición federada.