Como migrar da plataforma Windows para Linux Oracle RAC

Publicado por Luis Adelson em 17/11/2010

[ Hits: 9.543 ]

 


Como migrar da plataforma Windows para Linux Oracle RAC



Instalar e configurar o RAC no Linux não é uma tarefa tão simples. Mas e se você vive no mundo Windows? Passei por essa dificuldade na empresa que trabalho. Migrar banco de dados entre plataformas é um bom desafio, que tornei simples neste tutorial.

As dicas:

1) Tire seu banco de dados do modo archive; depois você retorna.
2) Esteja certo que os níveis de patches Oracle aplicados sejam idênticos em ambas as plataformas;
3) Certifique-se de possuir uma conexão Giga bit entre os servidores.

A situação:

Tenho toda a minha base de dados Oracle instalada na plataforma Windows 2003 e agora quero ir para Linux. Quero ir direto para o RAC usando ASM. Não posso perder tempo usando export e import porque a base de dados está em produção e o tempo de migração inviabilizaria o processo. Qual é o meio mais rápido?

O roteiro:

1) Gere o init.ora para migrar seu banco com os mesmos parâmetros no Linux - create pfile from spfile;

2) Gere o controlfile - alter database backup controlfile to trace;

3) Retire o banco de dados do ar com opção immediate ou normal - shutdown immediate;

4) Monte diretamente no Linux os discos usando o caminho do diretório dos datafiles:

# mkdir /mnt/datafile
# mount /hostdobancooriginal/diretorio/datafile /mnt/datafile -o user=usuario


Informe a senha.

5) Faça o backup (cópia) do seu banco direto para os discos ASMusando o rman:

# rman target system/system123@sid
# convert datafile '/mnt/datafile/system01.dbf' format '+disk/datafile/system01.dbf' TO PLATFORM = 'Linux x86 64-bit' FROM PLATFORM= 'Microsoft Windows x86 64-bit';


6) Após converter todos os datafiles, copie o initfile do banco Windows editando os parâmetros do novo ambiente RAC usando ASM, veja exemplo:

dbxp1.__db_cache_size=788529152
dbxp2.__db_cache_size=788529152
dbxp1.__java_pool_size=16777216
dbxp2.__java_pool_size=16777216
dbxp1.__large_pool_size=16777216
dbxp2.__large_pool_size=16777216
dbxp1.__shared_pool_size=268435456
dbxp2.__shared_pool_size=268435456
dbxp1.__streams_pool_size=0
dbxp2.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/dbxp/adump'
*.background_dump_dest='/u01/app/oracle/admin/dbxp/bdump'
*.compatible='10.2.0.4.0'
*.control_files='+DG_DISK2/dbxp/controlfile/control.ora'
*.core_dump_dest='/u01/app/oracle/admin/dbxp/cdump'
*.db_block_size=8192
*.db_create_file_dest='+DG_DISK'
*.db_create_online_log_dest_1='+DG_DISK'
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='dbxp'
*.db_recovery_file_dest='+DG_DISK'
*.db_recovery_file_dest_size=21474836480
*.dispatchers='(PROTOCOL=TCP) (SERVICE=dbxpXDB)'
*.cluster_database_instances=2
*.cluster_database=true
dbxp2.instance_number=2
dbxp1.instance_number=1
*.job_queue_processes=10
*.nls_language='BRAZILIAN PORTUGUESE'
*.nls_territory='BRAZIL'
*.open_cursors=300
*.pga_aggregate_target=365953024
*.processes=150
*.remote_listener='LISTENERS_DBXP'
*.remote_login_passwordfile='exclusive'
*.sga_target=1098907648
dbxp1.thread=1
dbxp2.thread=2
*.undo_management='AUTO'
dbxp2.undo_tablespace='UNDOTBS1'
dbxp1.undo_tablespace='UNDOTBS4'
*.user_dump_dest='/u01/app/oracle/admin/dbxp/udump'

7) Depois é só editar o controlfile, incluindo os datafiles com a localização nova nos discos ASM, veja exemplo:

CREATE CONTROLFILE SET DATABASE "DBXP" RESETLOGS  NOARCHIVELOG
    MAXLOGFILES 192
    MAXLOGMEMBERS 3
    MAXDATAFILES 1024
    MAXINSTANCES 32
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 '+DG_DISK/dbxp/onlinelog/redo01.dbf'  SIZE 50M,
  GROUP 2 '+DG_DISK/dbxp/onlinelog/redo02.dbf'  SIZE 50M
DATAFILE
'+dg_disk/dbxp/data/tools01.DBF',
'+dg_disk/dbxp/data/system_1.DBF',
'+dg_disk/dbxp/data/usersdp_1.DBF',
'+dg_disk/dbxp/data/sysaux01.DBF',
'+dg_disk/dbxp/data/undo02.ora';
'+dg_disk/sxp2h/data/undo03.ora';

8) Pronto! Agora vamos por o banco no ar?

alter database open resetlogs;

Considerações finais:

Como você está criando o banco manualmente (sem DBCA), deverá criar o banco sem os atributos de RAC, como o atributo instance_number. Depois é só incluir novamente. Também será preciso criar os serviços manualmente. Escreverei sobre isso no próximo documento.

Boa sorte e sucesso!

Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

Ratio Master no Linux através do Wine

Ligando no Asterisk via Vono

Livro: Migrando de Windows para Linux

SMTP Relay Gmail ou SMTP Externo no FreeBSD 10

Como fazer o Emerald rodar na versão 11.04 do Ubuntu

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts