abr 172015
 

No último artigo falei de como movimentar arquivos temporários, mas o que dizer quando precisamos movimentar datafiles ?

Não é uma tarefa difícil, mas lembre-se que até o Oracle 11g essa era uma ação offline, ou seja, exigia indisponibilidade, mesmo que por apenas alguns segundos.

Em outro post falaremos das novidades do 12c para essa movimentação.

Mas vamos ao que interessa.

Quais são as opções para movimentar um datafile ?

A primeira opção é deixar o datafile offline

Mas antes, lembre-se que neste caso, vai ser preciso fazer recovery do datafile quando você trouxer ele para online novamente. Isso acontece porque diferentemente de quando nós deixamos uma tablespace offline, e o Oracle faz um Checkpoint sincronizando os SCN dos arquivos e garantindo que todas as mudanças realizadas foram escritas nos datafiles, o Oracle não faz isso quando deixamos apenas o datafile offline.

Isso significa que sempre devemos utilizar o método de tablespace offline visto que não precisa de recovery ? Não, afinal pode ser que sua tablespace tenha vários datafiles e ao deixar apenas um datafile offline, você indisponibiliza apenas algumas tabelas do ambiente. Deixar toda a tablespace offline (quando ela tem mais de um datafile) significa que todas as tabelas daquela tablespace ficarão indisponíveis, quando deixar um datafile offline pode significar uma ou nenhuma tabela indisponível. Então é preciso que você avalie caso a caso. Obviamente que se a tablespace tiver apenas um datafile, a opção de deixar a tablespace offline é a melhor escolha.

Mas vamos as opções:

Movendo datafile offline de tablespace online

Primeiramente deixamos o datafile offline:

SQL> alter database datafile 6 offline;
Database altered.

Movimentamos o arquivo pelo sistema operacional:

SQL> host cp /u01/app/oracle/oradata/orcl12c/users01.dbf /home/oracle/users01.dbf

Atualizamos o controlfile com a nova localização:

SQL> alter database rename file '/u01/app/oracle/oradata/orcl12c/users01.dbf' to '/home/oracle/users01.dbf';
Database altered.

Recuperamos o datafile:

SQL> recover datafile 6;
Media recovery complete.

E deixamos ele online novamente:

SQL> alter database datafile 6 online;
Database altered.

Você pode fazer a operação acima utilizando o RMAN também.

Movendo datafile offline de tablespace offline

Primeiramente deixamos a tablespace offline:

SQL> alter tablespace users offline;
Tablespace altered.

Movimentamos os arquivos pelo sistema operacional:

SQL> host cp /home/oracle/users01.dbf /u01/app/oracle/oradata/orcl12c/users01.dbf

Atualizamos o controlfile com a nova localização:

SQL> alter tablespace users rename datafile '/home/oracle/users01.dbf' to '/u01/app/oracle/oradata/orcl12c/users01.dbf';
Tablespace altered.

E deixamos a tablespace online novamente:

SQL> alter tablespace users online;
Tablespace altered.

Assim como na primeira estratégia, voce pode fazer toda a operação utilizando o RMAN.
E pessoal, nunca se esqueçam, sempre façam um backup depois de qualquer mudança estrutural no banco, seja envolvendo tablespaces, datafiles e etc.
Espero que tenham gostado !

  2 Responses to “Movendo datafiles no Oracle”

  1. […] Voce pode ver um poucos delas no seguinte artigo. […]

  2. […] Voce pode ver um poucos delas no seguinte artigo. […]

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)