Manutenção e Resolução de Problemas do Cubo de Partição Federada

Utilize as seguintes diretrizes para efetuar a manutenção ou a resolução de problemas de cubos do Essbase com partições federadas.

Este tópico assume que criou uma partição federada e reviu as informações detalhadas dos tópicos anteriores.

Modelar e Testar Cubos de Partição Federada

Ao desenhar um cubo de partição federada, siga estas diretrizes de teste se a criação demorar muito tempo. Estas diretrizes podem ser úteis para adotar uma abordagem faseada em relação à resolução de problemas ou monitorização do desempenho.

  • Inicie o projeto de partição federada num ambiente de teste.

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

    • não muitos níveis

    • não muitos membros ou atributos partilhados

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

  2. Desligue gradualmente as sessões de utilizador do Essbase ativas, utilizando alter application disable commands e/ou disable connects de MaxL (para impedir qualquer nova atividade do utilizador), seguido de alter system logout session e/ou kill request (se precisar de terminar alguma sessão ativa que não precise de ser concluída). Tenha em consideração que o MaxL não pode terminar nenhum pedido que possa estar a ser executado no Autonomous Data Warehouse. Se desativar comandos na aplicação, não se esqueça de reativar os comandos depois de criar a partição federada.

  3. Executar otimização do limite de tempo:
    • Proxy de HTTPS na rede do cliente - ajustar limites de tempo da rede do cliente
    • Distribuidor de carga - aumentar o limite de tempo LoadBalance para 1260 segundos (21 minutos)
    • Aumentar os limites de tempo de HTTPD para 21 minutos
      /etc/httpd/conf.d/00_base.conf:ProxyTimeout 1260
      /etc/httpd/conf.d/00_base.conf:Timeout 1260
    • Limite de tempo de APS/JAPI:
      • Na página Consola na interface web do Essbase, selecione Configuração e tome nota do valor de olap.server.netSocketTimeOut. Um valor de 200 ms significa que toda a contagem de 5 para estas propriedades atribui 1 segundo de tempo de espera.
      • Para definir o limite de tempo de APS/JAPI para 30 minutos, defina olap.server.netRetryCount como 9000.
  4. Crie a partição federada.
  5. Reverta os ajustes de limite de tempo no passo 3.
  6. Volte a ativar os utilizadores no sistema utilizando alter application enable commands e/ou connects, se estes tiverem sido desativados anteriormente.
  7. Para os relatórios num cubo do Essbase com uma partição federada, otimize QRYGOVEXECTIME de modo a ser superior ao tempo esperado para executar consultas relativas a partições federadas. Tenha em consideração que QRYGOVEXECTIME não pode terminar nenhum pedido que possa estar a ser executado no Autonomous Data Warehouse.
  8. Depois de concluídos os testes e a otimização do ambiente de desenvolvimento, utilize os passos acima de 1 a 7 para acrescentar a partição federada num ambiente de produção.

Nota:

Se vir um erro "Falha na gravação da estrutura" ao criar a partição federada, aguarde que as sessões sejam concluídas, em seguida, renove 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 está pronta para utilização. Se não validar no SQL Developer, o modelo precisa de ser corrigido e é necessária a otimização do limite de tempo conforme descrito acima no passo 3.

Precauções Relativas a Metadados para Cubos de Partição Federada

Quando o Essbase tiver uma partição federada, tenha cuidado ao editar a estrutura do cubo. Se acrescentar ou renomear membros, certifique-se de que as alterações de metadados também são representadas na tabela de factos no Autonomous Data Warehouse.

Se a estrutura do Essbase deixar de estar sincronizada com a tabela de factos no Autonomous Data Warehouse, a partição federada tornar-se-á inválida ou não funcionará corretamente. Para corrigir o problema, será necessário suprimir a partição federada, efetuar alterações à estrutura e à tabela de factos e, em seguida, recriar a partição federada.

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

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

  • Acrescentar, renomear ou retirar dimensões

  • Acrescentar, renomear ou retirar membros armazenados na dimensão de rotação

  • Alterar qualquer membro de armazenado para dinâmico

