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.