Artigo SQL Magazine 65 - Cursores em Oracle
Artigo publicado Revista SQL Magazine 65.
Clique aqui para ler esse editorial em PDF
De que se trata o artigo? |
Para que serve? |
Em que
situação o tema é útil? |
Um cursor nada mais é que um resultado de uma consulta armazenado em memória no banco de dados, onde se é possível apenas navegar sobre as informações contidas neste resultado. É uma espécie de “conjunto de dados” onde o armazenamento fica restrito apenas em memória e não no disco rígido. Um cursor em Oracle é unidirecional, ou seja, só pode ser percorrido para frente. Para quem conhece Java, um cursor lembra um Resultset, para quem conhece Delphi, um Dataset e para quem conhece C#, lembra o Datatable. Um cursor em Oracle possui algumas propriedades (que veremos mais adiante) que facilitam a sua utilização. A vida útil de um cursor está restrita ao bloco de execuções onde ele está sendo utilizado. Veremos isso em mais detalhes nos tópicos seguintes.
Como um cursor se comporta dentro do Oracle?
Assim que conheci o cursor, confesso que não me preocupei em saber como ele funciona dentro do Oracle. Estava mais preocupado em utilizá-lo do que conhecer a sua engine até que um dia o DBA de uma empresa onde eu trabalhava notou um consumo excessivo de memória do servidor e, após uma série de investigações, descobriu que eu era o culpado. Tudo isso por usar o cursor de maneira inadequada e foi aí que eu decidi conhecer o seu funcionamento interno.
Um cursor quando aberto realiza uma consulta (select) no banco de dados e após isso armazena o resultado da consulta em uma área do Oracle conhecida como PGA (Program Global Area - Área Global de Programa)(Nota Devman 1). Além de armazenar o resultado da consulta, o cursor também guarda na PGA:
· O número de linhas obtido pela consulta.
· Uma referência da consulta na Shared Pool (Nota DevMan 2).
DevMan 1: PGA – Program Global Area
A PGA é uma região de memória não compartilhada que contém dados e informações de controle para um processo do servidor (Server Process).
A PGA é criada pelo Oracle quando um processo do servidor é iniciado e as informações nela contidas dependem da configuração do Oracle."
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo