A forma de armazenamento em um banco de dados Oracle pode
ser analisada pelo lado físico ou lógico. Analisando de forma física, os
componentes de armazenamento são vistos como arquivos de dados (nível do sistema operacional). Já o
armazenamento lógico é a forma como o Oracle gerencia, de forma interna, os
objetos que estão armazenados no banco de dados.
Considerando o modelo de armazenamento utilizado pelo
Oracle, temos que:
- A base de dados deve ser formada por um ou mais tablespaces, sendo que todo tablespace deve pertencer a apenas um banco de dados.
- Todo tablespace é formado por um ou mais arquivos de dados e cada arquivo de dados pertence a somente um tablespace.
- O arquivo de dados é formado por um ou mais blocos do SO. Cada bloco do SO pode pertencer a apenas um arquivo de dados.
- O tablespace é formado por um segmento ou mais, sendo que o segmento deve existir em apenas um tablespace.
- Todo segmento é formado por extensões. Cada segmento pode existir em somente um tablespace.
- A extensão é formada de um ou mais blocos do Oracle. Cada um desses blocos pode pertencer a somente uma extensão.
- Cada extensão estã localizada em um arquivo de dados. Um espaço no arquivo de dados pode ser alocado na forma de uma ou várias extensões.
- Todo bloco do Oracle constitui de um ou mais blocos do SO.
O esquema descrito acima pode ser visto na seguinte figura:
Estruturas de Armazenamento Físicas
Chamamos de estrutura física aquilo que o sistema operacional “vê” quando “olha” para uma base de dados Oracle, pois trata-se de um conjunto de arquivos de dados. Também pode-se utilizar partições de um disco que não está sendo gerenciada pelo SO para armazenar os arquivos de dados, entretanto, isso introduz certa complexidade (e eu num manjo nada disso). Também é possível que o Oracle gerencie ele mesmo o armazenamento da estrutura física utilizando ASM (Automated Storage Management), nestes dois últimos casos o SO não está envolvido.
Arquivos de Dados Oracle
Quando um banco de dados é criado, também é criada uma série de arquivos para armazenar o dicionário de dados e os dados do tablespace SYSAUX, além de outros tablespaces que o DBA tenha resolvido criar. Estes arquivos de dados consistem de um cabeçalho que o identifica como parte de um banco de dados Oracle, de informações sobre a qual tablespace ele pertence e qual o último checkpoint realizado. O restante do arquivo é formado por extenões e espaço livre.
Blocos do Sistema Operacional
Estruturas de Armazenamento Lógicas
A estrutura lógica é formada pelos tablespaces, segmentos e extensões. No banco de dados Oracle são necessários pelo menos 3 tablespaces (de preferência mais) considerando o Oracle 10g. Nas versões anteriores eram necessário apenas 1 tablespace.
Tablespaces
É a maior estrutura dentro de um banco de dados e todo banco de dados Oracle 10g precisa de pelo menos três tablespaces:
- SYSTEM: Utilizado para armazenar o dicionário de dados além dos objetos do esquema SYS.
- SYSAUX: Armazena os objetos que não são do usuário SYS, mas que são essenciais ao funcionamento do banco de dados. Este tablespace é utilizado, por exemplo, para armazenar estatísticas do banco de dados.
- UNDO: É utilizado para armazenar as informações de UNDO. Essas informaçõe permitem que usuários leiam linhas de uma tabela, de forma consistente, enquanto elas estejam sendo modificadas.
Quando um banco de dados é criado com o DBCA (Assistente de Configuração de Banco de Dados – sigla em inglês), além dos tablespaces acima, também são criados os tablespaces TEMP e USERS. Nota o tablespace de UNDO é criado com o nome UNDOTBS1.
- TEMP: Utilizado para armazenar dados temporários do banco de dados, por exemplo, conteúdo de tabelas temporárias. Além disso, é utilizado como espaço para classificação de dados. Embora não seja um tablespace obrigatório, é altamente recomendado a sua criação.
- USERS: É utilizado para armazenar os dados dos usuários. Este é o tablespace padrão que pode ser utilizado pelos usuários do banco de dados (exceto SYS e SYSTEM).
Os tablespaces podem ser classificados como SYSTEM ou não-SYSTEM: No Oracle 10g, apenas os tablespaces SYSTEM e SYSAUX são considerados tablespaces SYSTEM, os demais são não-SYSTEM.
Segmentos
Os segmentos são alocados dentro dos tablespaces. Um segmento nada mais é do que um objeto do banco de dados que requer armazenamento, por exemplo, um índice ou uma tabela. É permitido criar vários tipos diferentes de segmentos, sendo que a view DBA_SEGMENTS exibe todos os segmentos criados no banco.
SELECT DISTINCT segment_type FROM DBA_SEGMENTS;
Extensões
São formadas por blocos contíguos, podendo ser gerenciadas de forma automática ou manual. Quando é alocado espaço para criação de segmentos em um tablespace, é também alocada uma extensão de cada vez (o segmento é formado por uma ou mais extensões.) As extensões podem ser gerenciadas de forma local (recomendado) ou no dicionário de dados (existente por questão de compatibilidade com versões anteriores ao Oracle 10g).
Blocos do Banco de Dados
São as menores unidades de E/S do banco de dados. Isto significa que quando o banco precisa ler dados do disco, todo o bloco onde o dado está contido deve ser lido. A mesma coisa ocorre na escrita mesmo que uma única linha de um bloco tenha sido alterada. Nota: não é possível alterar o tamanho dos blocos de dados de um tablespace depois dele ter sido criado.
Nenhum comentário:
Postar um comentário