quarta-feira, 15 de setembro de 2010

Tablespace I

Bom Noite pessoal!!!!

Já estava na hora de vir aqui postar(rsrs). Vocês sabem como é a correria na nossa profissão, prometo que vou tentar toda semana postar alguma coisa.
Mas vamos deixar o bláblá de lado e mãos a obra.

Hoje de manhã peguei o santo ônibus de cada dia, o ônibus lotadão aquele calor humano rsrs daí pensei caramba eu podia escrever algo no blog sobre armazenamento
de dados (dãããã - bem redundante isso já que somos profissionais de banco de dados rsrs). Pensei vou escrever sobre Tablespace esse é o tema do post.

No Oracle temos as estruturas lógicas e as estruturas fisicas, a estrutura lógica é a nossa conhecida Tablespace e as
estruturas físicas são os famosos datafiles, sendo assim uma tablespace pode ter mais de 1 datafile se necessário. Datafile fica armazenado no Sistema operacional (assunto para outro post).
A tablespace serve para organizar os objetos lógicos no banco de dados, por exemplo temos que criar umas 10 tabelas com 4Mb, 12 tabelas com 128Mb e 100 tabelas com 128kb,
A ideia seria criarmos 3 tablespaces exemplo:

Tablespace TS_TAB_4M        << Armazenamento das tabelas de 4M
Tablespace TS_TAB_128M   << Armazenamento das tabelas de 128M
Tablespace TS_TAB_128k     << Armazenamento das tabelas de 128K

Nossas tabelas já estão organizadas beleza só alegria rsrs. Mas opa e aonde eu ponho os indices? nas mesmas tablespaces? Ahh meu amigo se isso passou pela sua cabeça hahah desiste da carreira!!!
já que criamos as tablespaces para as tabelas, pultz cria também pros indices tipo assim:

Tablespace TS_IDX_4M      << Armazenamento dos indices de 4M
Tablespace TS_IDX_128M  << Armazenamento dos indices de 128M
Tablespace TS_IDX_128K   << Armazenamento dos indices de 128K

Pessoal existem 2 tablespaces no Oracle que são o bicho, NUNCA, veja bem NUNCA MESMO, crie qualquer tipo de objeto nas tablespaces SYSTEM e SYSAUX pois essas tablespaces contém o dicionário de dados do Oracle
e JAMAIS coloquem elas em OFFLINE, se por acaso essas meninas entrarem em OFFLINE não vai acontecer nada de mais, só sua instancia irá abortar, seu banco cair,
se isso acontecer você irá escutar um monte de usuários, seu chefe, seu diretor todos enchendo o saco e te fazendo um monte de perguntas (rsrs)

Tipo quando tempos tudo organizado em tablespaces temos uma maior flexibilidade dos dados, quando uma base de dados tem múltiplas tablespaces podemos fazer:

Separar os dados dos usuários dos dados do dicionário do Oracle reduzindo a contenção entre objetos do dicionário e objetos do esquema;

Separar os dados de uma aplicação da outra para evitar os acessos múltiplos a uma única tablespace, ajudando assim na manutenção da tablespace de uma certa aplicação;

Armazenar diferentes tablespaces e diferentes datafiles no disco para reduzir a contenção de I/O;

Manutenção em aplicações sem afetar outras aplicações, exemplo tenho 3 aplicações na mesma base, aplicações essas A, B e C. você pode tirar a aplicação A do ar fazer a manutenção sem ter que afetar a aplicação B e C;

Realizar o backup individual de cada tablespace.

Os sitemas operacionais tem por default um limite de arquivos que podem ser abertos simultaneamente, esses limites podem afetar o número de tablespaces online acessadas ao mesmo tempo. Para tentarmos não exceder o limite do sistema operacional devemos estudar de forma eficiente a distribuição de nossas tablespaces, tentando criar somente tablespaces necessárias com definição de tamanho máximo, caso perceba que ela irá estourar temos a opção de adicionar datafiles novos ou de colocar o datafile atual como autoextend

Bom Pessoal esse é um post mais para um entendimento para o que serve um tablespace e da importância do mesmo para o gerenciamento dos dados.
Vou ficando por aqui no proximo post vou tentar explicar as Tablespces UNDO, USERS, TEMP, ... etc