Migrar os Dados

É possível migrar os dados de uma das duas formas: on-line ou off-line.
  • Movimentação de Dados On-line: Você pode criar uma conexão do Oracle SQL Developer com o banco de dados de origem do Microsoft SQL Server e migrar os dados.
  • Movimentação de Dados Off-line: Você pode exportar os dados do Microsoft SQL Server. O SQL Developer criará uma série de arquivos BCP e sqlldr que você pode executar em um arquivo batch.

Os movimentos de dados on-line são adequados para pequenos conjuntos de dados, enquanto os movimentos de dados off-line são úteis para mover grandes volumes de dados. Além disso, em casos de grandes volumes de dados, é recomendável usar o Oracle Cloud Infrastructure File Storage para ajudar o desempenho geral da movimentação de dados durante o processo de migração.

Migrar os Dados Off-line

Durante o processo de captura, o script de movimentação de dados off-line teria sido gerado e os dados teriam sido extraídos para o diretório de saída do projeto chamado datamove. A execução desses scripts é o que migra os dados da máquina host de janelas do servidor sql para o Oracle Autonomous Database.

O diretório datamove deve ter esta aparência:
Wkdir
	projectName
		datamove
			YYYY-MM-DD_HH-MI-SS
				AdventureWorks

Dentro do diretório AdventureWorks, você deve ver seis subpastas que correspondem a todos os usuários do banco de dados SQL Server AdventureWorks.

Você deverá ver os seguintes diretórios na pasta AdventureWorks:

  • ADVENTUREWORKS
  • SALES_ADVENTUREWORKS
  • PERSON_ADVENTUREWORKS
  • PURCHASING_ADVENTUREWORKS
  • HUMANRESOURCES_ADVENTUREWORKS
  • PRODUCTION_ADVENTUREWORKS

Você deverá ver os seguintes arquivos na pasta AdventureWorks:

  • MicrosoftSQLServer_data.bat
  • MicrosoftSQLServer_data.sh
  • oracle_external.bat
  • oracle_external.sh
  • oracle_loader.bat
  • oracle_loader.sh

O script MicrosoftSqlServer_data.bat é o script de batch do sistema mestre Windows que chama outros scripts de batch criados em cada um dos diretórios de esquema. Veja a seguir o exemplo de execução:

  1. Inicie o script MicrosoftSqlServer_data.bat no prompt do sistema Windows de origem. No prompt, altere o diretório e informe o nome de host do servidor Windows, a conta do administrador do sistema Windows (geralmente sa) e a senha SA.
    prompt> cd "C:\_rkd\_OCI\DB-Migration\Non-Oracle\MS-SQL\wkdir\Capture\sqladvworks4\datamove\YYYY-MM-DD_HH-MI-SS\AdventureWorks\“
    prompt> MicrosoftSQLServer_data.bat sql-server-hostname sa sa-password

    Durante a execução acima, os respectivos logs são gerados para cada tabela de banco de dados por esquema e armazenados em cada uma das pastas de esquema no log do subdiretório.

  2. (Opcional) Revise esses logs durante a migração dos dados ou após a conclusão e valide o movimento dos dados.
    É altamente recomendável revisar os logs e validar a migração de dados. Veja a seguir um exemplo de log, com o resumo da carga em negrito.
    SQL*Loader: Release 19.0.0.0.0 - Production on Thu Mar 4 07:39:44 2021
    Version 19.10.0.0.0
    
    Copyright (c) 1982, 2021, Oracle and/or its affiliates.  All rights reserved.
    
    Control File:   control\AdventureWorks.DatabaseLog.ctl
    Data File:      data/AdventureWorks.DatabaseLog.dat
      File processing option string: "str '<EORD>'"
      Bad File:     control\AdventureWorks.DatabaseLog.bad
      Discard File:  none specified
     
     (Allow all discards)
    
    Number to load: ALL
    Number to skip: 0
    Errors allowed: 50
    Bind array:     250 rows, maximum of 1048576 bytes
    Continuation:    none specified
    Path used:      Conventional
    
    Table ADVENTUREWORKS.DATABASELOG, loaded from every logical record.
    Insert option in effect for this table: INSERT
    TRAILING NULLCOLS option in effect
    
       Column Name                  Position   Len  Term Encl Datatype
    ------------------------------ ---------- ----- ---- ---- ---------------------
    DATABASELOGID                       FIRST     *           CHARACTER            
        Terminator string : '<EOFD>'
    POSTTIME                             NEXT     *           CHARACTER            
        Terminator string : '<EOFD>'
        SQL string for column : "TO_TIMESTAMP(:PostTime, 'yyyy-mm-dd HH24:mi:ss.ff3')"
    DATABASEUSER                         NEXT     *           CHARACTER            
        Terminator string : '<EOFD>'
        SQL string for column : "DECODE(:DatabaseUser, CHR(00), ' ', :DatabaseUser)"
    EVENT                                NEXT     *           CHARACTER            
        Terminator string : '<EOFD>'
        SQL string for column : "DECODE(:Event, CHR(00), ' ', :Event)"
    SCHEMA                               NEXT     *           CHARACTER            
        Terminator string : '<EOFD>'
        SQL string for column : "DECODE(:Schema, CHR(00), ' ', :Schema)"
    OBJECT                               NEXT     *           CHARACTER            
        Terminator string : '<EOFD>'
        SQL string for column : "DECODE(:Object, CHR(00), ' ', :Object)"
    TSQL                                 NEXT *****           CHARACTER            
        Maximum field length is 2000000
        Terminator string : '<EOFD>'
    XMLEVENT                             NEXT *****           CHARACTER            
        Maximum field length is 2000000
        Terminator string : '<EOFD>'
    value used for ROWS parameter changed from 250 to 1
    
    Table ADVENTUREWORKS.DATABASELOG:
      1596 Rows successfully loaded.
      0 Rows not loaded due to data errors.
      0 Rows not loaded because all WHEN clauses were failed.
      0 Rows not loaded because all fields were null.
    
    
    Space allocated for bind array:                4001572 bytes(1 rows)
    Read   buffer bytes: 1048576
    
    Total logical records skipped:          0
    Total logical records read:          1596
    Total logical records rejected:         0
    Total logical records discarded:        0
    
    Run began on Thu Mar 04 07:39:44 2021
    Run ended on Thu Mar 04 07:39:56 2021
    
    Elapsed time was:     00:00:12.44
    CPU time was:         00:00:01.79
    

Testar a Migração

Dependendo da complexidade do banco de dados que está sendo migrado, uma grande parte do projeto de migração pode estar testando.

A Oracle não fornece nenhuma ferramenta que possa validar automaticamente um banco de dados migrado para você. Esta fase da migração deve ser planejada e levada em consideração antes do início da migração. O seguinte deve fazer parte do plano do seu projeto:

  1. Verificar a estrutura do banco de dados.
  2. Verificar a segurança do banco de dados.
  3. Verifique os dados.
  4. Verifique a correção lógica das views.
  5. Teste os aplicativos.