[ RDBMS ]

Arquitetura 

Ok... Hoje vamos falar sobre estrutura de memória.... mas antes temos que ver alguns pontos importantes da arquitetura Oracle, mas estas palavra iniciais é para mostra para você o gif que eu fiz para falar-mos sobre estrutura de memória, veja :

Não ficou legal ...??? :)))  Bem.... agora vamos ao nosso estudo.

 
  1. Importância da Arquitetura
  2. O que é um Banco de Dados?
  3. Arquivo de Dados
  4. Dados de Usuário e Dados de Sistema
  5. Tablespaces
  6. Registros de Redo
  7. Arquivos de Controle
  8. Programas
  9. Processos de Suporte de Banco de Dados
  10. Estrutura de Memória
  11. Instância do Oracle

Importância da Arquitetura
O conhecimento da arquitetura interna do ORACLE7 é de extrema importância para a compreensão do produto. Entretanto, essa não é uma tarefa para apenas dos administradores de banco de dados. Todos os desenvolvedores também devem conhecê-la para escreverem sempre a melhor aplicação. Entretanto, um DBA precisa dominar profundamente toda a arquitetura do ORACLE7, pois lidará diariamente com essas informações que lhe são cruciais. Dentre todo os usuários de um banco de dados, uma ou mais pessoas devem responsabilizar-se pelas tarefas de administração. Naturalmente, esse deve ser um grupo restrito, pois irão controlar e administrar todo o banco de dados. A tarefa de escolher o melhor perfil profissional é ingrata. Entretanto, um DBA deve conhecer muito bem o ambiente do sistema operacional suportado pelo ORACLE7, suas instalações.

O que é um Banco de Dados?
Um banco de dados é um conjunto de arquivos de dados e o software que o manipula.

Arquivo de Dados
Os arquivos de dados contêm todos os dados de um banco de dados. O banco de dados Oracle é constituido de um ou mais arquivos de dados em disco, usados para fisicamente armazenar os dados das estruturas lógicas.

Os arquivos de dados podem ser associados a somente um banco de dados e, uma vez criados, não podem ter o seu tamanho alterado. Um ou mais arquivos de dados formam uma unidade lógica de armazenamento de dados chamada tablespace. Os arquivos de dados são lidos sempre que necessário durante as operações feitas em um banco de dados e seus dados são mantidos sempre que possível em memória, para minimizar o I/O.

Dados de Usuário e Dados de Sistema
Dois tipos de dados ou informações são armazenados nos arquivos de dados associados a um banco de dados: dados de usuários e dados do sistema.

Os dados do usuário são os dados de seu aplicativo, com todas as informações a ele relevantes. Essa é a informação que sua instituição armazena no banco de dados. (informação de agências/clientes, informação de pesquisas, informações financeiras).

Os dados de sistema são a informação que o banco de dados precisa para  gerenciar os dados de usuário e a si mesmo. (informações sobre as tabelas: campos da tabela, tipo de informação; quantidade de espaço físico que os objetos do banco de dados ocupam, informações sobre usuários: nomes, senhas, privilégios; informações sobre os arquivos de dados: número, localização, hora da última  utilização; integridade referência entre objetos).

Tablespaces
Como um banco de dados é um conjunto de arquivos de dados, é muito importante que você entenda como um banco de dados Oracle agrupa esses arquivos. Ele faz isso sob a proteção de um objeto de banco de dados chamado tablespace. Antes de inserir dados dentro de um banco de dados Oracle, primeiro você deve criar um tablespace e depois uma tabela dentro deste tablespace para conter os dados, então, uma tablespace é usada para agrupar outras estruturas lógicas relacionadas entre si.

O tamanho combinado dos arquivos de dados que formam uma tablespace ditam a sua capacidade de armazenamento. A combinação da capacidade de armazenamento de todas as tabespaces que formam um banco de dados forma a capacidade total de armazenamento desse banco de dados.

Uma tablespace pode estar acessível (on-line) ou não (offline), geralmente permanece on-line, disponível para os usuários. Entretanto para algumas tarefas administrativas ou em algumas situações especiais, é possível deixá-las offline.

Portanto, os dados de um banco de dados Oracle estão armazenados logicamente em tablespace e fisicamente nos arquivos de dados associados as tablespaces correspondentes. As tablespaces são usadas para:
 

