Esse artigo faz parte da revistaSQL Magazine edição 65. Clique aqui para ler todos os artigos desta edição

le'>

De que se trata o artigo?
O artigo aborda a utilização de cursores em bando de dados Oracle.


Para que serve?
Apresentar os conceitos e pratica na utilização de cursores em banco de dados Oracle.

Em que situação o tema é útil?
Em grandes corporações, é muito comum a realização de processamentos automatizados onde na maioria das vezes esta operação fica encarregada de ser executada no bando de dados. O uso de cursores nestes processamentos tornar-se indispensável.

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.

Vale lembrar que, numa configuração de servidor em modo dedicado, cada sessão que se conecta ao banco de dados fará com que o Oracle crie um processo do servidor exclusivo para ela.


...

Quer ler esse conteúdo completo? Tenha acesso completo