Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como coletar dados da partição INMEMORY?


O processo IMCO (Inmemory Coordinator) ativa a cada dois minutos e verifica se alguma tarefa de preenchimento precisa ser concluída. Portanto, consultar uma tabela imediatamente após habilitá-la para inmemory não garante que a consulta seja atendida a partir de inmemory.

Os objetos são preenchidos no armazenamento da coluna de mensagens instantâneas em uma lista priorizada imediatamente após a abertura do banco de dados ou após as tabelas serem verificadas (consultadas) pela primeira vez.

Por exemplo, se habilitarmos a tabela tab1, tab2, tab3 para inmemory:
alter table tab1 inmemory priority medium;
alter table tab3 inmemory priority high;
alter table tab2 inmemory priority critical;

Essas tabelas entram na memória quando:
  1. O processo IMCO pega essas tabelas e as carrega na área de memória (na ordem de prioridade mais alta para a mais baixa:tab2, tab3 e tab1)
  2. Se realizarmos uma consulta de seleção em qualquer uma das tabelas (exemplo:select * from tab1 ) antes do início do processo IMCO (a cada 2 minutos)

Para saber se uma tabela/partição está carregada completamente na memória você pode consultar v$im_segments veja como a seguir:
select owner, segment_name, partition_name, segment_type, bytes, 
bytes_not_populated, populate_status from v$im_segments;

Então, respondendo sua pergunta:
  1. Certifique-se de que a tabela seja carregada na memória consultando v$im_segments
  2. Se a tabela não estiver carregada, selecione a consulta para torná-la carregada na área de memória
  3. Obter plano de consulta para a consulta selecionada na tabela, deve mostrar INMEMORY como parte do plano

Verifique este documento para mais detalhes.