SQL em Oracle > DDL > Como o Oracle armazena os objectos?
Como o Oracle armazena os objectos? tl_logo2.jpg

A gestão do espaço em disco é um dos serviços disponibilizados pelo SGBD que liberta o utilizador para outras preocupações. Uma base de dados permite aos seus utilizadores a criação de objectos (tabelas e índices) sem que estes tenham que se preocupar com a estrutura de dados física que permite armazenar os dados.

Para que o utilizador possa criar tabelas ou índices o administrador da base de dados (DBA - Data Base Administrator) tem que dar-lhe permissão de CREATE TABLE ou CREATE INDEX assim como disponibilizar espaço num tablespace.

As tabelas podem ser criadas em qualquer altura, mesmo com a base de dados em uso pelos utilizadores. A estrutura das tabelas também pode ser alterada durante o trabalho normal com a base de dados, mas esta operação pode ter algum impacto no trabalho, gerando algum tempo de espera.

Na criação da tabela não é necessário especificar a sua dimensão. Esta ficará limitada pelo espaço destinado à base de dados ou à quota de espaço que foi atribuída ao utilizador. Mesmo assim não deixa de ser importante a previsão do espaço que a tabela irá ocupar, para evitar encher o espaço disponível. Na criação da base de dados o DBA pode:

DDL - Data Definition Language é o subconjunto de comandos do SQL utilizados para criar, modificar ou eliminar objectos ORACLE, incluindo tabelas. Estes comandos, além de provocarem alterações imediatas na base de dados, também registam informações no Dicionário de Dados relativas às alterações efectuadas.

A figura abaixo mostra a estrutura física usada pelo Oracle e está descrita no manual Oracle Concepts.

EstruturaDadosOracle.jpg

A figura divide-se em 3 níveis horizontais: visão do utilizador, visão da base de dados e visão do sistema operativo. Uma base de dados (BD) armazena tabelas e índices. A uma tabela corresponde um segment, que fica armazenado num tablespace. Cada segment contem vários extents sendo cada um destes constituído por vários blocos Oracle. Um bloco Oracle contém 1 ou mais blocos de armazenamento do sistema operativo. Os datafiles (ficheiros visíveis no sistema operativo) são constituídos por vários blocos de sistema operativo.

Os tablespaces servem para arrumar objectos por tipo (tabelas, índices), dimensão (grande, média, pequena) e dispositivo físico (filesystem no Unix ou drive (C: D:) no Windows. Esta divisão permite optimizar a distribuição de I/O e assim reduzir a contenção no acesso aos discos.

Os extents definem a unidade de crescimento física de cada objecto e são alocações contiguas de blocos Oracle. Quando um extent é alocado a uma tabela esse espaço já não pode ser utilizado por outro objecto, o que pode causar desperdício de espaço se a alocação for excessiva. Por outro lado, a alocação de espaço a um objecto é uma operação lenta em termos de I/O, pelo que, se houver crescimento constante, convém alocar uma fatia tão grande quanto possível.

O administrador da base de dados Oracle pode definir o número e nome dos tablespaces, assim como os objectos que nele são armazenados, os extents que cada objecto recebe e o número de blocos Oracle que cada extent contem.

A figura acima adapta-se a tabelas e índices não particionados. O Oracle permite criar partições o que na prática significa que um objecto vai ter vários segments, cada um no seu tablespace. O particionamento tem as seguintes vantagens:

Este tipo de estrutura permite à base de dados adaptar-se a todas as características do hardware que neste momento está disponíveis no mercado, tirando partido das suas potencialidades.

bthome.gifTopo


Realizado por Turtle Learning ®. Última alteração em 2011-08-14