O administrador de banco de dados pode criar novas tablespace, adicionar e remover arquivos de dados, configurar e alterar os parâmetros de armazenamento para os segmentos criados em uma tablespace e, naturalmente, pode removê-las sem maiores problemas.

Nomes de tablespace e conteúdo
Em um típico banco de dados existem algumas tablespaces padrões, mas lembre-se os nomes aqui discutidos são apenas uma cinvenção; não é obrigatório que o DBA da sua instituição os utilize. A função principal dos tablespaces  é ajuda-lo a organizar seu banco de dados.

Tablespace System
O tablespace system é uma parte obrigatória de todo banco de dados Oracle. É onde o Oracle armazena todas as informações necessárias para o gerenciamento, como os nomes dos tablespaces e o que os arquivos de dados de cada tablespace contêm.

Tablespace Temp
O tablespace temp é onde o Oracle armazena todas as suas tabelas temporárias. É o quadro branco ou papel de rascunho do banco de dados. No caso de um banco de dados muito ativo, você pode ter mais de um tablespace temporário.

Tablespace Tools
O tablespace tools é onde você armazena os objetos de banco de dados necessários para suportar as ferramentas usadas com o banco de dados, como o SQL*PLUS, assim como qualquer aplicativo Oracle o SQL*PLUS precisa armazenar tabelas no banco de dados.

Tablespace Users
O tablespace users contém informações pessoais dos usuários.

Tablespace de Dados e de Índice
Daqui em diante, tudo pode acontecer. Em algumas instalações, você verá nomes de tablespace como: DAT01, DATA02 e DATA3, que representa diferentes locais para conter dados; em outras, poderá ver o nome fazendo referência a projetos como : prossiga, doutorado, mestrado, etc.

Tablespace de Reconstrução
Todos os banco de dados Oracle precisam de um local para armazenar informações a desfazer. Esse tablespace, que contém seus segmentos de reconstrução, normalmente se chama rollback (rbs). Uma das principais razões para você usar um sistema de gerenciamento de banco de dados como o Oracle é sua capacidade de recuperar transações incompletas ou abortadas como parte da funcionalidade do núcleo.

Registros de Redo
Além dos arquivos de dados associados a um tablespace, o Oracle tem outros arquivos de sistema operacional associados, chamados de registro de redo on-line. Outro nome comum para os registros de redo é registros de transação. Eles são arquivos especiais de sistema operacional em que o Oracle resgistra todas as alterações ou transações que acontecem no banco de dados. Quando são feitas mudanças no banco de dados, essas alterações ocorrem na memória. O Oracle manipula essas alterações na memória por razões de desempenho. Uma E/S de disco e mil vezes mais lenta do que uma ação na memória. Como uma cópia de todas as transações é sempre gravada nos registros de redo on-line, o Oracle pode levar tempo gravando no arquivo de dados original as mudanças nos dados que ocorreram na memória. Finalmente, a última cópia da alteração nos dados é gravada no arquivo de dados físicos. Como todas as transações são gravadas nos registros de redo on-line, o banco de dados sempre pode ser recuperado a partir desses registros de transação. É obrigatório que todo banco de dados Oracle tenha pelo menos dois registros de redo on-line.

Como funciona os registros de redo
Os registros de redo funcionam de modo circular. Digamos que você tenha um banco de dados com dois registros de redo on-line, log1 e log2. À medida que as transações criam, eliminam e modificam os dados no banco, elas são gravadas primeiro no log1. Quando o log1 está cheio, ocorre uma troca de registro. Então, todas as novas transações são gravadas no log2. Quando o log2 fica cheio, ocorre outra troca de registro e novamente as transações são gravadas no log1.

Isso nos leva a discução de como o banco de dados Oracle roda no modo ARCHIVELOG ou NOARCHIVELOG, e isso tem uma correlação direta com os registros de redo on-line.

Modo ARCHIVELOG: Recuperabilidade completa
Quando um banco de dados está rodando no modo ARCHIVELOG, todos os registros de redo de transação são mantidos. Isso significa que você tem uma cópia de cada transação executada no banco de dados; assim, mesmo os registros de redo funcionando de modo circular, é feita uma cópia do registro de redo antes de ele ser sobrescrito. No caso de o banco precisar trocar antes de a cópia ser feita, Oracle será congelado até que essa ação tenha terminado. O Oracle não permitira que a transação antiga seja sobrescrita até ter uma cópia dela. Tendo uma cópia de todas as transações, o banco de dados pode agora proteger você contra todos os tipos de falha, incluindo erros de usuário ou falha de disco. Esse é o modo mais seguro de rodar um banco de dados.

