sexta-feira, 10 de setembro de 2010

Como migrar da plataforma WIndows para Linux Oracle RAC

Sabemos que trabalhar com Windows em ambiente empresarial não dá. Se você quiser ter um ambiente estável tem que mudar para Linux. Demorei anos para aceitar isso, mas finalmente mudei. Agora quero passar de modo Fácil e Rápido como fazer isso.

Dicas:
1) Tire seu banco de dados do modo archive; depois você retorna.
2) Esteja certo que os níveis de patch aplicados sejam idênticos em ambas as plataformas.

"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 tempo de migração inviabilizaria o processo. Qual é o meio mais rápido?

Procurei na internet e ninguém faz nada parecido, então tive que ser criativo. Segue 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 o 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;


Como você está criando o banco manualmente (sem DBCA), você 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. No próximo artigo eu explico como fazer isso.

Boa sorte e sucesso.

Luis Adelson.

Um comentário:

  1. Legal a dica.
    Irei tentar, mas minha base não posso converte-la para ASM...
    Vamos ver...

    ResponderExcluir