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.
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
Ao criar uma partição federada, agende operações offline quando as consultas não forem permitidas na instância.
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.
/etc/httpd/conf.d/00_base.conf:ProxyTimeout 1260
/etc/httpd/conf.d/00_base.conf:Timeout 1260
olap.server.netRetryCount
como 9000.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.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:
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.
Certifique-se de que as alterações da estrutura foram concluídas no cubo do Essbase.
Crie novamente a tabela de factos. Consulte Criar a Tabela de Factos.
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.
Recrie a partição federada, conforme descrito em Criar uma Partição Federada.
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.
ssh para o host do Essbase Server como o utilizador opc.
ssh -i MPOCI_KEY.pem opc@100.xxx.xxx.xxx
Altere para o utilizador oracle (e aceda ao respetivo diretório principal).
sudo su - oracle
Navegue até ao diretório da aplicação.
cd /u01/data/essbase/app
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.
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
Conte o número de caracteres (appx) no nome da aplicação.
Exemplo: appx = 6.
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
Conte o número de caracteres (dby) no nome do cubo.
Exemplo: dby = 5.
Crie o Prefix como:
ESSAV_<appx><AppName>_<dby><DbName>_
Exemplo:
<Prefix> = ESSAV_6Sample_5Basic_
Ao utilizar o SQL Developer ou outra ferramenta, ligue à Oracle Database como o utilizador do schema ao qual a Partição Federada está ligada.
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_%';
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; /
Suprima e atualize as tabelas relacionadas com metadados associadas. Primeiro, precisa de obter valores para ESSBASE_INSTANCE_UNIQUE_ID e OTL_ID.
ssh para o host do Essbase Server como o utilizador opc.
ssh -i MPOCI_KEY.pem opc@100.xxx.xxx.xxx
Altere para o utilizador oracle (e aceda ao respetivo diretório principal).
sudo su - oracle
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.
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
Ao utilizar o SQL Developer ou outra ferramenta, ligue à Oracle Database como o utilizador do schema ao qual a Partição Federada está ligada.
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';
A consulta acima deverá devolver o valor de OTL_ID; por exemplo,
62
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; /
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
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.
Recrie a partição federada, conforme descrito em Criar uma Partição Federada.
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.
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,
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).
Efetue cópia de segurança da tabela de factos. Consulte Efetuar Cópia de Segurança e Repor o Autonomous Database.
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,
Recrie a aplicação utilizando LcmImport: Repor Ficheiros do Cubo (ou a tarefa Importar LCM na interface web do Essbase).
Se necessário, reponha a tabela de factos no Autonomous Data Warehouse.
Recrie a ligação ao Autonomous Data Warehouse. Recomenda-se a utilização de um novo nome de ligação para evitar encontrar erros.
Recrie a partição federada.