Modo NOARCHIVELOG
Quando um banco de dados está rodando no modo NOARCHIVELOG (o padrão), os registros de redo antigos não são mantidos. Como nem todos os registros de transação são mantidos, você só está protegido de eventos como falta de energia (não se esqueça que o preechimento de um registro o faz ser trocado, quando ele circula em torno do original, a informação anterior é perdida).

Arquivos de Controle
Todo banco de dados deve ter pelo menos um arquivo de controle, embora seja altamente recomendável que você tenha dois ou mais. Um arquivo de controle é um arquivo muito pequeno que contém informações importantes sobre todos os arquivos associados a um banco de dados Oracle. Os arquivos de controle mantêm a integridade do banco de dados e ajudam a identificar quais registros de redo são necessários no processo de recuperação. Antes que o banco de dados possa começar a rodar, ele passa pelo arquivo de controle para determinar se está em forma aceitável, se alguma falha for detectada durante a inspeção o banco não inicializa até que o problema seja corrigido.

Programas
Agora é hora de discutirmos os programas, que vamos chamar de processos, sempre que um programa é inicializado no banco de dados, ele se comunica com o Oracle através de um processo. Existem dois tipos de processos Oracle que você deve conhecer:

Processos do usuário (cliente)
Os processos de usuário trabalham para você, solicitando informações dos processos de servidor. Exemplo de processo de usuário são o Oracle Forms, Oracle Reports e o SQL*PLUS.

Processos de servidor
Os processos do servidor pegam os pedidos dos processos de usuário e se comunicam com o danco de dados. Através dessa comunicação, os processos de usuário trabalham com os dados do banco de dados.

Processos de Suporte de Banco de Dados
Conforme foi visto, os processos de servidor pegam os pedidos dos processos de usuário e se comunicam com o banco de dados em nome dos processos de usuário. Vamos discutir sobre um conjuto especial de processos de servidor que ajuda o banco de dados funcionar.

Escritor de banco de dados
O escritor de banco de dados (dbwr - database wuiter) é um processo obrigatório que registra os blocos da dados alterados nos arquivos do banco de dados. Ele é um dos dois únicos processos que permitem escrever nos arquivos de dados que constituem o banco de dados Oracle.

Ponto de controle
Ponto de controle (chpt - checkpoint) é um processo opcional. Quando os usuários estão trabalhando com o Oracle, eles fazem os pedidos de procura de dados. Os dados são lidos doas arquivos do banco de dados e colocados em uma área de memória onde os usuários podem vê-los. Eventualmente, alguns desses usuários fazem alterações nos dados, que devem ser regravados nos arquivos de dados originais. Você deve estar lembrado dos registros de redo e de como eles registram todas as transações. Quando o registro de redo se alteram, ocorre um ponto de controle. Quando essa troca acontece, o Oracle vai na memória e escreve as informações dos blocos de dados sujos de volta no disco. Além disso, ele notifica o arquivo de controle a respeito da troca de registro de redo.

Escritor de registro
O escritor de registro (lgwr - log write) é um processo obrigatório que escreve entradas de redo em registros de redo. Não esqueça que os registros de redo são uma cópia de cada transação que ocorre no banco de dados. Isso é feito para que o Oracle possa se recuperar de vários tipos de falha. Além disso, como uma cópia de cada transção é escrita em um registro de redo, o Oracle não precisa despender seus recursos constantemente, escrevendo alterações de dados de volta nos arquivos de dados imediatamente. Isso resulta em um desempenho melhor. O escritor de registro é o único processo que escreve nos registros de redo. Ele também é o único processo de um banco de dados Oracle que lê os registros de redo.

Monitor de sistema
O monitor de sistema (smon - system monitor) é um processo obrigatório que executa qualquer recuperação necessária na inicialização. No modo de servidor paralelo, ele também pode realizar recuperação de um banco de dados falho em outro computador.

Monitor de processo
O monitor de processo (pmom - process monitor) é um processo obrigatório que efetua a recuperação de um usuário falho do banco de dados. Ele assume a identidade do usuário falho, liberando todos os recursos do banco de dados que o usuário estava segurando, e reconstrói a transação abortada.

