Página Inicial > Estudo > Arquitetura do Banco de Dados

Arquitetura do Banco de Dados

Acredito que para entender o funcionamento do Oracle, você, eu e todos nós, temos que entender a arquitetura dele, saber como funciona cada pedaço do Oracle.
O servidor de banco de dados Oracle, consiste em uma ou mais instancias + databases, podemos dizer que a instância são vários processos em background e na memória e os databases são formados pelo data files, control files, redo file, archive log, etc.

Observamos a imagem abaixo:

 

Toda essa parte em verde é a famosa SGA (System Global Area) – área responsável por compartilhar todos os processos do servidor e de background, compartilhando dados e informações de controle para a instância.

Dentro da SGA, encontramos database buffer cache, Redo Log buffer, Java pool, Streams Pool, Large Pool e Shared Pool. Ao lado vemos o PGA (Program Global Area), uma área privada de cada processo do servidor e de background, existe uma PGA para cada processo – O volume de memória PGA usada e de seu conteúdo varia se a instancia estiver configurado em modo de servidor compartilhado.

E na parte de baixo o famoso DATABASE (data files, Control files, Archive log, Online redo Log files), é onde fica fisicamente os arquivos no sistema operacional.

Como funciona:

Toda vez que uma instancia é iniciada uma área de SGA é alocada, os processos em background são iniciados e é montado o database. O próximo passo é o usuário se conectar na base, nesse momento ocorre a connection que é o processo do usuário se conectar na instancia, após este processo o usuário estabelece a session e neste momento ele interage com a instancia. A connection é feita com o User Process (do lado do usuário) e com o Server process (do lado do servidor).

Entendendo cada item:

Database Buffer Cache: esta parte do SGA contém blocos de dados que são lidos dos data files. Como a área é compartilhada qualquer usuário conectado simultaneamente, poderá utilizar estes blocos. A PRINCIPAL funcionalidade do database Buffer Cache é não deixar fazer O/I de disco.
Exemplo: Executei a instrução select e esta instrução nunca foi executada, ele busca os dados dentro do data file e irá te mostrar, se eu rodar novamente este mesmo select, ele não vai precisar ir até o data file, pois já estará na memória, ou melhor dizendo, dentro do bloco, no Database Buffer Cache. Lembrando que é qualquer instrução DML.
Exemplo 2: Fiz várias alteração dentro do servidor e essas informação estão ficando dentro do Database Buffer Cache, quando é que essas informação vão para o data files???? Aí que entra o processo chamado Database Write (DBw). Este processo irá realizar o trabalho de gravar os dados da memória para o data file.

Redo Log Buffer: Utilizada para registrar alterações feitas no banco de dados. A PRINCIPAL funcionalidade é de tornar possível refazermos uma determinada transação que possa ter sofrido algum tipo de problema.
Exemplo: Fizemos algumas alterações em uma tabela, adicionando alguns dados, quando dermos um commit (confirmando a alteração) essa informação deixa a área de Redo Buffer Log e vai para o Online redo log files. O processo responsável por transferir os dados para o Online redo log files é o LogWrite (LGWR).

Shared Pool – utilizada para armazenar o dicionário de dados, comandos executados recentemente de SQL e PL/SQL, cache de resultado da função, buffer de mensagens de execução paralela e estruturas de controle.

Os databases

Data files (arquivos de dados)

O banco de dados Oracle possui um ou mais data files, mais o que é isso ? Esse carinha é o que guardar os dados do banco de dados, os dados das estruturas das tablespaces (estrutura lógica) são fisicamente armazenados nos data files.

Control file (arquivo de controle)

É um pequeno binário que faz parte de um banco de dados Oracle. O control file é usado para rastrear o status do banco de dados e a estrutura física. Cada banco Oracle deve ter pelo menos um arquivo de controle. É recomendado criar mais de um control file, e utilizar a multiplexação (separar os arquivos em diferentes discos/partição), outra recomendação também é deixar o redo online também em diferentes discos. Desta maneira, você minimiza o risco em caso de falha  de disco.

Online Redo Log files

Permite uma recuperação de instância do banco de dados. Se o banco de dados travar e não perder arquivo de dados algum, a instância poderá recuperá-lo com as informações desses arquivos. A estrutura do redo online é física no banco de dados Oracle, é o responsável por tornar possível refazer (redo) uma transação que possa ter dado alguma indisponibilidade. Ele armazena informações de transações tanto as antigas e as novas.

Os processos em background

Database Write Process (DBWn)

O processo Database Write Process, escreve o buffer sujo (dirty) no cache do Database Buffer Cache para o data file. É gravado de forma assíncrona, periodicamente até o ponto de verificação.

LogWriter Process (LGWR)

Este processo é o responsável pela gestão do redo log buffer, escrevendo as entradas do redo Log Buffer no Online redo log files. É executado quando uma transação recebe o commit (confirmação), quando o buffer do redo log esta em usando 1/3 do total de espaço, a cada 3 segundo e antes do DBW escrever no buffer do data file.

Checkpoint Process (CKPT)

É um processo em background do Oracle que utiliza timestamps, que marca todos os datafiles e control files (usando o DBWn e LOGWR) para indicar um ponto de recuperação, em caso de falhas será possível a recuperação. A estrutura de dados define um número de modificações no sistema (SCN).

System Monitor Process (SMON)

Processo que executa a recuperação, se necessário na inicialização da instância. Também é responsável pela limpeza dos segmentos temporários, que não estão em uso e que estão aglutinando nas extensões próximas que estão livres dentro do dicionário.

Process Monitor Process (PMON)

O monitor de processo realiza o processo de recuperação, quando um processo do usuário falhar. É responsável pela limpeza do cache no buffer no banco de dados e libera recursos que o processo do usuário estava utilizando.
Exemplo: Você esta fazendo uma consulta no banco muito grande e de repente a sua máquina é desligada por falta de luz. O processo PMON irá verificar se a sua conexão esta ativa, se ela perceber que você perdeu a conexão, ela interrompe o processo que você estava fazendo.

Archiver Processes (ARCn)

Este processo copia os dados do redo log files e armazena dentro do Archived Log file, após o registro do switch. Só irá funcionar este processo de ARC se o banco de dados estiver no modo ARCHIVELOG mode e se o arquivamento estiver ativado automaticamente. Uma instancia oracle pode ter até 10 processos Arc. O processo LGWR inicia um processo Arc novo sempre que o número atual de processos Arc for insuficiente para lidar com a carga de trabalho.


Iai, gostaram do poste ? Conseguiram entender ? este poste foi dificl de escrever, é muita teoria e nada de pratica.

Tags:
  1. Gustavo
    30, maio, 2011 em 09:34 | #1

    Muito bom Willian..

  2. Andre
    15, julho, 2011 em 23:37 | #2

    olá prezado amigo eu gostei do forum sobre Oracle sabe , e por isso eu te faço um grande elogio nao deixe de ajudar as pessoas que gosta de Estudar com Ensinamentos simples esta bem ….

  3. Kelvin
    12, agosto, 2011 em 00:21 | #3

    Meus parabéns ótimo artigo bastante esclarecedor!

  4. 22, março, 2012 em 21:54 | #4

    Muito legal, parabéns pelo post..

    Encontrei no link abaixo uma descrição sobre o conceito do banco de dados Oracle tbm..

    http://solucoes4us.blogspot.com.br/2012/03/oracle-estrutura-fisica-e-logica.html#more

    Abraços.

  5. Lucas
    29, março, 2012 em 15:27 | #5

    as explicações estão bem focadas, me ajudou bastante esclarecendo as minhas duvidas, parabéns !

  6. Gustavo
    13, agosto, 2012 em 14:51 | #6

    Muito Bom cara parábens as explicações foram muito claras .

  7. ana
    19, outubro, 2012 em 19:53 | #7

    Parabéns vc explicou claramente

  8. Marcio
    3, dezembro, 2012 em 11:48 | #8

    Parabéns!
    Boa matéria.

  9. Jorge Fernandes
    4, janeiro, 2013 em 15:16 | #9

    Muito bom o post, explica de maneira clara e direta o assunto. Parabéns pelo blog, sou novato no mundo Oracle e já li várias matérias aqui.

  10. Paulo
    14, março, 2013 em 21:20 | #10

    Muito bom. Bem explicado e separo.

  11. Junior
    28, março, 2013 em 22:23 | #11

    Parabéns, excelente artigo. Bastante esclarecedor.

  12. Isadora Pinto
    1, abril, 2013 em 19:41 | #12

    Seu poste ta apagado, cadê a lâmpada?

  13. altemir
    5, abril, 2013 em 12:04 | #13

    muito bom!!!

  14. Breno
    7, maio, 2013 em 22:08 | #14

    Parabéns pelo post
    Ficou muito claro !

  15. BRUNO
    31, dezembro, 2013 em 14:10 | #15

    Muito bom o post.
    Dica: Para melhor entendimento poderia colocar exemplos em todos os processos.

  16. André
    24, março, 2014 em 16:39 | #16

    Muito Bom… Parabéns

  17. Ruth Abreu
    14, junho, 2014 em 11:20 | #17

    Mto bacana mesmo. Parabéns!

  18. Felipe
    19, janeiro, 2015 em 14:50 | #18

    Parabéns! A melhor parte são os exemplos em cada item. Eles ajudam a ter a compreensão do processo.

  19. Decio
    5, fevereiro, 2015 em 13:35 | #19

    Esse site é fantástico, espetacular
    Parabéns

  20. Osvaldo Maria
    31, agosto, 2015 em 22:12 | #20

    Adorei o artigo…. muito elucidativo.

  21. RicardoCarmo
    21, outubro, 2015 em 17:18 | #21

    Ótimo site William, você esta de parabéns cara!

  22. Luciano
    1, novembro, 2015 em 08:43 | #22

    Show de bola! Parabéns! Continue escrevendo!!!!

  23. Janete da Silva V Pereira
    13, novembro, 2015 em 08:38 | #23

    Gostei, nunca tinha lido nada sobre Oracle.

  24. Simone
    18, novembro, 2015 em 11:47 | #24

    Realmente muito esclarecedor, meus parabéns!!!

  25. Alex Sandro
    4, abril, 2016 em 17:03 | #25

    Excelente Parabéns…

  26. Anderson Carvalho
    15, junho, 2016 em 16:10 | #26

    Melhor explicação que encontrei até agora. Parabéns!

  1. Nenhum trackback ainda.