Manutenção e Solução de Problemas de Cubo de Partição Federada

Use as diretrizes a seguir para fazer manutenção ou solucionar problemas de cubos do Essbase com partições federadas.

Este tópico presume que você criou uma partição federada e revisou as informações detalhadas nos tópicos anteriores.

Modelar e Testar Cubos de Partição Federada

Ao projetar um cubo de partição federada, siga estas diretrizes de teste se a criação levar muito tempo. Essas diretrizes podem ser úteis ao adotar uma abordagem de fases para solucionar problemas ou monitorar o desempenho.

  • Comece o projeto de partição federada em um ambiente de teste.

  • Comece com modelos de cubo que tenham as seguintes características:

    • não tem muitos níveis

    • não tem muitos membros ou atributos compartilhados

  1. Ao criar uma partição federada, programe as operações off-line quando as consultas não forem permitidas na instância.

  2. Desconecte gradualmente as sessões ativas de usuários do Essbase, utilizando MaxL alterar aplicativo disable commands e/ou disable connects (para impedir qualquer nova atividade do usuário), seguido de alterar sistema logout session e/ou kill request (caso precise encerrar qualquer sessão ativa que não precisa ser concluída). Observe que MaxL não pode encerrar solicitações que possam estar em execução no Autonomous Data Warehouse. Se você desativar comandos no aplicativo, lembre-se de reativá-los após a criação da partição federada.

  3. Executar ajuste de timeout:
    • Proxy HTTPS na rede do cliente - ajuste os timeouts da rede do cliente
    • Balanceador de carga - aumente o timeout do LoadBalance para 1.260 segundos (21 minutos)
    • Aumente os timeouts de HTTPD para 21 minutos
      /etc/httpd/conf.d/00_base.conf:ProxyTimeout 1260
      /etc/httpd/conf.d/00_base.conf:Timeout 1260
    • Timeout de APS/JAPI:
      • Na página Console da interface Web do Essbase, selecione Configuração e anote o valor de olap.server.netSocketTimeOut. Um valor de 200 ms significa que cada contagem de 5 para essas propriedades dá 1 segundo de tempo de espera.
      • Para definir o limite de timeout de APS/JAPI como 30 minutos, defina olap.server.netRetryCount como 9000.
  4. Criar a partição federada.
  5. Reverter os ajustes de timeout na etapa 3.
  6. Ative novamente os usuários no sistema usando alterar aplicativo enable commands e/ou connects, caso eles tenham sido desativados anteriormente.
  7. Para relatórios em um cubo do Essbase com uma partição federada, ajuste QRYGOVEXECTIME para que seja maior que o tempo esperado para executar consultas em partições federadas. Observe que QRYGOVEXECTIME não pode encerrar solicitações que possam estar em execução no Autonomous Data Warehouse.
  8. Após a conclusão do teste e ajuste do ambiente de desenvolvimento, use as etapas de 1 a 7 acima para adicionar a partição federada a um ambiente de produção.

Nota:

Se você vir um erro "Falha ao salvar o outline" quando criar a partição federada, aguarde a conclusão das sessões e,, em seguida, atualize o browser. Se a partição federada tiver sido criada, valide-a no SQL Developer. Se for validada no SQL Developer, a partição federada estará pronta para uso. Se não for validada no SQL Developer, o modelo precisa ser corrigido e o ajuste de timeout é necessário, conforme descrito acima na etapa 3.

Precauções de Metadados para Cubos de Partições Federadas

Quando o Essbase tiver uma partição federada, tenha cuidado ao editar o outline do cubo. Se você adicionar ou renomear membros, certifique-se de que as alterações de metadados também sejam representadas na tabela de fatos do Autonomous Data Warehouse.

Se o outline do Essbase ficar fora de sincronização com a tabela de fatos no Autonomous Data Warehouse, a partição federada se tornará inválida ou não funcionará corretamente. Para corrigi-la, elimine a partição federada, faça as alterações no outline e na tabela de fatos e, em seguida, recrie a partição federada.

Se uma partição federada se tornar inválida, você poderá encontrar um erro que começa com Essbase Error(1040235): Remote warning from federated partition.

Os seguintes tipos de alterações no outline do Essbase farão com que uma partição federada se torne inválida:

  • Adicionando, renomeando ou removendo dimensões

  • Adicionando, renomeando ou removendo membros armazenados na dimensão dinâmica

  • Alterando qualquer membro de armazenado para dinâmico

Para outros tipos de alterações no outline do Essbase não indicadas acima (por exemplo, adicionar ou renomear um membro de dimensão não dinâmica), faça a alteração correspondente na linha de dados afetada da tabela de fatos. Caso contrário, a partição federada poderá não funcionar corretamente.

