Pessoal,

No final do ano de 2012, prestei concurso para o DataPrev o qual me classifiquei em 18º do Nordeste. As provas foram de responsabilidade do Instituto QUADRIX e é sobre uma das questões que caíram na prova que quero comentar. A questão subjetiva da prova para o cargo de ANALISTA DE TECNOLGIA DA INFORMAÇÃO – Perfil: BANCO DE DADOS; era a seguinte:

Uma característica do RDBMS ORACLE é a separação entre a estrutura física e a lógica de armazenamento.

Explique o porquê ou qual a principal vantagem dessa separação entre as estruturas física e lógica.

Descreva a composição de cada uma das estruturas, física e lógica, e os respectivos componentes dentro de cada estrutura.”.


Para falar sobre o assunto, mais uma vez vou recorrer ao meu “amigo” John Watson.

O banco de dados consistem em três tipos de arquivos: arquivo de controle, arquivos de redo log e os arquivos de dados.
O BD Oracle fornece uma abstração completa do armazenamento lógico para o físico, ajudando muito na redução da carga de tarefas freqüentes de um DBA. Essa divisão do Oracle ajuda no gerenciamento e organização das informações.

Para iniciar o assunto, vamos entender basicamente alguns conceitos: tablespace e datafiles (arquivos de dados). Os dados são armazenados logicamente em segmentos e fisicamente em arquivos de dados. A entidade tablespace abstrai os dois – um tablespace pode conter vários segmentos e ser composto por muitos datafiles. Não existe uma relação direta entre um segmento e um datafile.
Segue um exemplo para criação de tablespace com dois datafiles associados (em sua forma básica):

CREATE TABLESPACE TBS_1MD DATAFILE
  '/opt/oracle/oradata/workspace/tbs1md_01.dbf' SIZE 2048M AUTOEXTEND OFF,
  '/opt/oracle/oradata/workspace/tbs1md_02.dbf' SIZE 2048M AUTOEXTEND OFF
LOGGING
ONLINE
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M
BLOCKSIZE 8K
SEGMENT SPACE MANAGEMENT AUTO
FLASHBACK ON;

Então vamos lá!

O banco de dados Oracle é dividido logicamente por tablespaces. Numa divisão abaixo das tablespaces se encontram os segmentos, que são constituídos de extensões. Uma extensão consiste no conjunto de blocos de dados. Para o entendimento ficar mais claro, a Figura 1 exibe como se dá as a. Cada extensão somente existe em um arquivo de dados. Os blocos de dados representam a menor unidade de entrada/saída no banco de dados.
 Figura 1 - Estrutura lógica de armazenamento no banco de dados Oracle. (Fonte: LEGATTI)

Todo banco de dados Oracle tem um ou mais arquivos de dados (datafiles), onde são armazenados os dados da base de dados. Os dados das estruturas lógicas como tabelas e índices são fisicamente armazenados nos datafiles alocados para o banco de dados, conforme Figura 2.

Figura 2 - Armazenamento lógico e físico de objetos no Oracle. (Fonte: Oracle Corporation)

É importante saber, que um datafile pode ser associado a apenas um banco de dados e a uma única tablespace. Os dados de um datafile são lidos, quando preciso, durante as operações de DML no banco de dados e armazenados no cachê de memória do Oracle (na porção de blocos de dados).  Dados modificados ou alterados não são necessariamente armazenados no datafile de imediato. Para reduzir o acesso a disco e melhorar o desempenho, o dado é colocado na memória e gravado no datafile todos de uma vez como determinado pelo processos interno do Oracle chamado “database writer process”.

Continuando a falar sobre as estruturas físicas do banco Oracle, temos o Redo Log File. Todo banco de dados Oracle tem um ou mais redo log files. O conjunto de um ou mais redo log files são conhecidos coletivamente como redo log do banco de dados. A função principal desses arquivos é registrar todas as mudanças realizadas nos dados do banco. Se devido a uma falha há necessidade de se recuperar informações do banco de dados isto é possível de ser feito através dos redo log files.

Para concluir a explicação de arquivos físicos do Oracle, vou falar sobre os control files. Todo banco de dados do Oracle tem um control file que são responsáveis por guardar os registros que especificam as estruturas físicas dos arquivos, tais como: 
- Nome do banco de dados
- Nomes e localizações dos redo log files
- A data da criação do banco de dados

Assim como os redo log files os control files também podem ter cópias mantidas em mais de um disco para efeito de segurança.

É importante lembrar que a estrutura de armazenamento das informações pode ter impacto na performance do banco de dados, então deve-se planejar de forma coerente como e onde alocar os dados para evitar problemas dessa natureza.

Bom pessoal,

Essa foi a questão que caiu no concurso e minha resposta foi mais ou menos essa (obviamente sem imagens).

Por enquanto é isso!

Um abraço e até a próxima!!


Referências:

WATSON, JOHN – OCA Oracle Database 11g – Administração I – Guia do Exame 1z0-052. Editora: BOOKMAN.

LEGATTI, EDUARDO – Introdução ao conceito de Tablespaces. Postado em setembro/2011. Disponível em: http://www.oracle.com/technetwork/pt/articles/database-performance/introducao-conceito-de-tablespaces-495850-ptb.html. Acessado em: 10/03/2013.

Oracle Corportaion – Schema Objects. Disponível em: http://docs.oracle.com/cd/B19306_01/server.102/b14220/schema.htm. Acessado: 11/03/2013.