none
ORACLE RAC X SQL SERVER 2008 R2 RRS feed

  • Pergunta

  • Pessoal, tenho uma migração para plataforma SQL Server usei o SSMA para migrar os dados, e a aplicação ja esta sendo desenvolvida, porem em um DADO momento terei que migrar os dados, virar a chave... desligar o oracle  e ligar o sql, minha aplicação é critica funciona 24X 7 pois é PORTO então preciso de uma janela minima de migração queria saber qual a melhor estrategia para se usar... pensei em usar SSIS, mais preciso ter o maximo de performance, então resolvi linkar o ORACLE com o SQL e usar arquivos .BAT para startar varias conexoes com o SQL e rodar scripts de INSERT COM SELECT... queria saber de vcs se tem algo mais pratico algo mais rapido que isso e se o LINKED SERVER funciona tão bem quanto o SSIS... que ja usei tbm...eu quero eliminar camadas, para mim qto mais rapido melhor, a parte LOGICA da coisa... desligar constraints, chavez, indices, ordem de migração tudo isso ja ta definido, minha duvia é so em relacao a qual  a forma mais rapida de fazer a migracao...sao aproximaemnte umas 500 tabelas...

    o q vcs fariam ?

     

    desde ja agradeco qualquer resposta !

    abs

    Marcos

     

    quarta-feira, 25 de maio de 2011 18:31

Respostas

  • Marcos,

     

    Como voce disse que seu ambiente é 24x7, o que eu faria:

    - Crie pacotes do SSIS para criar todas as tabelas, constraints, indices, ou seja, todos os objetos no SQL porem sem dado nenhum

    - Desativaria todos os indices

    - Crie um pacote que compare o que existe na tabela X do oracle que não existe na tabela X do SQL após a transrencia, pois no momento de criação dos indices, sua aplicação ainda estara apontando para o Oracle, o que fara que não 100% dos dados sejam transferidos de uma vez e transfira esses dados para o SQL.

    - Faria a transferencia de todas as tabelas, como alguns tunnings aqui, por ser 24x7 imagino que voce possuam uma storage, tente minimizar o troughput da storage para os discos mantendo apenas essa maquina, ou seja, se voce possui algum outro servidor que acesse esta storage, se possivel, deixe-o sem processo que exiga alto indico de I/O. Caso não trabalhe com storage, não ha muito o que ser feito...rs....

    OBS: Transferencia via bulk do SSIS mesmo..... Lembre-se de alterar o RecoveryModel da base para Bulk-Logged, voce tera um ganho de performance consideravel.

    - Após a transferencia dos dados, habilitaria todos os indices

    - Rode o segundo pacote, para pegar os dados que não foram transferidos

     

    Bom, acho que é isso, apenas algumas recomendações importantes:

    - Recovery Model da base SQL para Bulk-Logged

    - TempDB em RAID 0 e LUN exclusiva

    - Desabilite os indices antes da carga de dados, se não, a cada dados inserido o indice sera atualizado, exemplo, um processo meu faz diariamente uma transferencia de quase 2 bilhoes de dados, com os indices: 23h de processamento, Desabilitando indices -> Carga de dados -> Habilitando indices (Ele ja atualiza os indices e os deixam prontos para serem utilizados): 4h


    Oracle OCA11g, MCC 2011! Dicas e novidades: www.fabrizziocaputo.wordpress.com
    quinta-feira, 26 de maio de 2011 12:08
    Moderador

Todas as Respostas

  • Marcos,

     

    Como voce disse que seu ambiente é 24x7, o que eu faria:

    - Crie pacotes do SSIS para criar todas as tabelas, constraints, indices, ou seja, todos os objetos no SQL porem sem dado nenhum

    - Desativaria todos os indices

    - Crie um pacote que compare o que existe na tabela X do oracle que não existe na tabela X do SQL após a transrencia, pois no momento de criação dos indices, sua aplicação ainda estara apontando para o Oracle, o que fara que não 100% dos dados sejam transferidos de uma vez e transfira esses dados para o SQL.

    - Faria a transferencia de todas as tabelas, como alguns tunnings aqui, por ser 24x7 imagino que voce possuam uma storage, tente minimizar o troughput da storage para os discos mantendo apenas essa maquina, ou seja, se voce possui algum outro servidor que acesse esta storage, se possivel, deixe-o sem processo que exiga alto indico de I/O. Caso não trabalhe com storage, não ha muito o que ser feito...rs....

    OBS: Transferencia via bulk do SSIS mesmo..... Lembre-se de alterar o RecoveryModel da base para Bulk-Logged, voce tera um ganho de performance consideravel.

    - Após a transferencia dos dados, habilitaria todos os indices

    - Rode o segundo pacote, para pegar os dados que não foram transferidos

     

    Bom, acho que é isso, apenas algumas recomendações importantes:

    - Recovery Model da base SQL para Bulk-Logged

    - TempDB em RAID 0 e LUN exclusiva

    - Desabilite os indices antes da carga de dados, se não, a cada dados inserido o indice sera atualizado, exemplo, um processo meu faz diariamente uma transferencia de quase 2 bilhoes de dados, com os indices: 23h de processamento, Desabilitando indices -> Carga de dados -> Habilitando indices (Ele ja atualiza os indices e os deixam prontos para serem utilizados): 4h


    Oracle OCA11g, MCC 2011! Dicas e novidades: www.fabrizziocaputo.wordpress.com
    quinta-feira, 26 de maio de 2011 12:08
    Moderador
  • entao, fazer o pacote SSIS e fazer scripts via bat sera q da na mesma ? axo que sim né porque o SSIS irei criar pacotes em paralelo tbm certo ?

    as PKs e FKS entao eu mantenho, para garantir que nao vem linhas orfas ?

    Sim ainda estamos vendo o storage pra adquirir hj temos um CX3 da dell

    de qq forma vou seguir suas dicas... obrigado mesmo !

    minha base nao e tao grande o total sao 80 giga a base inteira sendo q devo migrar uns 50 giga de dados...

    quinta-feira, 26 de maio de 2011 19:37
  • outra duvida o BULK vou ter q fazer a partir de texto ? , queria fazer direto do ORACLE pro SQL por isso q optei pelo LINKED Server

     

    quinta-feira, 26 de maio de 2011 19:42
  • Marcos,

     

    Não, ao se realizar transaferencia de dados pelo SSIS, quando voce define um data source e um destino, isso ja é bulk insert.

    Eu manteria as PK´s e FK´s para garantir a integridade do codigo, porem desabilita-las, inserir, habilita-las, pode ser mais performatico, imagino que se ja existam PK´s e FK´s do Oracle, voce não tera problema com dados orfaos.

     

    Entre processo BAT e SSIS, eu faria via SSIS por ser mais facil a construção.


    Oracle OCA11g, MCC 2011! Dicas e novidades: www.fabrizziocaputo.wordpress.com
    quinta-feira, 26 de maio de 2011 19:48
    Moderador
  • ah entendi... au pensei que era o Bulk TASK,

    eu vou pensar porque teria q fazer 500 data flows certo ?, sendo que insert com select posso fazer um codigo via excel em 10 minutos, né ?

     

    quinta-feira, 26 de maio de 2011 20:17