Para outros tipos de alterações da estrutura do Essbase não indicadas acima (por exemplo, acrescentar ou renomear um membro da dimensão não de rotação), deve efetuar a alteração correspondente na linha de dados afetada na tabela de factos. Caso contrário, a partição federada pode não funcionar corretamente.

Se souber antecipadamente que os metadados da estrutura do Essbase vão ser alterados, é melhor retirar primeiro a partição federada, efetuar as alterações da estrutura, atualizar a tabela de factos e, em seguida, recriar a partição federada.

No entanto, se os metadados do Essbase tiverem sido alterados fazendo com que a partição federadase torne inválida, execute a seguinte ação:

  1. Retire a partição federada e a ligação a ela associada (se não for utilizada), conforme descrito em Retirar uma Partição Federada.

    No schema de utilizador da partição federada no Autonomous Data Warehouse, apague manualmente quaisquer tabelas geradas pelo Essbase e outros objetos que não foram retirados com a partição federada.

  2. Certifique-se de que as alterações da estrutura foram concluídas no cubo do Essbase.

  3. Crie novamente a tabela de factos. Consulte Criar a Tabela de Factos.

  4. Recrie a ligação ao Autonomous Data Warehouse. Pode ser uma ligação global (abaixo do ícone Origens principal na interface web do Essbase) ou pode estar nas Origens definidas apenas para a aplicação. Siga as instruções em Criar uma Ligaçã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 Ligação à Base de Dados Tiverem Sido Alterados

Se os detalhes da ligação do Autonomous Data Warehouse que o Essbase utiliza para uma partição federada forem alterados, terá de suprimir e recriar a partição federada e limpar os objetos associados e as tabelas de metadados do schema da base de dados.

Será necessário suprimir e recriar a partição federada se algum dos seguintes eventos ocorrer depois de a partição federada ter sido criada:

  • A porta do Autonomous Data Warehouse é alterada

  • O nome da ligação é alterado

  • A ligação utiliza um wallet e o utilizador muda de um nome de serviço para outro (para efetuar alterações de desempenho ou de concorrência)

  • Uma atualização da estrutura altera a correspondência de membros com a tabela de factos, fazendo com que a partição federada deixe de estar sincronizada. Consulte Precauções Relativas a Metadados para Cubos de Partições Federadas para obter detalhes.

Se souber antecipadamente que os detalhes da ligação vão ser alterados, é melhor retirar a partição federada antes de a alteração ocorrer e criá-la novamente depois. No entanto, se a ligação tiver sido alterada fazendo com que a partição federada se torne inválida, execute os seguintes passos.

Suprimir a Partição Federada

Retire a partição federada e a ligação a ela associada (se não for utilizada), conforme descrito em Retirar uma Partição Federada.

Limpar Tabelas de Metadados e Objetos Relacionados da Partição Federada

