segunda-feira, 5 de setembro de 2011

Alterando o caminho do arquivo de dados do Oracle

Trabalhar com banco de dados Oracle costuma deixar muita gente sequelada. Muitas vezes as dificuldades que sentimos para gerenciar o Oracle, ofusca toda a robustez e poderio desse banco de dados. Recentemente, vários de nossos maiores clientes estão aderindo a esse SGBD, e com isso, nós da Connect estamos precisando conhecer cada vez mais dele.
O que percebo, sempre que preciso fazer algo novo no Oracle, é que tudo é sempre muito bem documentado. O "Oracle Database SQL Reference" é sem dúvida o mais completo que conheço. Mesmo assim, vou procurar resumir em poucas linhas como realizar algumas tarefas simples, mas que nos tomam muito tempo quando não dominamos o Oracle.
A primeira delas, como o título desse post sugere, é como alterar o caminho de um arquivo de dados do Oracle. Mas por quê alguém precisaria alterar o caminho de um arquivo de dados do Oracle?
Por diversos motivos. Para liberar espaço, para distribuir os arquivos, ou para organizar os dados, não sei. Mas se precisar, é assim que faz:

  1. Pra começar, precisamos saber o nome completo do arquivo que vai mover e a qual tablespace ele pertence. Como tudo em Oracle, conseguimos listar todos os arquivos de dados do banco e seus respectivos tablespaces com uma consulta SQL:
    SELECT FILE_NAME, TABLESPACE_NAME FROM DBA_DATA_FILES 
  2. Com essas informações, devemos alterar o estado do tablespace para 'offline' com o seguinte comando SQL:
    ALTER TABLESPACE TS_DADOS OFFLINE
  3. Depois, precisamos mover o arquivo em questão para sua nova pasta (acredito que isso, todos que estejam lendo esse post sabem fazer)
  4. Só então, executamos o SQL para renomear logicamente o arquivo de dados no banco:
    ALTER TABLESPACE TS_DADOS RENAME DATAFILE 'C:\ORACLEXE\ORADATA\XE\TS_DADOS01.DBF' TO 'E:\DATABASES\ORADATA\XE\TS_DADOS01.DBF'
  5. Por último, tornamos o tablespace 'online' novamente:
    ALTER TABLESPACE TS_DADOS ONLINE


Neste exemplo, usamos caminhos Windows, e o nome do tablespace é TS_DADOS. Mas isso funciona da mesma forma para servidores UNIX e outros tablespaces de dados.

IMPORTANTE: Uma maldição cairá sobre sua cabeça se você tentar alterar os tablespaces de sistema (SYSAUX, UNDO e SYSTEM). Um dia, quando eu fizer o meu curso de DBA Oracle, eu explico o porquê. Até lá, evitem de fazer isso.

Nenhum comentário:

Postar um comentário