Arquivador
O arquivador (arch - archiver) é um processo opcional. Conforme vimos anteriormente, os registros de redo são escritos de modo seqüencial. Quando um registro é preenchido, há uma troca para o próximo registro de redo disponível. Quando você está rodando o banco de dados no modo ARCHIVELOG, ele faz uma cópia do registro de redo. Isso é feito para que, quando o banco de dados voltar para esse registro de redo, haja uma cópia do conteúdo desse arquivo para propósitos de recuperação. Essa é a tarefa do processo arquivador.

Bloqueio
O bloqueio (lck - lock) é um processo opcional. Quando você estiver rodando o banco de dados Oracle no modo de servidor paralelo, verá vários processos lck. No modo de servidor paralelo, esses bloqueios ajudam os bancos de dados a se comunicar.

Recuperador
O recuperador (reco - recoverer) é um processo opcional visto apenas quando o banco de dados está rodando a opção distribuída do Oracle. A transação distribuída é a em que duas ou mais posições dos dados podem ser mantidas em sincronismo.

Estrutura de Memória
O Oracle usa dois tipos de estrutura de memória: a área global de sistema (SGA) e a área global de programa (PGA). Os processos do cliente e do servidor comunicam-se através da estrutura de memória.
 
 


Área Global de Sistema
A área global de sistema (SGA - system global area) é um local na memória em que o banco de dados Oracle armazena informações pertinentes sobre si. Ele faz isso na memória, pois ela é o modo mais rápido e eficiente de permitir que os processos se comuniquem. Essa estrutura de memória é acessível para todos os processos de usuário e de servidor. Como a SGA é o mecanismo pelo qual os diversos processos de cliente e de servidor se comunicam, é importante que você entenda seus vários componentes.

Shared Pool Area e seus Buffers
A estrutura de memória compartilhada chamada shared pool area contém informações usadas para executar os comandos SQL. é formada pelos seguintes  buffers:

Shared SQL Área
Este buffer contêm:

O compartilhamento dos planos de execução dos diversos comandos no buffer shared SQL área, melhoram o uso da memória, uma vez que as definições dos comandos poderão ser compartilhadas entre as diversas aplicações. A memória também é dinamicamente ajustada de acordo com o conjunto de comandos SQL que são executados e a fase de Parse ou análise é resumida e o tempo de execução de um comando pode diminuir consideravelmente.

Data dictionary Cache
Este buffer contêm linhas com as informações do dicionário de dados.

Sequence Cache
E por fim, este buffer contêm informações sobre os geradores de número sequenciais utilizados pelos usuários.

Data Dictionary Cache
Uma cache de dicionário contém linhas do dicionário de dados. O dicionário de dados contém todas as informações que o Oracle precisa para se gerenciar, como quais usuários têm acesso ao banco de dados Oracle, quais objetos de banco de dados eles possuem e onde esses objetos estão localizados.

Database Buffer Cache
A cache de buffer de dados é onde o Oracle armazena os blocos de dados usados mais recentemente do banco de dados. Quando você coloca informações no banco de dados, elas são armazenadas em blocos de dados. A cache de banco de dados é uma área da memória na qual o Oracle coloca esses blocos de dados para que um processo de usuário possa vê-los. Antes que um processo de usuário possa ver os dados, estes devem residir inicialmente na cache de buffer de dado. Há um limite físico para o tamanho da cache de buffer de dados. Assim, quando o Oracle a preenche, ele deixa os blocos mais quentes na cache e retira os mais frios. Ele utiliza o algoritmo LRU para esta finalidade.

Redo log Buffer
Antes que qualquer transação possa ser gravada no registro de redo, primeiro ela deve residir no buffer de registro de redo. Essa é uma área da memória separada para esse evento. Então, periodicamente o banco de dados descarrega esse buffer nos registros de redo on-line.

Instância
Todas as vezes que o Oracle é inicializado, um grupo de buffers de memória denominado System Global Area (SGA) é alocado e alguns processos que permanecem em background são inicializados. A combinação desses buffers de memória e dos processos em background forma uma instância Oracle. Para que o banco de dados não se confunda, cada instância é identificada pelo que é conhecido como identificados de sistema (SID - system identifier). Na maioria dos computadores UNIX, ele é definido pela variável "ORACLE_SID".
 
 

Referência :


<=

http://www.absoluta.org      ---oOo---      verdade@absoluta.org

Copyright © 1998 - 1999  Verdade @bsoluta