Se você souber por antecedência que os metadados do outline do Essbase serão alterados, o melhor será remover a partição federada primeiro, fazer as alterações no outline, atualizar a tabela de fatos e, em seguida, recriar a partição federada.

No entanto, se os metadados do Essbase forem alterados e tornarem a partição federada inválida, execute a seguinte ação:

  1. Remova a partição federada e a conexão associada a ela (se, de outra forma, não for utilizada), conforme descrito em Remover uma Partição Federada.

    No esquema de usuário da partição federada no Autonomous Data Warehouse, exclua manualmente quaisquer tabelas geradas pelo Essbase e outros objetos que não foram removidos com a partição federada.

  2. Certifique-se de que as alterações no outline sejam concluídas no cubo do Essbase.

  3. Crie a tabela de fatos novamente. Consulte Criar a Tabela de Fatos.

  4. Recrie a conexão com o Autonomous Data Warehouse. Essa pode ser uma conexão global (abaixo do ícone Origens principal na interface Web do Essbase) ou pode estar nas Origens definidas apenas para o aplicativo. Siga as instruções em Criar uma Conexão para Partições Federadas.

  5. Recrie a partição federada, conforme descrito em Criar uma Partição Federada.

O Que Fazer Se os Detalhes da Conexão do Banco de Dados Forem Alterados

Se os detalhes da conexão do Autonomous Data Warehouse que o Essbase usa para uma partição federada tiverem sido alterados, elimine e recrie a partição federada. Remova objetos associados e tabelas de metadados do esquema do banco de dados.

Será necessário eliminar a partição federada e recriá-la se algum dos seguintes eventos ocorrerem após a criação da partição federada:

  • A porta do Autonomous Data Warehouse é alterada

  • O nome da conexão é alterado

  • A conexão usa uma wallet e você alterna de um nome de serviço para outro (para fazer alterações de desempenho ou simultaneidade)

  • Uma atualização de outline altera o mapeamento de membros para a tabela de fatos, fazendo com que a partição federada fique fora de sincronização. Consulte Precauções de Metadados para Cubos de Partições Federadas para obter detalhes.

Se você souber com antecedência que os detalhes de conexão vão mudar, o melhor será remover a partição federada antes da alteração e criá-la novamente depois. No entanto, se a conexão foi alterada e tornou a partição federada inválida, execute as etapas que se seguem.

Eliminar a Partição Federada

Remova a partição federada e a conexão associada a ela (se, de outra forma, não for utilizada), conforme descrito em Remover uma Partição Federada.

Remover Objetos Relacionados à Partição Federada e Tabelas de Metadados

