Olá pessoal,
A partir do Oracle Oracle Database 12c Release 1 (12.1.0.1) podemos movimentar os datafiles do banco de dados de maneira ONLINE, ou seja, sem precisar parar(shutdown) o banco de dados para realizar esta operação.
Use a cláusula MOVE DATAFILE para mover um arquivo de dados de maneira "on-line" para uma nova localização. O banco de dados pode estar aberto e acessar o arquivo de dados quando você executar esta operação.
Vamos a um exemplo básico, primeiro se conecte ao banco de dados com privilégio adequado para operação:
[oracle@serv01 ~]$ sqlplus / as sysdba SQL*Plus: Release 12.1.0.2.0 Production on Sat Feb 17 20:56:27 2018 Copyright (c) 1982, 2014, Oracle. All rights reserved. Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
Veja os datafiles disponíveis no banco de dados:
SQL> COLUMN file_name FORMAT A40 SELECT file_id, file_name FROM dba_data_files ORDER BY file_id; SQL> FILE_ID FILE_NAME ---------- ---------------------------------------- 1 /u01/oradata/orcl/system01.dbf 2 /u01/oradata/orcl/soe01.dbf 3 /u01/oradata/orcl/sysaux01.dbf 4 /u01/oradata/orcl/undotbs01.dbf 5 /u01/oradata/orcl/example01.dbf 6 /u01/oradata/orcl/users01.dbf 7 /u01/oradata/orcl/tbs_01.dbf 7 rows selected. SQL>
Certo, agora vamos mover um datafile de um local para outro de maneira ONLINE. Vamos movimentar um arquivo de dados crítico do banco de dados, o SYSTEM:
SQL> alter database move datafile '/u01/oradata/orcl/system01.dbf' to '/u01/oradata/system01.dbf'; Database altered.
Veja agora que o datafile foi movimentado de local e não se encontra no local antigo:
SQL> host ls -lart /u01/oradata/orcl/system01.dbf ls: cannot access /u01/oradata/orcl/system01.dbf: No such file or directory SQL> host ls -lart /u01/oradata/system01.dbf -rw-r-----. 1 oracle oinstall 859840512 Feb 17 21:04 /u01/oradata/system01.dbf SQL>
Consulte o novo local de utilização em que o datafile referente a tablespace system está:
Alteração ok e de maneira ONLINE.
SQL> COLUMN file_name FORMAT A40 SELECT file_id, file_name FROM dba_data_files ORDER BY file_id; FILE_ID FILE_NAME ---------- ---------------------------------------- 1 /u01/oradata/system01.dbf 2 /u01/oradata/orcl/soe01.dbf 3 /u01/oradata/orcl/sysaux01.dbf 4 /u01/oradata/orcl/undotbs01.dbf 5 /u01/oradata/orcl/example01.dbf 6 /u01/oradata/orcl/users01.dbf 7 /u01/oradata/orcl/tbs_01.dbf 7 rows selected. SQL>
Podemos também manter(keep) o arquivo original como demonstrado abaixo:
SQL> alter database move datafile '/u01/oradata/orcl/tbs_01.dbf' to '/u01/oradata/tbs_01.dbf' keep; Database altered. SQL>
Consulte o novo local utilizado para o datafile: tbs_01:
SQL> COLUMN file_name FORMAT A40 SELECT file_id, file_name FROM dba_data_files ORDER BY file_id;SQL> FILE_ID FILE_NAME ---------- ---------------------------------------- 1 /u01/oradata/system01.dbf 2 /u01/oradata/orcl/soe01.dbf 3 /u01/oradata/orcl/sysaux01.dbf 4 /u01/oradata/orcl/undotbs01.dbf 5 /u01/oradata/orcl/example01.dbf 6 /u01/oradata/orcl/users01.dbf 7 /u01/oradata/tbs_01.dbf 7 rows selected. SQL>
Veja agora que foi mantido o arquivo original também:
SQL> host ls -lart /u01/oradata/orcl/tbs_01.dbf -rw-r-----. 1 oracle oinstall 209723392 Feb 17 21:11 /u01/oradata/orcl/tbs_01.dbf SQL> host ls -lart /u01/oradata/tbs_01.dbf -rw-r-----. 1 oracle oinstall 209723392 Feb 17 21:11 /u01/oradata/tbs_01.dbf SQL>
No log de alerta do Oracle encontramos o registro da alteração do datafile como abaixo:
alter database move datafile '/u01/oradata/orcl/tbs_01.dbf' to '/u01/oradata/tbs_01.dbf' keep Sat Feb 17 21:11:03 2018 Moving datafile /u01/oradata/orcl/tbs_01.dbf (7) to /u01/oradata/tbs_01.dbf Sat Feb 17 21:11:25 2018 Move operation committed for file /u01/oradata/tbs_01.dbf Completed: alter database move datafile '/u01/oradata/orcl/tbs_01.dbf' to '/u01/oradata/tbs_01.dbf' keep
Abraço pessoal,
Ronaldo.
Nenhum comentário:
Postar um comentário