Banco de Dados - Oracle

Oracle arquitetura e seus componentes

Nesta coluna de estréia voltada a banco de dados Oracle, vou descrever apenas uma parte (do que vem ai mais pra frente) sobre a estrutura lógica e física.

por Márcio Novelli



Em primeiro lugar queria agradecer ao Marcio por ter dado um voto a mim e por mais uma vez eu poder mostrar o que eu sei sobre Oracle e passar para os leitores. Um banco de dados moderno, complexo e muito bem estruturado apesar de poucos terem acesso a ele.

Nesta coluna de estréia voltada a banco de dados Oracle, vou descrever apenas uma parte (do que vem ai mais pra frente) sobre a estrutura lógica e física, espero que todos gostem.

ORACLE ARCHITECTURE COMPONENTS

O Servidor oracle é composto pela instância oracle e por um banco de dados oracle. O servidor oracle consiste num espaço de memória na SGA (System Global Área). Toda instância tem sua própria sga. Quando uma instância é iniciada, é alocado um espaço de memória na sga e compartilhada. Sga não pode ter swapped e nem pode ser paginado. A finalidade da sga é armazenar dados na memória para acesso rápido.

A sga consiste em um grupo de estrutura de memória. São eles: Redo Log Buffer, Shared Pool e Database buffer cachê. Você pode exibir através do comando: show sga. O Pool Compartilhado (Shared Pool) é utilizado pra armazenar informações como as instruções sql executadas mais recentemente.

O cache de buffer de banco de dados (Database Buffer Cachê) armazena os dados do usuário utilizados mais recentemente. Este cachê contém a lista de gravação (dados modificados, mas não gravados no disco) e a lista de gravação lru (least recently used). Lru - buffer sujos, retidos (atualmente em uso), buffers livres.

O Buffer de redo log (Redo log buffer) é utilzado paa registrar alterações feitas no banco de dados. Nas versões anteriores a oracle 9, o sga era estático configurado nos valores baseados no arquivo de parâmetro init.opra. No oracle 9 a sga pode ser expandida ou compactada enquanto está sendo executada.

A sga dinâmica permite que os tamanhos das estruturas de memória sejam alterados sem desativar a instância. A infra-estrutura dinâmica permite definir os limites sobre a memória física sobre a sga, você pode definir o tamanho até a qual a sga pode crescer utilizando o parâmetro SGA_MAX_SIZE.

Neste tópico você conheceu as estruturas de memória da sga, com elas a sga armazena dados e controla as informações de um banco de dados oracle.

Uma instância oracle consiste na sga e um conjunto de processo de segundo plano. Quando uma instância é iniciada, o banco de dados cria um processo de segundo plano necessário para atender as solicitações de usuário concorrentes.

Processos de segundo plano

Os processos de segundo plano são processos do sistema operacional. Toda instância oracle pode utilizar mais de um processo de segundo plano com base na configuração de um servidor oracle. Cinco desses processos são obrigatórios para cada instância são eles: DBWn ( Data base write ), LGWR (Log Write), SMON (System Monitor) , PMON (Process Monitor), CKPT (Checkpoint).

DBWn (Database Writer) - O processo servidor registra alterações em blocos de undo e de dados no cachê de buffer do banco de dados. Grava os buffers sujos do cachê de buffer do banco de dados nos arquivos de dados. Essa estratégia garante que um número suficiente de buffers livres esteja disponível no cachê de buffer do banco de dados.

O DBWN grava quando ocorre um checkpoint, os buffers sujos atingem o limite, na há buffers livres, ocorre um timeout, tablespace offline e read only, tablespace begin backup.

LGWR (Log Writer) - Executa gravações seqüencial do buffer de redo log no arquivo de redo log on-line quando: uma transação é submetida a commit, quando um-terço do buffer é submetida a commit, quando há mais de 1mb de alterações registrado no buffer de redo log.

Como o redo é necessário para a recuperação, o LGWR confirma a operação de commit somente após a gravação do redo em disco.

SMON (System Monitor) - Quando ocorre uma falha na instância Oracle, as informações contidas na Sga que não foram gravadas em disco serão perdidas. Por exemplo, uma falha no sistema operacional provoca uma falha na instância. Após a perda da instância, o processo de segundo plano smon recupera automaticamente a instância quando o banco é reaberto.

A recuperação de uma instância consiste em rollforward os dados não foram gravados no disco devido a perda da sga, o smon lê o arquivo de redo log on-line e aplica as alterações registradas nos arquivos aos blocos de dados.

Abertura do banco de dados para que os user possam efetuar logon

Rollback de transação não submetidas a commit. Essas transações são efetuadas pelo smon ou pelos processos individual do servidor à medida que eles acessam dados.

PMON (Process Monitor) - O Pmon faz uma limpeza após ocorrerem falhas em processos ele executa as sequintes ações :

Faz roolback da transação atual do user.
Listas bloqueios de tabela ou linha
Reinicializa dispatchers inativos

CKPT (Checkpoint) - Responsável por sinalizar o dbwn em checkpoints, atualizar as informações de checkpoint nos cabeçalhos dos arquivos de dados, atualizar as informações de checkpoint nos arquivos de controle.

A cada três segundos, o processo ckpt armazena dados no arquivo de controle para identificar o local (checkpoint) no arquivo de redo log on-line em que a recuparação deve começar .

Existem alguns processo de segundo plano opcional como por exemplo o ARCn (Archiver) processo de segundo plano que armazena os redo logs on-line quando modo ARCHIVELOG é definido

Embora seja essencial para recuperar um banco de dados após a perda de um disco. À medida que os arquivos de redo log on-line são preenchidos, o servidor oracle começa a gravar no próximo arquivo de redo log on-line. A este processo de troca de arquivo podemos denominar uma alternância de log.

OBS.: UMA DAS DECISÕES IMPORTANTE QUE UM DBA DEVE TOMAR É SOBRE CONFIGURAR O BANCO DE DADOS PARA OPERAÇÃO NO MODO ARCHIVELOG OU NOARCHIVELOG.

No modo noarchivelog, os arquivos de redo log on-line são sobregravados sempre que ocorre uma alternância de log. Dessa forma é possível recuperar os dados submetidos a commit. Se ouver uma falha de instância, somente a sga será perdida.

No modo archivelog, os grupos inativos de arquivos de redo log on-line preenchidos deverão ser arquivados antes que possam ser reutilizados. Geralmente um banco em produção numa empresa é configurado para execução no modo archivelog.

Abraços e até a próxima matéria (artigo, coluna) ...

Márcio Novelli

Márcio Novelli - Analista de Sistemas, Consultor Oracle 8i e 9i e chefe dos projetos do banco de dados Oracle pela empresa Walnut Telecomunicação e Informática LTDA - www.walnut.com.br. Bacharel em Ciência da Computação pela Universidade de Marília (UNIMAR). Especialização em Oracle 8i na Faculdade de Tecnologia IBTA (Instituto Brasileiro de Tecnologia Avançada - S.P). Certificado Introduction to Oracle9i: SQL Oracle9i Database Administration: Fundamentals I
Escreve artigos também para os sites da revista SQL Magazine (www.sqlmagazine.com.br), Portal Fire Masters (http://www.portalfiremasters.com.br/) e Freecode (www.freecode.com.br).