Oracle - Ciclo de vida dos cursores

Setembro 2017

A compreensão do ciclo de vida e do funcionamento dos cursores, ajuda a otimizar os aplicativos que executam as consultas SQL.

As etapas, na execução de um cursor, são :
  • Abertura de um cursor: uma estrutura de memória é alocada para o cursor na memória privada do processo do servidor, no servidor associado à sessão (UGA User Global Area). Observe que nenhum pedido SQL ainda foi associado ao cursor.
  • Percurso do cursor: um pedido SQL está associado ao cursor. A representação do percurso do pedido, incluindo seu plano de execução, que descreve como o motor de SQL executará o pedido SQL, é baixada no Shared Pool, mais precisamente, no cache de biblioteca. A estrutura na UGA é atualizada para armazenar um ponteiro para a área associada com o cursor, no cache da biblioteca.
  • Definição das variáveis de saída: o pedido SQL retorna os dados, razão pela qual as variáveis alojadoras devem ser definidas. Esta definição também é necessária para os pedidos "Delete", "Insert" e "Update", que utilizam a cláusula "RETURNING".
  • Ligação das variáveis de entrada: se o pedido SQL usa variáveis associadas, elas devem ser fornecidas. Nenhuma verificação é feita durante a ligação. Se valores inválidos forem transmitidos, um erro de execução será acionado.
  • Execução do cursor: nesta fase, os pedidos SQL são executados. Dependendo do motor do banco de dados, a fase de execução efetiva pode ser diferida para a fase de Fetch.
  • Fetch do cursor (recuperação do conteúdo): se o pedido SQL retornou um resultado, é nesta fase que ele é recuperado. Em geral, é nesta fase que o processamento é realizado.
  • Fechando o cursor: os recursos associados ao cursor na UGA são, automaticamente, liberados. O cursor no cache da biblioteca não é excluído para atender possíveis utilizações futuras.


A imagem abaixo ilustra o ciclo de vida de um cursor.





Tradução feita por Lucia Maurity y Nouira

Veja também

Artigo original publicado por wjaouadi. Tradução feita por pintuda. Última modificação: 26 de março de 2012 às 21:52 por pintuda.
Este documento, intitulado 'Oracle - Ciclo de vida dos cursores', está disponível sob a licença Creative Commons. Você pode copiar e/ou modificar o conteúdo desta página com base nas condições estipuladas pela licença. Não se esqueça de creditar o CCM (br.ccm.net) ao utilizar este artigo.