domingo, 27 de março de 2016

ESTRUTURAS DE ARMAZENAMENTO

No banco existe uma abstração entre o armazenamento físico e o armazenamento lógico. O armazenamento lógico é feito em segmentos, um exemplo de segmento são as tabelas. Os segmentos são armazenados fisicamente em arquivos de dados, no disco. A abstração entre esses armazenamentos é feita pelas tablespaces, os relacionamentos entre as estruturas físicas e lógicas são mantidos no dicionário de dados.

As Estruturas Físicas


Os arquivos obrigatórios no banco de dados Oracle são: Arquivo de Controle (Controlfile), os Arquivos de Redo Log Online e os Arquivos de Dados (Datafile).
Os arquivos externos que normalmente estão presentes são: o Arquivo de Parâmetros de Inicialização, o Arquivo de Senha e os Arquivos de Redo Log Arquivados, além dos arquivos de log e de rastreamento.

Arquivo de Controle


É responsável pelos ponteiros para o restante do banco de dados: a localização do redo log online e dos arquivos de dados, e dos redo log arquivados mais recentes, se o banco estiver no modo archivelog. O arquivo de controle pode ser multiplexado, ou seja, pode ter várias cópias, essa é uma boa prática, a manutenção dos arquivos de cópia é o próprio banco que faz, você apenas definirá quantas cópias existirão.
Qualquer dano em qualquer cópia do arquivo de controle, fará com que a instância seja finalizada imediatamente. A Oracle não permite um banco funcionando com menor quantidade de arquivos de controle do que o que foi definido.

Arquivos de Redo Log Online


Armazena cada vetor de alteração que foi aplicado ao banco de dados, na ordem em que ocorreram. Se houver falha nos arquivos de dados ou todo o banco for danificado, os vetores poderão ser aplicados aos backups. O redo log é composto de dois tipos de arquivos: os arquivos de redo log online (que são obrigatórios) e os arquivos de redo log arquivados (que são opcionais). Cada banco de dados deve ter ao menos dois grupos de arquivos de redo log online para funcionar. Cada grupo deve ter ao menos dois membros por questão de segurança.
O LGWR grava o log de buffer no grupo de redo log online em uso (current), quando arquivo atual fica “cheio”, o LGWR passa a gravar no segundo grupo, que se torna então o atual. O outro redo log passa então a ser arquivado pelo ARCn, se o banco estiver o modo archivelog. E assim por diante, os grupos vão sendo revezados.

Arquivos de Dados


Deve haver no mínimo dois arquivos de dados, criados no momento da criação do banco de dados. Os arquivos de dados são o repositório de dados, as estruturas físicas visíveis para os administradores do sistema. Onde guardam-se os segmentos lógicos, em outras palavras é onde estão guardados de fato os dados do banco, fisicamente falando. Tudo o que você guarda no banco, nas tabelas, todos as entradas, tudo está guardado lá, o resultado final.
Os arquivos de dados podem ser renomeados, redimensionados, movidos, adicionados ou deletados a qualquer momento no tempo de vida do banco de dados, mas lembre-se de que algumas operações em alguns arquivos de dados podem requerer tempo de inatividade.

Outros Arquivos de Dados (Arquivos Externos)

São arquivos necessários, mas estão externos ao banco de dados, são eles: Arquivo de Parâmetros da Instância, Arquivo de Senhas (Password File), Arquivo de Redo Log Arquivado e o Arquivo de Rastreamento e Log de Alerta.

Arquivo de Parâmetro da Instância: defini os parâmetros para inicialização da instância, o único parâmetro requerido é o DB_NAME, para todos os outros existem valores padrões.

Arquivo de Senhas: Contém um pequeno número (normalmente, menor do que meia dúzia) de nomes de usuário e senhas existentes fora do dicionário de dados e que podem, portanto, ser usados para conectar a uma instância antes do dicionário ficar disponível.

Arquivo de Redo Log Arquivado: Arquivo que recebe o backup do redo log online.

Arquivo de Rastreamento e Log de Alerta: O log de alerta é um fluxo de gravação contínuo de mensagens referente a certas operações críticas que afetam a instância e o banco de dados. Nem tudo é registrado em log: somente os eventos considerados realmente importantes, como inicialização e shutdown, alterações às estruturas físicas do banco de dados e alterações aos parâmetros que controlam a instância. Os arquivos de rastreamento são gerados pelos processos de segundo plano quando eles detectam condições de erro e, às vezes, para reportar certas ações.

Estruturas Lógicas do Banco de Dados


São as estruturas com as quais o usuário interage, são os segmentos, que podem ser: Segmentos de Tabelas, Segmentos de Índices e Segmento de Undo.
As tabelas possuem as linhas de informações, os índices são mecanismos para fornecer acesso rápido a alguma linha específica e os segmentos de undo são estruturas de dados usadas para armazenar as informações necessárias para realizar o rollback de uma transação. Portanto, os administradores de sistema veem os arquivos de dados físicos e os programadores veem os segmentos lógicos, é por meio das tablespaces que acontece a abstração entre lógico e físico.
A Figura abaixo mostra a hierarquia de armazenamento de dados do Oracle, com a separação entre o armazenamento lógico e o físico.




O Dicionário de Dados


É um conjunto de metadados: dados sobre dados. Todo o banco é descrito no dicionário, tanto física quanto logicamente e sobre o seu conteúdo. Um conjunto de segmentos armazenados nas tablespaces SYSTEM e SYSAUX. Não é possível manipular o dicionário com instruções DML, apenas é possível consultar suas visões, a nível de DBA_, ALL_ ou USER_. O que será visto, depende do nível de permissões do usuário que está pesquisando (GRANT). A criação de um dicionário de dados é parte do processo de criação do banco de dados. Ele é mantido subsequentemente pelos comandos de linguagem de definição de dados. Quando você̂ emite o comando CREATE TABLE, está inserindo linhas nas tabelas do dicionário de dados, como quando emite comandos como CREATE USER ou GRANT.
Quem armazena as informações de relacionamento entre as tablespaces e os arquivos de dados é o arquivo de controle do banco, ele que lista os datafiles, e diz a qual tablespace pertencem, sem o Controlfile, não tem como localizar os arquivos que compõem a SYSTEM, por isso que o Controlfile é vital.

Qualquer consulta, bloco PL/SQL, fará acesso ao dicionário de dados. Verificando as estruturas mencionadas pelo código, validando, verificando a existência de grants, etc.

Nenhum comentário:

Postar um comentário