Ola pessoal, novamente estou aqui para falar de um recurso muito interessante do OBIEE.
O cache é um recurso importante para melhorar o tempo de resposta nas consultas do OBIEE, quando ativado, todas as consultas realizadas no banco são armazenadas no servidor do obiee em arquivos chamadas de entradas de cache, com os dados desta consulta. Quando a mesma consulta é feita novamente o OBIEE não acessa o banco novamente, ele utiliza as entradas de cachê para retornar o resultado.
Para ativar o cache é necessário realizar os seguintes passos:
Ativar o cache nas próprias tabelas da camada física, uma a uma.
Aqui temos as seguintes opções:
Cache nunca expira
Selecionando esta opção, as entradas de cache não expiram mais para esta tabela. É útil quando a tabela é importante para um grande número de consultas, por exemplo, uma tabela de CEP que seja muito utilizada,. Mantê-la em cache indefinidamente pode melhorar o desempenho destas consultas.
Porem esta escolha significa que o cache desta tabela permanecerá sempre válido, somente uma intervenção manual como alterações na sua estrutura na camada semântica ou o uso de uma tabela de Event Pooling (veremos mais a frente) pode invalidar as entradas deste cachê.
Cache persistente por tempo
Define quanto tempo às entradas de cache devem persistir, antes de expirar, em outras palavras, o cache é invalidado após um determinado tempo definido pelo usuário.
Esta definição é útil em tabelas que são atualizadas com muita frequência.
Alem disto é necessário ativar no Servidor o serviço responsável pelo gerenciamento deste cache. Isto é feito através do Enterprise Manager em Business Intelligence > coreapplication > Gerenciamento de Capacidade > Desempenho
Click em Bloquear para Edição e ative o cache , aqui é possível definir o tamanho máximo deste cache, e a quantidade máxima de entradas.
Ative as alterações e reinicialize os serviços para que o cache seja ativado. As entradas de cache são geradas no servidor do BIEE no diretório:
%ORACLE_HOME%/instances/instance1/bifoundation/OracleBIServerComponent/coreapplication_obis1/cache
O problema é que muitas vezes é necessário ter um controle maior sobre as atualizações destas entradas de cache, neste caso é necessário implementar o Event PollingTable.
O servidor do Oracle BI utiliza uma tabela de eventos como uma maneira de ser notificado que uma ou mais tabelas na camada física foram atualizadas. Ou seja, cada linha que é adicionada nesta tabela de eventos determina um evento único de atualização em uma determinada tabela da camada física.
O Oracle BI Server lê estas linhas, verifica que uma determinada tabela física foi atualizada recentemente e invalida todas as entradas de cache que fazem referencia a esta tabela.
Desta forma é possível incluir no final do seu processo de ETL, por exemplo, um procedimento de carga desta tabela de eventos, indicando quais tabelas da camada física foram atualizadas ou recarregadas.
O Oracle BI Server irá verificar esta tabela de tempo em tempo (período determinado por você) se alguma tabela da camada física foi atualizada e invalida ou não o cache.
Vamos utilizar em nosso exemplo a tabela COUNTRIES do schema HR.
Com o cache ativado, todos os relatórios em cima desta tabela serão executados pelo menos uma vez acessando diretamente o banco de dados e depois, nas próximas execuções, o acesso será feito em cache, melhorando assim a desempenho.
Vamos manter esta tabela com o cache nunca expira.
Para criar a tabela de evento vamos utilizar o script fornecido pela Oracle localizado no diretório do servidor de BI.
%ORACLE_HOME%/instances/instance1/bifoundation/OracleBIServerComponent/coreapplication_obis1/schema/ SAEPT.Oracle.sql
O conteúdo deste script é:
drop table S_NQ_EPT ;
create table S_NQ_EPT (
UPDATE_TYPE DECIMAL(10,0) DEFAULT 1 NOT NULL,
UPDATE_TS DATE DEFAULT SYSDATE NOT NULL,
DATABASE_NAME VARCHAR2(120) NULL,
CATALOG_NAME VARCHAR2(120) NULL,
SCHEMA_NAME VARCHAR2(120) NULL,
TABLE_NAME VARCHAR2(120) NOT NULL,
OTHER_RESERVED VARCHAR2(120) DEFAULT NULL NULL
) ;
Esta tabela deve ser mapeada na camada física do OBIEE.
Ativar evento de atualização de Cache no Administrator do BIEE
Em Tools > Utilities > Oracle BI Event Tables – Selecionar a tabela de eventos e vamos setar a frequência em intervalos de 10 minutos., ou seja de 10 em 10 minutos o Oracle BI Server verificará a tabela de eventos.
Confirme e salve as alterações.
O ícone da tabela muda, identificando que é uma tabela de eventos.
Vamos inserir uma linha nesta tabela, identificando que a tabela COUNTRIES foi atualizada.
Após o próximo intervalo configurado o Oracle BI Server pesquisa a tabela de eventos e limpa as entradas de cache referente à tabela COUNTRIES.
É possível verificar isto no diretório abaixo:
%ORACLE_HOME%/instances/instance1/bifoundation/OracleBIServerComponent/coreapplication_obis1/cache
A entrada na tabela de eventos S_NQ_EPT também é truncada após o intervalo de pesquisa.
Usando uma tabela de eventos é a maneira mais precisa par a invalidar as entradas de cache obsoletos, provavelmente o método mais confiável. No entanto como existe um intervalo de pesquisa definido na configuração, existe o risco ainda de o cache não estar totalmente atualizado durante este intervalo, ocasionando o risco de dados obsoletos serem consultados.
Até a próxima..
Alan