Movimentação de Datafiles entre diskgroups diferentes com ASM

Saudações pessoal, hoje mostrarei a técnica de movimentação de datafiles através de diferentes diskgroups em
ambientes com ASM utilizando o OFA (Optimal Flexibile Architecture) para nomenclatura dos arquivos .
Esse procedimento pode ser utilizado tanto para single instance como para ambientes em RAC.
Recomendo fortemente que esse procedimento seja realizado com a aplicação fora do ar, pois essa operação requer que os datafiles fiquem offline e, um backup full da base antes dessa operação.

Neste exemplo, iremos mover o datafile da tablespace TBSD_DADOS do diskgroup +DG1 para +DG2

Pré-requisitos:
O pré-requisito para essa tarefa é que o banco esteja em archive mode.

Verificando se o banco está em archive mode:

Procedimento:
$export ORACLE_SID=banco
$sqlplus

SQL*Plus: Release 10.2.0.3.0 – Production on Thu Sep 9 11:50:56 2010

Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.

Enter user-name: sys as sysdba
Enter password:

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 – Production
With the Partitioning, OLAP and Data Mining Scoring Engine options

SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     100
Next log sequence to archive   102
Current log sequence           102

Sim está: Automatic archival Enabled

Agora iremos para o step by step

1º – Verificar qual é caminho do datafile que será movido do diskgroup +DG1 para +DG12.
OBS: Toda essa tarefa, eu realizei utilizando as ferramentas SQLPLUS e RMAN via linha de comando, e com usuário com permissão de sysdba.

Procedimento:
$export ORACLE_SID=banco
$sqlplus

SQL*Plus: Release 10.2.0.3.0 – Production on Thu Sep 9 12:02:26 2010

Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.

Enter user-name: sys as sysdba
Enter password:

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 – Production
With the Partitioning, OLAP and Data Mining Scoring Engine options

SQL> col file_name format a80
SQL> select file_name,round(bytes)/1024/1024 as “TAM(MB)”
  from dba_data_files
 where tablespace_name=’TBSD_DADOS’;

FILE_NAME                                                                                                                       TAM(MB)
——————————————————————————– ———————-
+DG1/banco/datafile/tbsd_dados_1001.350.725726731                              15152

2º – Colocando o datafile em offline: Infelizmente essa operação não pode ser feita a quente, ou seja , com o datafile disponível.

Procedimento:
SQL> alter database datafile ‘+DG1/banco/datafile/tbsd_dados_1001.350.725726731’ offline;

Database altered.

3º – Realizar a cópia física do arquivo de um disco para o outro via RMAN.
Para realizar o step 4 vocês precisarão da informação que será gerada nesse step, que é nome do novo arquivo.
O nome do novo arquivo será apresentada depois de “output filename”, que no nosso caso é:
filename=+DG2/banco/datafile/tbsd_dados_1001.292.729338903, guardem essa informação.

Procedimento:
export ORACLE_SID=banco
$rman target / nocatalog

Recovery Manager: Release 10.2.0.3.0 – Production on Thu Sep 9 12:05:18 2010

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

connected to target database: BANCO (DBID=3085405222)
using target database control file instead of recovery catalog

Procedimento:

RMAN> run {
allocate channel c1 type disk;
copy datafile ‘+DG1/banco/datafile/tbsd_dados_1001.350.725726731’ to ‘+DG2’;
}

released channel: ORA_DISK_1
released channel: ORA_DISK_2
allocated channel: c1
channel c1: sid=139 devtype=DISK

Starting backup at 10-SEP-10
channel c1: starting datafile copy
input datafile fno=00018 name=+DG1/banco/datafile/tbsd_dados_1001.350.725726731
output filename=+DG2/banco/datafile/tbsd_dados_1001.292.729338903 tag=TAG20100910T100822 recid=6 stamp=729339019
channel c1: datafile copy complete, elapsed time: 00:02:05
Finished backup at 10-SEP-10

Starting Control File and SPFILE Autobackup at 10-SEP-10
piece handle=/u03/backup/banco/c-3085405222-20100910-04 comment=NONE
Finished Control File and SPFILE Autobackup at 10-SEP-10
released channel: c1

4º – Realizar o set newname.
Nesse momento o Oracle atualizará o header do controlfile (ou dos controlfiles) com o novo caminho do arquivo
que fizemos a movimentação.

Procedimento:
RMAN> run {
set newname for datafile ‘+DG1/banco/datafile/tbsd_dados_1001.350.725726731’ to ‘+DG2/banco/datafile/tbsd_dados_1001.292.729338903’;
switch datafile all;
}

executing command: SET NEWNAME

datafile 18 switched to datafile copy
input datafile copy recid=6 stamp=729339019 filename=+DG2/banco/datafile/fatod_1001.292.729338903
starting full resync of recovery catalog
full resync complete

5º – Realizar recover do datafile
O recover do datafile é necessário, o Oracle precisa atualizar o SCN (System Change Number) do banco no header do datafile que acabamos de mover. Isso acontece pois o datafile estava offline, consequentemente se o datafile está offline, a atualização do SCN não acontece nesse datafile, mas nos outros datafiles acontece pois o banco permanece disponível para outros usuários, e infinitas operações no banco estão ocorrendo, quando formos colocar esse datafile online novamente, ele precisará estar com o mesmo SCN do banco.

Procedimento:
RMAN> recover datafile ‘+DG2/banco/datafile/fatod_1001.292.729338903’;

Starting recover at 10-SEP-10
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=139 devtype=DISK
allocated channel: ORA_DISK_2
channel ORA_DISK_2: sid=141 devtype=DISK

starting media recovery
media recovery complete, elapsed time: 00:00:02

Finished recover at 10-SEP-10

6º – Colocando o datafile online
Nesse momento iremos disponibilizar o datafile para operações de leitura e escrita, assim o datafile estará disponível para as demandas no qual ele foi concebido.

Procedimento:
$export ORACLE_SID=banco
$sqlplus

SQL*Plus: Release 10.2.0.3.0 – Production on Thu Sep 9 11:50:56 2010

Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.

Enter user-name: sys as sysdba
Enter password:

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 – Production
With the Partitioning, OLAP and Data Mining Scoring Engine options

SQL> alter database datafile ‘+DG2/banco/datafile/fatod_1001.292.729338903’ online;

Database altered.

7º – Dropar da ASM o datafile utilizado como a origem.

Procedimento:
$export ORACLE_SID=+ASM
$asmcmd
ASMCMD>cd /dg1/banco/datafile
rm -f tbsd_dados_1001.350.725726731
exit

E pronto trabalho concluído. 

Conclusão:
Essa técnica é bem interessante e prática, nos ajuda no dia dia, nosso arquivo que antes se chamava
‘+DG1/banco/datafile/tbsd_dados_1001.350.725726731’, agora se chama ‘+DG2/banco/datafile/fatod_1001.292.729338903’, reforçando a vocês que estou utilizando o OFA.

Agradecimento:
Quero agradecer meu amigo e DBA Oracle Marcus Vinicius Miguel Pedro, que me deu uma importante dica em um contratempo que tive enquanto eu estava escrevendo esse artigo.

Um grande abraço a todos , espero que esse post possa contribuir para o conhecimento de vocês.

Anúncios
Comente ou deixe um trackback: URL do Trackback.

Comentários

  • Marcus Vinicius  On setembro 11, 2010 at 9:23 pm

    Excelente post!!

    Para ambientes VLDB isso tipo de tarefa é muito comum e o post se mostra muito útil!!

    Abraço!

    Vinicius

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

%d blogueiros gostam disto: