Artigo SQL Magazine 13 - Introdução ao Oracle 9i – Parte II

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (0)  (0)

Veremos neste artigo a arquitetura do servidor Oracle.

capaSQL13.JPG

Clique aqui para ler todos os artigos desta edição

Introdução ao Oracle 9i – Parte II

Entendendo o Oracle Server

por Ricardo Rezende

Leitura Obrigatória: SQL Magazine 12, artigo Introdução ao Oracle 9i – Abordagem passo-a-passo.

 

Dando continuidade à introdução ao Oracle 9i, veremos neste artigo a arquitetura do servidor Oracle. Serão abordadas as estruturas físicas, lógicas, de memória e de processos que estão presentes na conexão, criação de sessões e na execução de instruções SQL. Muitos dos tópicos que veremos neste artigo são importantes e necessários para a criação de uma base de dados Oracle. Você notará que utilizamos muitos desses conceitos no passo-a-passo apresentado na edição 12. Boa leitura e bom divertimento.

Visão geral do Oracle Server

O servidor Oracle deve gerenciar de forma confiável e com alta performance uma grande quantidade de informações em um ambiente multiusuário com muitos acessos simultâneos. Deve também, dentre outras tarefas, evitar o acesso não autorizado ao BD e prover soluções eficientes e eficazes na recuperação por falhas de hardware ou software.

Para lidar com isto, o Oracle mantém uma série de arquivos, processos e estruturas em memória. Basicamente, um servidor Oracle (Oracle Server) é formado por dois componentes bem definidos. São eles:

·         Estrutura em memória: composta pela instância (Oracle Instance) e pela área global do programa (PGA – Program Global Area), e;

·         Banco de dados (Oracle DataBase).

 

A Figura 1 ilustra estes dois componentes e suas estruturas formadoras.

 

image002.jpg

Figura 1. Visão geral de um servidor Oracle.

Uma instância Oracle nada mais é do que a alocação de memória principal (RAM) feita pelo servidor Oracle para interagir com a estrutura física (arquivos em disco) e interface de usuário (Delphi ou SQL*Plus, por exemplo), juntamente com os processos em segundo plano (Process Monitor – PMON, System Monitor – SMON, Database Writer – DBWR, Log Writer – LGWR, Checkpoint – CKPT entre outros). Já o banco de dados é composto pela estrutura física dos arquivos no sistema operacional. Veremos a seguir cada um destes componentes em detalhe.

A instância

A instância é o mecanismo que o Oracle utiliza para gerenciar as requisições de usuário e o BD propriamente dito (arquivos físicos e sistema operacional) (Figura 1). Sempre que há uma interação com o banco de dados, é necessário que uma instância seja iniciada. Quando isso acontece, é alocada uma porção da memória conhecida como SGA (System Global Area – Área Global do Sistema) e os processos em segundo plano são “colocados no ar”. Uma particularidade da instância é que ela poderá acessar um e somente um banco de dados Oracle.

System Global Area – SGA

A SGA é usada para armazenar informações que são compartilhadas com os processos do BD. Ela contém dados e informações de controle utilizadas pelo servidor Oracle. A SGA é formada por várias subdivisões: Shared Pool (Pool compartilhado), Database Buffer Cache (Cache de Buffer de banco de dados), Redo Log Buffer (Buffer de Redo Log) e outras estruturas menores como estrutura de gerenciamento de trava e tranca (lock and latch), estrutura de dados estatísticos, etc.

A partir do Oracle 9i, a SGA passou a ser dinâmica, ou seja, pode-se alterar suas configurações sem a necessidade de finalizar a instância.

Shared Pool

Shared Pool é onde são armazenados os objetos compartilhados globalmente como os planos de execução de instruções SQL, pacotes PL/SQL, procedimentos, funções, etc. Pelo fato de armazenar estes objetos que interagem com o dicionário de dados ou com os objetos dos usuários (tabelas, índices, etc.), ela é dividida em duas áreas específicas (Figura 1):

·         Library Cache (Cache de biblioteca): é determinada de acordo com o tamanho da Shared Poll e é alocada quando uma instrução é compilada ou uma unidade de programa é chamada. Se a Shared Pool estiver configurada com um tamanho muito pequeno, as instruções serão recarregadas constantemente, comprometendo a performance. A Library Cache é dividida em outras duas áreas: a área de SQL compartilhado, que são todas as instruções SQL que podem ser usadas por qualquer sessão de usuário e a área de PL/SQL compartilhado que são as instruções da linguagem procedural compartilhadas pelas sessões. O gerenciamento do tamanho dessas áreas é feito pelo próprio servidor Oracle, cabendo ao DBA apenas configurar o tamanho da Shared Pool.

·         Data Dictionary Cache (Cache de dicionário de dados): trabalha de maneira semelhante a Library Cache, porém armazena informações sobre a estrutura do BD como os dados de contas dos usuários, nome dos arquivos de dados (data files), descrição das tabelas, privilégios dos usuários, entre outros.

 

A Shared Pool deve ser configurada para acomodar estas duas estruturas de maneira a evitar a repetição de compilação de instruções SQL, PL/SQL ou consultas a dicionário de dados. O tamanho da Shared Pool é determinado pelo parâmetro SHARED_POOL_SIZE. Ele pode ser alterado dinamicamente através do comando ALTER SYSTEM SET, como visto no exemplo abaixo, mas não pode ultrapassar o valor limite definido na SGA_MAX_SIZE.

SQL> ALTER SYSTEM SET SHARED_POOL_SIZE = 64M SCOPE=BOTH;

Somente através do acompanhamento do comportamento do BD é que se conseguirá definir precisamente o melhor valor para este parâmetro.

É importante salientar que podemos utilizar a opção SCOPE=BOTH para identificar que o escopo da alteração atinge tanto a memória quanto o arquivo de parâmetros do servidor. Assim, caso seja omitida a cláusula SCOPE a alteração não será persistente e, numa próxima reinicialização do BD será adotado o valor antigo do parâmetro. Ao utilizar a cláusula, o parâmetro é gravado no SPFILE e o novo valor será adotado em cada reinicialização. Um detalhe é que isso não altera o PFILE, que deve ser configurado manualmente através de um editor de textos.

Pode-se também recriar um PFILE considerando o SPFILE como origem. Para isso basta utilizar o comando abaixo:

CREATE PFILE='' FROM SPFILE;"

A exibição deste artigo foi interrompida :(
Este post está disponível para assinantes MVP

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?