Introdução ao conceito de Tablespaces
Por Eduardo Legatti
Postado en setembro 2011
Comecemos com a seguinte pergunta: Qual é a relação entre tablespaces e arquivos de dados? Bom, para responder esta pergunta, primeiro precisamos entender como os dados são armazenados no banco de dados. O Oracle armazena dados logicamente em tablespaces e fisicamente em arquivos de dados (datafiles). Apesar dos arquivos de dados e os tablespaces estarem muito "inter-relacionados", os mesmos possuem diferenças importantes:
- Um banco de dados Oracle consiste em uma ou mais unidades de armazenamento lógicas denominadas tablespaces, que armazenam coletivamente todos os dados do banco de dados.
- Cada tablespace em um banco de dados Oracle consiste em um ou mais arquivos denominados arquivos de dados (datafiles), que são estruturas físicas compatíveis com o sistema operacional no qual o Oracle é executado.
- Os dados de um banco de dados são armazenados coletivamente nos arquivos de dados que constituem cada tablespace do banco de dados.
Como um banco de dados é um conjunto de arquivos de dados, é muito importante que entendamos como um banco de dados Oracle agrupa esses arquivos. Como dito anteriormente, o Oracle faz isso sob a proteção de um objeto de banco de dados chamado tablespace. Antes de poder inserir dados em um banco de dados Oracle, primeiro é necessário criar um tablespace e depois uma tabela dentro desse tablespace que conterá os dados. Podemos observar que na criação de um banco de dados utilizando o DBCA, o Oracle como padrão sempre cria um tablespace de dados chamado USERS. Ao criar uma tabela é necessário incluir todas as informações sobre o tipo de dados que deseja manter. O código abaixo, gerado para criar a tabela CLIENTE, ilustra como o Oracle armazena informações sobre o tipo de dado que irá registrar:
SQL> create table cliente
2 (cod_cliente number constraint pk_cliente primary key,
3 nome varchar2(60) not null,
4 endereco varchar2(100) not null,
5 telefone number,
6 data_cadastro date)
7 tablespace users;
Tabela criada.
SQL> desc cliente
Nome Nulo? Tipo
----------------------------- -------- --------------------
COD_CLIENTE NOT NULL NUMBER
NOME NOT NULL VARCHAR2(60)
ENDERECO NOT NULL VARCHAR2(100)
TELEFONE NUMBER
DATA_CADASTRO DATE
SQL> select table_name,tablespace_name
2 from user_tables
3 where table_name='CLIENTE';
TABLE_NAME TABLESPACE_NAME
------------------------------ ------------------------------
CLIENTE USERS
http://www.oracle.com/technetwork/pt/articles/database-performance/introducao-conceito-de-tablespaces-495850-ptb.html