Migración de datos

Puede migrar los datos de una de estas dos formas: en línea o fuera de línea.
  • Online Data Move: puede crear una conexión desde Oracle SQL Developer a la base de datos origen de Microsoft SQL Server y migrar los datos.
  • Movimiento de datos fuera de línea: puede exportar los datos de Microsoft SQL Server. SQL Developer creará una serie de archivos BCP y sqlldr que puede ejecutar desde un archivo por lotes.

Los movimientos de datos en línea son adecuados para pequeños juegos de datos, mientras que los movimientos de datos fuera de línea son útiles para mover grandes volúmenes de datos. Además, en casos de grandes volúmenes de datos, se recomienda utilizar Oracle Cloud Infrastructure File Storage para ayudar a mejorar el rendimiento general del movimiento de datos durante el proceso de migración.

Migración de datos fuera de línea

Durante el proceso de captura, se habría generado el script de movimiento de datos fuera de línea y los datos se habrían extraído en el directorio de salida del proyecto denominado datamove. La ejecución de estos scripts es lo que migra los datos de la máquina host de Windows del servidor sql a Oracle Autonomous Database.

El directorio datamove se debe parecer al siguiente:
Wkdir
	projectName
		datamove
			YYYY-MM-DD_HH-MI-SS
				AdventureWorks

Dentro del directorio AdventureWorks, debería ver seis subcarpetas que corresponden a todos los usuarios de la base de datos SQL Server AdventureWorks.

Debe ver los siguientes directorios en la carpeta AdventureWorks:

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

Debe ver los siguientes archivos en la carpeta AdventureWorks:

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

La secuencia de comandos MicrosoftSqlServer_data.bat es la secuencia de comandos maestra por lotes del sistema Windows que llama a otras secuencias de comandos por lotes creadas dentro de cada uno de los directorios de esquema. A continuación se muestra un ejemplo de ejecución:

  1. Inicie la secuencia de comandos MicrosoftSqlServer_data.bat en el indicador del sistema Windows de origen. En el indicador, cambie al directorio e introduzca el nombre de host del servidor de Windows, la cuenta de administrador del sistema de Windows (normalmente sa) y la contraseña de 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 la ejecución anterior, se generan los respectivos logs para cada tabla de base de datos por esquema y se almacenan en cada una de las carpetas de esquema en el log de subdirectorio.

  2. (Opcional) Revise estos logs durante la migración de datos o después de la finalización, y valide el movimiento de datos.
    Se recomienda revisar los logs y validar la migración de datos. A continuación, se muestra un log de ejemplo, con el resumen de la carga en negrita.
    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
    

Prueba de la migración

Según la complejidad de la base de datos que se migra, una gran parte del proyecto de migración puede estar probando.

Oracle no proporciona ninguna herramienta que pueda validar automáticamente una base de datos migrada. Esta fase de la migración debe planificarse y tenerse en cuenta antes de que comience la migración. Debe formar parte del plan del proyecto:

  1. Verifique la estructura de la base de datos.
  2. Verifique la seguridad de la base de datos.
  3. Verifique los datos.
  4. Verifique la corrección lógica de las vistas.
  5. Pruebe las aplicaciones.