No esquema de usuário partição federada no Autonomous Data Warehouse, elimine quaisquer tabelas geradas pelo Essbase e outros objetos que não foram removidos com a partição federada.

  1. ssh para o host do Servidor do Essbase como o usuário opc.

                      ssh -i MPOCI_KEY.pem opc@100.xxx.xxx.xxx
                   
  2. Altere para o usuário oracle (e vá para o respectivo diretório home).

                      sudo su - oracle
                   
  3. Navegue até o diretório de aplicativos.

                      cd /u01/data/essbase/app
                   
  4. Usando o aplicativo Essbase e o nome do cubo, identifique o prefixo exclusivo associado aos seus objetos e metadados da partição federada.

    1. Obtenha o nome do aplicativo (AppName). O nome faz distinção entre maiúsculas e minúsculas; portanto, capture o tipo de letra exato. Neste exemplo, AppName = Amostra.

      ls
      Sample
    2. Conte o número de caracteres (appx) no nome do aplicativo.

      Exemplo: appx = 6.

    3. Navegue até o diretório do cubo e obtenha o nome do cubo (DbName). O nome faz distinção entre maiúsculas e minúsculas; portanto, capture o tipo de letra exato. Neste exemplo, DbName = Básico.

      cd /Sample
      ls
      Basic
    4. Conte o número de caracteres (dby) no nome do cubo.

      Exemplo: dby = 5.

    5. Crie o Prefixo como:

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

      Exemplo:

      <Prefix> = ESSAV_6Sample_5Basic_
  5. Usando o SQL Developer ou outra ferramenta, estabeleça conexão com o Oracle Database como o usuário do esquema ao qual a Partição Federada está conectada.

  6. Execute uma instrução SELECT para criar uma lista de objetos associados ao seu aplicativo de partição federada. Esses são objetos que você vai remover na próxima etapa.

    O formato da instrução SELECT é:

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

    Exemplo:

    SELECT * FROM user_OBJECTS WHERE OBJECT_NAME like 'ESSAV_6Sample_5Basic_%';
  7. Execute um procedure PL/SQL armazenado que remova todas as views analíticas, pacotes, hierarquias, tabelas e outros objetos associados ao Prefixo.

    Exemplo

    Substitua ESSAV_6Sample_5Basic_ pelo seu Prefixo.

    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. Elimine e atualize tabelas associadas relativas a metadados. Primeiro, você precisa obter valores para ESSBASE_INSTANCE_UNIQUE_ID e OTL_ID.

    1. ssh para o host do Servidor do Essbase como o usuário opc.

                              ssh -i MPOCI_KEY.pem opc@100.xxx.xxx.xxx
                           
    2. Altere para o usuário oracle (e vá para o respectivo diretório home).

                              sudo su - oracle
                           
    3. Procure o processo Agente do Essbase.

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

      O comando acima deve retornar uma listagem de processos que começa com oracle seguido de dois IDs de processo; por exemplo,

      oracle   10769  19563 ...

      Considere o primeiro ID do processo como sendo <PID>, o qual você vai usar na próxima etapa.

    4. Use o comando strings para capturar o valor de ESSBASE_INSTANCE_UNIQUE_ID.

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

      Exemplo:

                              strings /proc/10769/environ | grep ESSBASE_INSTANCE_UNIQUE_ID
                           

      O comando acima deve retornar o valor de ESSBASE_INSTANCE_UNIQUE_ID; por exemplo,

      ESSBASE_INSTANCE_UNIQUE_ID=EWRnHFlQteCEzWUhF7P3TPKunf3bYs
    5. Usando o SQL Developer ou outra ferramenta, estabeleça conexão com o Oracle Database como o usuário do esquema ao qual a Partição Federada está conectada.

    6. Execute uma instrução SELECT para obter o valor de OTL_ID.

      O formato da instrução SELECT é:

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

      Exemplo

      Substitua ESSAV_6Sample_5Basic por seu AppName e substitua 'EWRnHFlQteCEzWUhF7P3TPKunf3bYs' por seu ESSBASE_INSTANCE_UNIQUE_ID.

      SELECT OTL_ID FROM ESSAV_OTL_MTD_VERSION where APPNAME ='ESSAV_6Sample_5Basic' and "JAGENT_INSTANCE_ID"='EWRnHFlQteCEzWUhF7P3TPKunf3bYs';
    7. A consulta acima deve retornar o valor de OTL_ID; por exemplo,

      62
    8. Execute um procedure PL/SQL armazenado para eliminar tabelas relativas a metadados associadas a OTL_ID.

      Exemplo

      Substitua 62 por seu 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. Execute uma instrução UPDATE para definir a tabela ESSAV_OTL_MTD_VERSION para o status inativo.

      Exemplo

      Substitua ESSAV_6Sample_5Basic por seu AppName e substitua EWRnHFlQteCEzWUhF7P3TPKunf3bYs por seu ESSBASE_INSTANCE_UNIQUE_ID.

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

Recrie a Conexão e a Partição Federada

  1. Recrie a conexão com o Autonomous Data Warehouse. Essa pode ser uma conexão global (abaixo do ícone Origens principal na interface Web do Essbase) ou pode estar nas Origens definidas apenas para o aplicativo. Siga as instruções em conexão. Certifique-se de Testar e Salvar a conexão.

  2. Recrie a partição federada, conforme descrito em Criar uma Partição Federada.

  3. Se você continuar a ver um erro de conexão, como Essbase Error(1350012): Attempt to connect to OCI failed, verifique https://support.oracle.com/rs?type=doc&id=2925030.1.

Fazer Backup e Restaurar um Aplicativo de Partição Federada

As partições federadas não são migradas com os aplicativos do Essbase. Ao preparar-se para mover seu aplicativo e cubo para outro servidor ou migrar para outra versão do Essbase, exclua a partição federada e crie-a novamente no novo ambiente.

Para fazer backup do cubo da partição federada,

  1. Faça backup do aplicativo, sem os dados, mas incluindo tudo o mais de que você possa precisar (como propriedades de configuração, filtros, variáveis, scripts de cálculo e outros artefatos). Para fazer isso, use Exportação do LCM (ou o job Exportar LCM na interface Web do Essbase).

  2. Faça backup da tabela de fatos. Consulte Fazendo Backup e Restaurando o Banco de Dados Autônomo.

  3. Exclua a definição de partição federada do cubo, seguindo as etapas em Remover uma Partição Federada.

Para restaurar o cubo da partição federada por meio do backup,

  1. Para recriar o aplicativo, usando LcmImport: Restaurar Arquivos de Cubo (ou o job Importar LCM na interface Web do Essbase).

  2. Se necessário, restaure a tabela de fatos no Autonomous Data Warehouse.

  3. Recrie a conexão com o Autonomous Data Warehouse. Recomenda-se usar um novo nome de conexão para evitar encontrar erros.

  4. Recrie a partição federada.