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.
Muito interessante a explicação DBA :)
ResponderExcluirEm um próximo post, se possivel poderia explicar o efeito de diferentes tamanhos do BLOCKSIZE na questão de performance?
Poderia explicar mesmo a questão do BLOCKSIZE com relação a performance.
ExcluirShow de soccer!
ResponderExcluir