Como migrar da plataforma Windows para Linux Oracle RAC

Publicado por Luis Adelson em 17/11/2010

[ Hits: 9.512 ]

 


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

Incrementando a segurança com o Firestarter

Adicionando novos buscadores no mecanismo de busca padrão do Firefox no Linux Mint

INPROPRIETÁRIO - O Mundo do Software Livre

Conexão de tabelas temporárias com PHP + MySQL

Backports no Debian e atualizando kernel

  

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