Estruturas físicas de um banco de dados Oracle



    Um banco de dados deve ser capaz de armazenar informações de forma permanente, segura e acessível de forma rápida. O banco de dados Oracle é extremamente estável e pode ser usado em ambiente Unix ou Windows. Devido à sua robustez é indicado para trabalhar com grande volume de informações. Este banco de dados é composto por estruturas físicas e lógicas. Neste post falarei sobre as estruturas físicas.

Estruturas físicas

    Estas estruturas podem ser vistas dentro do HD por meio de consultas. Um datafile (arquivo .dbf) é uma estrutura física de armazenamento. Os datafiles compõem as tablespaces e a soma dos seus tamanhos é o total de tamanho da tablespace. As unidades físicas são transparentes principalmente para os usuários, ou seja, o usuário geralmente não sabe em qual arquivo físico (.dbf) os dados estão alocados. Geralmente os datafiles armazenam os dados inseridos pelos usuários. 

    Outra estrutura física é o controlfile que é responsável pelo controle de funcionamento da base dados Oracle. Toda base de dados Oracle deve possuir pelo menos um controlfile, podendo chegar ao máximo de oito. Caso exista mais de um, servirão para redundância, pois as informações serão as mesmas. Os controlfiles fornecem informações para startup ou para shutdown, informando se os dois processos foram executados de maneira correta e síncrona. Os controlfiles também informam a localização dos datafiles para que o banco de dados possa ser aberto, além de armazenar informações como o nome do banco, data e hora de criação e o último checkpoint ocorrido com os datafiles.

    Existem também os Redo Log Files (redologs) que armazenam as transações executadas e confirmadas com commit. O objetivo é permitir a maior recuperação de dados comitados. São o log de transações do banco de dados. Quando executamos um commit, os dados permanecem em memória, pois o acesso a ela é mais rápido do que o acesso a disco. Sendo assim, os dados comitados são gravados também nos Redo Logs para serem usados na recuperação em caso de perdas antes da sincronização com os datafiles.

    Como os arquivos redolog funcionam de maneira circular alternando entre 3 arquivos, sendo que os dados são sobrescritos em determinado momento. Para evitar perda de dados, podemos colocar o banco de dados em modo Archive, onde um arquivo é gerado com a cópia dos redo a cada mudança de arquivo. O arquivo de Archive não é obrigatório no Oracle, porém é amplamente utilizado em ambientes de produção.

Unidades físicas

Os arquivos físicos podem ser armazenados de duas formas diferentes:

  • FILE SYSTEM (Sistema Operacional): é a opção padrão. O Oracle faz uma requisição para a gravação de arquivos ao SO, que gerencia através do seu Gerenciador de Volumes e grava em seu sistema de arquivos, que por sua vez, avisa ao Oracle que a gravação foi realizada.
  • ASM (Automatic Storage Management: Nesta configuração o Oracle controla o acesso aos seus arquivos, sem passar pelo sistema operacional. O SO não conhece os volumes que o Oracle gerencia, e nem sabe que existem arquivos no espaço em disco destinado ao Oracle. Essa configuração evita que as informações passem pelo SO, aumentando a performance do banco de dados.

Arquivos de parâmetros

São os arquivos lidos no momento que um banco de dados sobe, ou seja, no momento em que ele fica operacional. São exemplos de parâmetro a quantidade de memória, parâmetros de sessão, etc. Estes parâmetros estão divididos em dois tipos de arquivo:

  • SPFILE: A instância do banco de dados lê esse arquivo no momento da inicialização. Esse arquivo é binário e deixa os parâmetros persistentes.
  • PFILE: É um arquivo idêntico ao SPFILE, porém é um arquivo texto e pode ser editado manualmente pelo usuário.

Um exemplo prático para facilitar o entendimento é imaginar que necessite realizar um teste de performance no banco de dados e ao invés de subir o banco com os 40% de memória padrão que o Oracle utiliza, você queira utilizar 60% da memória disponível na máquina. Ao invés de tornar o parâmetro permanente no SPFILE, posso apenas editar o PFILE e mandar o banco iniciar lendo o PFILE. Desta forma, na próxima vez que o banco iniciar, o banco lerá o SPFILE que não terá armazenado o parâmetro.

Há dois tipos de parâmetros:

  • Estáticos - necessita reinicialização
  • Dinâmicos - maioria dos parâmetros

Escopos:

  • Na memória - é alterado automaticamente, para isso necessita ser dinâmico (Scope = Memory)
  • Na reinicialização - Alteração válida somente após reinicialização e não vai estar em memória. Por mais que seja dinâmico, não desejo fazer no mesmo momento (Scope = SPFILE)
  • No mesmo momento e persistente - devo trabalhar com um parâmetro dinâmico e deixar sem escopo, pois ele tratará como padrão (Scope = Both)

Outros arquivos

  • Passwordfile: Arquivo de senhas criptografadas para autenticação no banco de dados. Muito útil para conexões lentas ou situações em que se deseja acessar remotamente o banco de dados.
  • Arquivos de Backup: Geralmente compostos de DBFs, controlfiles, archivelogs e os arquivos de inicialização.
  • Arquivos de Log: São os arquivos TRACE, ou .trc, que servem para monitorar o banco de dados. São arquivos de sistema.
  • Arquivos de Alerta: Alert Logs, são arquivos de alerta automáticos de todas as situações que ocorrem nos bancos de dados. Devem ser verificados com frequência.

Referências

Mafra, Felipe. O curso completo de banco de dados e SQL, sem mistérios! Disponível em: <https://www.udemy.com/course/bancos-de-dados-relacionais-basico-avancado/>

Comentários

Postagens mais visitadas deste blog

Como utilizar Tag Prefix WinCC Professional

TUTORIAL: Criando WinCC Tags a partir de documentos de texto utilizando script em Python

Utilizando interfaces, inversão de controle e injeção de dependências em programação - Um exemplo em C#