No schema de utilizador da partição federada no Autonomous Data Warehouse, suprima quaisquer tabelas geradas pelo Essbase e outros objetos que não foram retirados com a partição federada.

  1. ssh para o host do Essbase Server como o utilizador opc.

                      ssh -i MPOCI_KEY.pem opc@100.xxx.xxx.xxx
                   
  2. Altere para o utilizador oracle (e aceda ao respetivo diretório principal).

                      sudo su - oracle
                   
  3. Navegue até ao diretório da aplicação.

                      cd /u01/data/essbase/app
                   
  4. Ao utilizar a aplicação do Essbase e o nome do cubo, identifique o único prefixo associado aos seus objetos e metadados de partição federada.

    1. Obtenha o nome da aplicação (AppName). O nome é sensível a maiúsculas e minúsculas, pelo que deve capturar as letras exatas. Neste exemplo, AppName = Sample.

      ls
      Sample
    2. Conte o número de caracteres (appx) no nome da aplicação.

      Exemplo: appx = 6.

    3. Navegue até ao diretório do cubo e obtenha o nome do cubo (DbName). O nome é sensível a maiúsculas e minúsculas, pelo que deve capturar as letras exatas. Neste exemplo, DbName = Basic.

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

      Exemplo: dby = 5.

    5. Crie o Prefix como:

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

      Exemplo:

      <Prefix> = ESSAV_6Sample_5Basic_
  5. Ao utilizar o SQL Developer ou outra ferramenta, ligue à Oracle Database como o utilizador do schema ao qual a Partição Federada está ligada.

  6. Execute uma instrução SELECT para criar uma lista de objetos associados à sua aplicação de partição federada. Estes são os objetos que irá limpar no passo seguinte.

    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 procedimento de PL/SQL armazenado que limpa todas as visualizações analíticas, pacotes, hierarquias, tabelas e outros objetos associados ao Prefix.

    Exemplo

    Substitua ESSAV_6Sample_5Basic_ pelo seu 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. Suprima e atualize as tabelas relacionadas com metadados associadas. Primeiro, precisa de obter valores para ESSBASE_INSTANCE_UNIQUE_ID e OTL_ID.

    1. ssh para o host do Essbase Server como o utilizador opc.

                              ssh -i MPOCI_KEY.pem opc@100.xxx.xxx.xxx
                           
    2. Altere para o utilizador oracle (e aceda ao respetivo diretório principal).

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

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

      O comando acima deverá devolver uma listagem de processos que começa com oracle seguido de duas ID de processo; por exemplo,

      oracle   10769  19563 ...

      Considere a primeira ID de processo como <PID>, que utilizará no passo seguinte.

    4. Utilize 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 deverá devolver o valor de ESSBASE_INSTANCE_UNIQUE_ID; por exemplo,

      ESSBASE_INSTANCE_UNIQUE_ID=EWRnHFlQteCEzWUhF7P3TPKunf3bYs
    5. Ao utilizar o SQL Developer ou outra ferramenta, ligue à Oracle Database como o utilizador do schema ao qual a Partição Federada está ligada.

    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 pelo seu AppName e substitua 'EWRnHFlQteCEzWUhF7P3TPKunf3bYs' pelo 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 deverá devolver o valor de OTL_ID; por exemplo,

      62
    8. Execute um procedimento de PL/SQL armazenado para suprimir tabelas relacionadas com metadados associadas a OTL_ID.

      Exemplo

      Substitua 62 pelo 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 um estado inativo.

      Exemplo

      Substitua ESSAV_6Sample_5Basic pelo seu AppName e substitua EWRnHFlQteCEzWUhF7P3TPKunf3bYs pelo 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;

Recriar a Ligação e a Partição Federada

  1. Recrie a ligação ao Autonomous Data Warehouse. Pode ser uma ligação global (abaixo do ícone Origens principal na interface web do Essbase) ou pode estar nas Origens definidas apenas para a aplicação. Siga as instruções em ligação. Certifique-se de que Testa e Grava a ligação.

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

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

Efetuar Cópia de Segurança e Repor uma Aplicação de Partição Federada

As partições federadas não são migradas com as aplicações do Essbase. Ao preparar a deslocação da sua aplicação e do seu cubo para outro servidor ou a migração para outra versão do Essbase, precisa de apagar a partição federada e recriá-la no novo ambiente.

Para efetuar cópia de segurança do seu cubo de partição federada,

  1. Efetue cópia de segurança da aplicação, sem os dados, mas incluindo tudo o que possa ser necessário (como propriedades de configuração, filtros, variáveis, scripts de cálculo e outros artefactos). Para tal, utilize a exportação de LCM (ou a tarefa Exportar LCM na interface web do Essbase).

  2. Efetue cópia de segurança da tabela de factos. Consulte Efetuar Cópia de Segurança e Repor o Autonomous Database.

  3. Apague a definição da partição federada do cubo, seguindo os passos em Retirar uma Partição Federada.

Para repor o seu cubo de partição federada a partir da cópia de segurança,

  1. Recrie a aplicação utilizando LcmImport: Repor Ficheiros do Cubo (ou a tarefa Importar LCM na interface web do Essbase).

  2. Se necessário, reponha a tabela de factos no Autonomous Data Warehouse.

  3. Recrie a ligação ao Autonomous Data Warehouse. Recomenda-se a utilização de um novo nome de ligação para evitar encontrar erros.

  4. Recrie a partição federada.