Nas versões anteriores do Oracle, para migrar e/ou renomear um datafile eram necessários uma série de passos. Exemplo: colocar a tablespace em READ ONLY, alterar o datafile para offline, etc… A partir do 12cR1, um datafile pode ser renomeado ou movido online, simplesmente utilizando a instrução ALTER DATABASE MOVE DATAFILE. Enquanto o datafile estiver sendo trasnferido, o usuário final pode executar consultas, e instruções DML e DDL sem problema. Além disso, os datafile podem ser migrados entre armazenamentos. Ex. migrar de não-ASM para ASM ou vice-versa.

Para os nossos testes, irei utilizar uma VM com o seguinte cenário:

- Disco 1 /dev/sda com 50Gb
- Disco 2 /dev/sdb com 5Gb -> asm-disk1
- Disco 3 /dev/sdc com 5Gb -> asm-disk2
- 3Gb RAM
- 5Gb SWAP
- Oracle Linux Server Release 6.4 x86_64
- Oracle Database 12c R1 (rodando com ASM)

– Criando uma tablespace nova e um novo datafile:

Mas olha só que bacana!!! Ele já faz a alteração no s.o., sem precisar aquela confusão toda… copia no s.o., altera no banco, blábláblá!

Mas como será que ele se porta no caso de ser um datafile da tbs SYSTEM por exemplo?

– Agora vamos migrar o nosso datafile criado para o ASM. Primeiro vamos verificar a localização atual de todos os datafiles:

– Migrando nosso datafile para o ASM:

Feitoria! Datafile migrado para o DG +DATA e nem rastro do mesmo no filesystem!! 😀

– Ao utilizar o parâmetro KEEP mantemos o datafile no local original e copiamos ele para um novo local. Movi o datafile novamente para o filesystem para facilitar a visualização:

Qual dos datafiles estamos utilizando afinal? O.o

Show! Mas o que acontece se tentarmos mover pra cima daquele arquivo que já existe?

Eita… mas pra resolver, utilizamos o parâmetro REUSE:

O progresso dessa movimentação de datafiles, no caso de demorar pois o datafile é muito grande, pode ser monitorada na v$session_longops. Além disso, podemos verificar no alert.log onde o Oracle deixa os detalhes das ações que estão sendo tomadas. Ex.:

Buenas… essa foi a primeira postagem a respeito das new-features do 12c R1, inclusive, uma das que achei mais bacana! Isso é uma mão na roda quando lota um disco por exemplo, ou é necessário uma migração de storage, etc…