O Oracle 12c chegou! e com ele inúmeras melhorias e novas features surgiram. Confira no Oracle® Database New Features Guide 12c Release 1 (12.1).
Uma destas novas features (1.5.5.6 Move a Data File Online) realmente chama a atenção, pois agora nos permite mover os datafiles de forma online totalmente transparente para os usuários, com o banco OPEN e os usuários acessando o datafile, com isso resolver problemas de área livre ou distribuir os datafiles entre dispositivos de armazenamento conforme carga de I/O (para melhorar a performance) se tornou muito prático e rápido.
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | C:\Users\Anderson Graf>sqlplus sys as sysdba SQL*Plus: Release 12.1.0.1.0 Production on Sex Jul 26 09:36:24 2013 Copyright (c) 1982, 2013, Oracle. All rights reserved. Informe a senha: Conectado a: Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options SQL> col file_name for a70 SQL> select file_name from dba_data_files where tablespace_name= 'USERS' ; FILE_NAME ---------------------------------------------------------------------- D:\ORACLE\ORADATA\ORCL\DATAFILE\O1_MF_USERS_8Z4SMH74_.DBF SQL> alter database move datafile 'D:\ORACLE\ORADATA\ORCL\DATAFILE\O1_MF_USERS_8Z4SMH74_.DBF' to 'C:\USERS01.DBF' ; Banco de dados alterado. SQL> select file_name from dba_data_files where tablespace_name= 'USERS' ; FILE_NAME ---------------------------------------------------------------------- C:\USERS01.DBF |
Observe no exemplo acima que fiz um RENAME do datafile juntamente com o MOVE ONLINE!
Alertlog durante o move:
1 2 3 4 5 6 | Fri Jul 26 09:38:34 2013 alter database move datafile 'D:\ORACLE\ORADATA\ORCL\DATAFILE\O1_MF_USERS_8Z4SMH74_.DBF' to 'C:\USERS01.DBF' Fri Jul 26 09:38:34 2013 Moving datafile D:\ORACLE\ORADATA\ORCL\DATAFILE\O1_MF_USERS_8Z4SMH74_.DBF (6) to C:\USERS01.DBF Move operation committed for file C:\USERS01.DBF Completed: alter database move datafile 'D:\ORACLE\ORADATA\ORCL\DATAFILE\O1_MF_USERS_8Z4SMH74_.DBF' to 'C:\USERS01.DBF' |
Durante o MOVE o banco de dados realiza uma consistência do nome do datafile no destino, verificando se ele existe ou não. Por default se ele existir no destino você receberá um erro: (criei um arquivo USERS.DBF para simulação)
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | C:\Users\Anderson Graf> cd / C:\> mkdir teste C:\> cd teste C:\teste> dir O volume na unidade C não tem nome. O Número de Série do Volume é 6654-062C Pasta de C:\teste 26 /07/2013 10:03 <DIR> . 26 /07/2013 10:03 <DIR> .. 0 arquivo(s) 0 bytes 2 pasta(s) 83.722.387.456 bytes disponíveis C:\teste> dir > USERS01.DBF C:\teste> dir O volume na unidade C não tem nome. O Número de Série do Volume é 6654-062C Pasta de C:\teste 26 /07/2013 10:04 <DIR> . 26 /07/2013 10:04 <DIR> .. 26 /07/2013 10:04 344 USERS01.DBF 1 arquivo(s) 344 bytes 2 pasta(s) 83.722.588.160 bytes disponíveis |
Agora:
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 | C:\teste>sqlplus sys as sysdba SQL*Plus: Release 12.1.0.1.0 Production on Sex Jul 26 10:09:05 2013 Copyright (c) 1982, 2013, Oracle. All rights reserved. Informe a senha: Conectado a: Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options SQL> alter database move datafile 'C:\USERS01.DBF' to 'C:\TESTE\USERS01.DBF' ; alter database move datafile 'C:\USERS01.DBF' to 'C:\TESTE\USERS01.DBF' * ERRO na linha 1: ORA-01119: erro ao criar o arquivo 'C:\TESTE\USERS01.DBF' de banco de dados ORA-27038: arquivo criado já existe OSD-04010: opção <criar> especificada, arquivo existente |
Caso queira realmente sobrescrever este datafile utilize a opção REUSE (tome cuidado para não sobrescrever um datafile válido…):
1 2 3 4 5 6 7 8 9 | SQL> alter database move datafile 'C:\USERS01.DBF' to 'C:\TESTE\USERS01.DBF' REUSE; Banco de dados alterado. SQL> select file_name from dba_data_files where tablespace_name= 'USERS' ; FILE_NAME -------------------------------------------------------------------------------- C:\TESTE\USERS01.DBF |
Ainda temos a opção KEEP que mantém o arquivo na origem e faz uma cópia para o destino, sendo que o arquivo no destino só será utilizado quando a operação concluir com sucesso.
Quando realizado um MOVE ou RENAME do DATAFILE ONLINE, o banco de dados cria uma cópia do arquivo de dados enquanto a operação está sendo realizada. Sempre certifique-se de que há espaço suficiente em disco para o arquivo de dados original e da cópia durante a operação.
Veja outros detalhes e restrições na utilização da feature, clique AQUI.
Referências:
http://docs.oracle.com/cd/E16655_01/server.121/e17906/chapter1.htm
http://docs.oracle.com/cd/E16655_01/server.121/e17636/dfiles.htm#ADMIN13837

Autor: Anderson Graf
Bacharel em Sistemas de Informação e MBA em Gestão de Banco de Dados Oracle. Entusiasta da tecnologia Oracle, ACE Associate ♠, autor em vários blogs e OTN. Consultor Oracle Senior na Exímio Soluções em TI
Envolvido em soluções de:
– Implementação, migração, gerenciamento e suporte a produtos Oracle, multiplataforma
– Monitoramento de ambientes 24×7
– Backup e Recovery
– Performance e Tuning
– Alta disponibilidade (HA) – RAC, Data Guard
– EM database/grid/cloud control
– Particionamento & Advanced Compression
– Oracle Engineered Systems – ODA, Exadata
Blog pessoal: http://www.andersondba.com.br
Articulista na Oracle Technology Network (OTN) – https://goo.gl/99R6yW
ACE Associate – https://goo.gl/MBB51b
Articulista GPO – http://profissionaloracle.com.br