Eseguire la migrazione dei dati

È possibile eseguire la migrazione dei dati in uno dei due modi seguenti: online o offline.
  • Spostamento dei dati in linea: è possibile creare una connessione dall'interno di Oracle SQL Developer al database di origine di Microsoft SQL Server ed eseguire la migrazione dei dati.
  • Spostamento dei dati non in linea: è possibile esportare i dati da Microsoft SQL Server. SQL Developer creerà una serie di file BCP e sqlldr che è possibile eseguire da un file batch.

Gli spostamenti dei dati in linea sono appropriati per set di dati di piccole dimensioni, mentre gli spostamenti dei dati offline sono utili per spostare grandi volumi di dati. Inoltre, nei casi di grandi volumi di dati, si consiglia di utilizzare Oracle Cloud Infrastructure File Storage per supportare le prestazioni complessive dello spostamento dei dati durante il processo di migrazione.

Migrazione dei dati offline

Durante il processo di acquisizione, lo script di spostamento dei dati non in linea sarebbe stato generato e i dati sarebbero stati estratti nella directory di output del progetto denominata datamove. L'esecuzione di questi script è la migrazione dei dati dalle finestre server sql al computer host di Oracle Autonomous Database.

La directory datamove dovrebbe avere l'aspetto seguente:
Wkdir
	projectName
		datamove
			YYYY-MM-DD_HH-MI-SS
				AdventureWorks

Nella directory AdventureWorks devono essere visualizzate sei sottocartelle che corrispondono a tutti gli utenti del database SQL Server AdventureWorks.

La cartella AdventureWorks contiene le seguenti directory:

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

Nella cartella AdventureWorks devono essere visualizzati i seguenti file:

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

Lo script MicrosoftSqlServer_data.bat è lo script batch del sistema Windows master che richiama altri script batch creati all'interno di ciascuna directory dello schema. Di seguito è riportata l'esecuzione di esempio.

  1. Avviare lo script MicrosoftSqlServer_data.bat nel prompt di sistema Windows di origine. Al prompt, passare alla directory e immettere il nome host del server Windows, l'account amministratore del sistema Windows (in genere sa) e la password 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 l'esecuzione precedente, i rispettivi log vengono generati per ogni tabella di database in base allo schema e memorizzati in ciascuna cartella di schema sotto il log della sottodirectory.

  2. (Facoltativo) Rivedere questi log durante la migrazione dei dati o dopo il completamento e convalidare lo spostamento dei dati.
    Si consiglia di esaminare i log e convalidare la migrazione dei dati. Di seguito è riportato un log di esempio, con il riepilogo del carico in grassetto.
    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
    

Test della migrazione

A seconda della complessità del database di cui si esegue la migrazione, gran parte del progetto di migrazione potrebbe essere il test.

Oracle non fornisce strumenti in grado di convalidare automaticamente un database di cui è stata eseguita la migrazione. Questa fase della migrazione dovrebbe essere pianificata e presa in considerazione prima dell'inizio della migrazione. Il piano di progetto deve includere quanto segue:

  1. Verificare la struttura del database.
  2. Verificare la sicurezza del database.
  3. Verificare i dati.
  4. Verificare la correttezza logica delle viste.
  5. Eseguire il test delle applicazioni.