Nota

Eseguire la migrazione da un database non di tipo container 19c in locale a un container database Oracle Database 23ai

Introduzione

Zero Downtime Migration (ZDM) 21.5 introduce la migrazione fisica con un aggiornamento in volo, consentendo transizioni perfette per i database Oracle. Questa funzione supporta la migrazione dei database Oracle 11.2.0.4 e 12c ai database Oracle 19c, nonché le migrazioni dai database di origine 19c a Oracle Database 23ai.

Questa esercitazione descrive in che modo ZDM facilita la migrazione e la conversione di un database CDB (Non-Container Database) di origine 19c in un CDB durante l'esecuzione di un aggiornamento a livello di destinazione. ZDM esegue una migrazione iniziale utilizzando un database di destinazione non CDB temporaneo per consentire ai clienti di eseguire la migrazione e l'upgrade di un database non CDB. Al termine di questa fase iniziale, ZDM utilizza l'upgrade automatico per eseguire la conversione in multi-tenant e aggiornare il database alla versione desiderata.

Questa esercitazione è stata creata in modo specifico per la migrazione dei database non CDB in locale in cui è in esecuzione la versione 19c da una piattaforma Linux al CDB Oracle Database 23ai.

Di seguito sono riportate le proprietà e i dettagli degli ambienti di origine e di destinazione.

Immagine che mostra i dettagli dell'origine e della destinazione

Obiettivi

Prerequisiti

Task 1: Preparare e installare il server ZDM

  1. Eseguire il provisioning di un host di computazione dedicato per l'installazione del software ZDM. L'host su cui è installato il software ZDM è denominato host del servizio ZDM. È necessario soddisfare i prerequisiti riportati di seguito nell'host.

    • Oracle Linux 8 e dimensione del volume di avvio di 200 GB.
    • 100 GB di spazio di archiviazione gratuito.
    • Nessun Oracle Grid Infrastructure in esecuzione su di esso.
    • Possibilità di connessione al database di origine e di destinazione (server).
  2. Connettersi all'host ZDM utilizzando putty.

  3. Eseguire il comando seguente per estendere il file system e rendere disponibili i 200 GB.

    [opc@zdm ~]$ sudo su -
    [root@zdm ~]# df -h /
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda3        39G  3.2G   36G   9% /
    [root@zdm ~]# /usr/libexec/oci-growfs -y
    [root@zdm ~]# df -h /
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda3       192G  3.2G  189G   2% /
    
  4. Creare un nuovo gruppo, un nuovo utente e le directory necessarie come utente root utilizzando il comando seguente.

    [root@zdm ~]# groupadd zdm
    [root@zdm ~]# useradd -g zdm zdmuser
    [root@zdm ~]# mkdir -p /home/zdmuser/zdminstall
    [root@zdm ~]# mkdir /home/zdmuser/zdmhome
    [root@zdm ~]# mkdir /home/zdmuser/zdmbase
    [root@zdm ~]# chown -R zdmuser:zdm /home/zdmuser/
    
  5. Installare i pacchetti software necessari come utente root utilizzando il comando seguente.

    [root@zdm ~]# yum install oraclelinux-developer-release-el8 libnsl perl unzip glibc-devel expect libaio ncurses-compat-libs ncurses-devel numactl-libs openssl mlocate bind-utils
    
  6. Scaricare la versione 21.5 del software ZDM e copiare il file zip nell'host ZDM nella directory /home/zdmuser/zdminstall/. Modificare il proprietario del file zip in zdmuser come utente root utilizzando il comando seguente.

    [root@zdm ~]# chown zdmuser:zdm /home/zdmuser/zdminstall/zdm21.5.zip
    
  7. Installare il software ZDM come zdmuser con il comando seguente.

    [zdmuser@zdm ~]$ cd /home/zdmuser/zdminstall/
    [zdmuser@zdm zdminstall]$ unzip zdm21.5.zip
    
    [zdmuser@zdm zdminstall]$ ZDMHOME=/home/zdmuser/zdmhome
    [zdmuser@zdm zdminstall]$ ZDMBASE=/home/zdmuser/zdmbase
    
    [zdmuser@zdm zdminstall]$ /home/zdmuser/zdminstall/zdm21.5/zdminstall.sh setup oraclehome=/home/zdmuser/zdmhome oraclebase=/home/zdmuser/zdmbase ziploc=/home/zdmuser/zdminstall/zdm21.5/zdm_home.zip -zdm
    ZDM service setup finished successfully...
    
  8. Eseguire il comando seguente per avviare ZDM e controllare lo stato come zdmuser.

    [zdmuser@zdm ~]$ $ZDMHOME/bin/zdmservice start
    Return code is 0
    Server started successfully.
    [zdmuser@zdm ~]$ $ZDMHOME/bin/zdmservice status
    ---------------------------------------
    		Service Status
    ---------------------------------------
    Running:       true
    
  9. Eseguire il comando seguente per creare una coppia di chiavi SSH per zdmuser. Verrà utilizzato in un secondo momento per eseguire il login al database server di origine e di destinazione utilizzando SSH. Mantenere le impostazioni predefinite.

    [zdmuser@zdm ~]$ ssh-keygen
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/zdmuser/.ssh/id_rsa):
    Created directory '/home/zdmuser/.ssh'.
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /home/zdmuser/.ssh/id_rsa.
    Your public key has been saved in /home/zdmuser/.ssh/id_rsa.pub.
    The key fingerprint is:
    SHA256:giU7jz/8Z1VPiS9Ds/gfokHdevpm0dk59fPYEHRChs4
    zdmuser@zdmhost
    The key's randomart image is:
    
  10. Creare un token di autenticazione per l'utente OCI dalla pagina Dettagli utente.

    Fare clic su Token di autenticazione, Genera token, immettere Descrizione e fare clic su Genera token.

    Nota: copiare questo token per i record in quanto non verrà visualizzato di nuovo.

    Immagine che mostra la creazione del token di autenticazione

  11. Eseguire il comando riportato di seguito per installare lo strumento Oracle Cloud Infrastructure Command Line Interface (OCI CLI) come zdmuser che verrà utilizzato per accedere alle risorse OCI. Ad esempio, copia il file di dump di Data Pump nello storage degli oggetti OCI.

    [zdmuser@zdm ~]$ bash -c "$(curl -L https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.sh)"
    

    Nota: l'installazione dell'interfaccia CLI OCI richiede OCID utente, OCID tenancy, Home region, utilizzare questi valori in base alla tenancy cloud in uso e mantenere gli altri valori dei parametri come predefiniti.

    [zdmuser@zdm ~]$ oci setup config
    
  12. Eseguire il comando riportato di seguito per caricare la chiave pubblica di firma API nell'utente OCI nella tenancy cloud da zdmhost.

    [zdmuser@zdmhost ~]$ cat /home/zdmuser/.oci/oci_api_key_public.pem
    -----BEGIN PUBLIC KEY-----
    **********
    -----END PUBLIC KEY-----
    

    Andare alla console OCI, andare alla pagina Dettagli utente, fare clic su Chiavi API e su Aggiungi chiave API. Selezionare Incolla chiave pubblica, immettere l'output del comando precedente e fare clic su Aggiungi.

    Immagine che mostra l'aggiunta della chiave API

  13. Eseguire il comando riportato di seguito per creare un bucket di storage degli oggetti OCI standard nella tenancy OCI utilizzando l'interfaccia CLI OCI o la console OCI.

    [zdmuser@zdm ~]$ oci os bucket create --compartment-id ocid1.compartment.oc1.....lh4lfamxdrpuxg3x……… --name zdmbucket
    
  14. Connettività da zdmhost ai database server di origine e di destinazione: copiare la chiave SSH da zdmhost come zdmuser nell'origine e nella destinazione come creato nel task 1.9.

    #on ZDM host as zdmuser
    [zdmuser@zdm ~]$ cat .ssh/id_rsa.pub
    #on the source database host as user opc
    [opc@sourcedb ~]$ vi .ssh/authorized_keys
    #insert the public key and save the changes
    [opc@targetdb ~]$ vi .ssh/authorized_keys
    #insert the public key and save the changes
    
  15. Risolvere i nomi host del database di origine e del database di destinazione in zdmhost copiando il nome host, l'IP e il nome FQDN in /etc/hosts su zdmhost come utente root.

Task 2: Esegui controlli preliminari sia nel database di origine che in quello di destinazione

  1. Eseguire i comandi riportati di seguito per creare ORACLE_HOME nell'istanza di Oracle Base Database Service di destinazione con la stessa versione dell'origine.

    [root@tgtzdm ~]# dbcli list-dbhomes
    
    ID                                       Name                 DB Version                               Home Location                                 Status
    ---------------------------------------- -------------------- ---------------------------------------- --------------------------------------------- ----------
    c548b052-64b7-4257-bfdc-d7c201a430ab     OraDB23000_home1     23.5.0.24.07                             /u01/app/oracle/product/23.0.0.0/dbhome_1     Configured
    
    [root@tgt23ai ~]# dbcli create-dbhome -v 19.23
    
    Job details
    ----------------------------------------------------------------
    					ID:  a63db258-7ffc-4dee-b8e5-5accf223e39b
    			Description:  Database Home creation with Id : db1b4bb8-2ed0-4c0f-ade9-a656f21cf808
    				Status:  Created
    				Created:  September 19, 2024 at 3:22:48 PM IST
    			Progress:  0%
    				Message:  Create Database Home
    			Error Code:
    
  2. Eseguire il comando riportato di seguito per convalidare la creazione della home del database.

    [root@tgt23ai ~]# dbcli describe-job --jobid a63db258-7ffc-4dee-b8e5-5accf223e39b
    
    Job details
    ----------------------------------------------------------------
    					ID:  a63db258-7ffc-4dee-b8e5-5accf223e39b
    			Description:  Database Home creation with Id : db1b4bb8-2ed0-4c0f-ade9-a656f21cf808
    				Status:  Success
    				Created:  September 19, 2024 at 3:22:48 PM IST
    			Progress:  100%
    				Message:  Create Database Home
    			Error Code:
    
    Task Name                                                                Start Time                          End Time                            Status
    ------------------------------------------------------------------------ ----------------------------------- ----------------------------------- ----------
    Database home creation                                                   September 19, 2024 at 3:22:49 PM IST September 19, 2024 at 3:27:40 PM IST Success
    
    
    [root@test23ai ~]# dbcli list-dbhomes
    
    ID                                       Name                 DB Version                               Home Location                                 Status
    ---------------------------------------- -------------------- ---------------------------------------- --------------------------------------------- ----------
    43247858-4ff6-4fcb-85f2-09d453d863bf     OraDB23000_home1     23.5.0.24.07                             /u01/app/oracle/product/23.0.0.0/dbhome_1     Configured
    a63db258-7ffc-4dee-b8e5-5accf223e39b     OraDB19000_home1     19.23.0.0.0                              /u01/app/oracle/product/19.0.0.0/dbhome_1     Configured
    

Task 3: Preparare il file di risposta

  1. Copiare il file di risposta del modello in zdmhost posizionato in $ZDM_HOME/rhp/zdm/template/ in un'altra directory.

  2. Modificare il file di risposta copiato in base all'impostazione dell'ambiente di origine e di destinazione. Di seguito è riportato un file di risposta di esempio condiviso con parametri minimi utilizzati per completare la migrazione con l'aggiornamento.

    TGT_DB_UNIQUE_NAME=tgt23ai_ai
    MIGRATION_METHOD=OFFLINE_PHYSICAL
    DATA_TRANSFER_MEDIUM=OSS
    PLATFORM_TYPE=VMDB
    SRC_DB_LISTENER_PORT=1521
    HOST=https://swiftobjectstorage.eu-frankfurt-1.oraclecloud.com/v1/frrudica1wgd
    OPC_CONTAINER=ZDM
    NONCDBTOPDB_CONVERSION=TRUE
    TGT_SKIP_DATAPATCH=FALSE
    ZDM_NONCDBTOPDB_PDB_NAME=newpdb23
    ZDM_PRE_UPGRADE_TARGET_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_1
    

Task 4: Valutazione della migrazione

Valutare la migrazione modificando i parametri in base ai dettagli di origine e destinazione.

./zdmcli migrate database -rsp /home/zdmuser/response_files/zdm_phyupg.rsp \
-sourcedb test \
-sourcenode test23ai1 \
-srcauth zdmauth \
-srcarg1 user:opc \
-srcarg2 identity_file:/home/zdmuser/.ssh/id_rsa \
-srcarg3 sudo_location:/usr/bin/sudo \
-targetnode tgt23ai \
-tgtauth zdmauth \
-tgtarg1 user:opc \
-tgtarg2 identity_file:/home/zdmuser/.ssh/id_rsa \
-tgtarg3 sudo_location:/usr/bin/sudo \
-tdekeystorepasswd \
-tgttdekeystorepasswd \
-backupuser oracleidentitycloudservice/s****aik@oracle.com \
-eval

Nota: è possibile monitorare il job utilizzando il comando seguente.

$ZDM_HOME/bin/zdmcli query job -jobid <jobid>

Task 5: eseguire la migrazione effettiva

Eseguire la migrazione effettiva utilizzando il comando seguente. Modificare i valori in base all'ambiente di origine e di destinazione.

./zdmcli migrate database -rsp /home/zdmuser/response_files/zdm_phyupg.rsp \
-sourcedb test \
-sourcenode test23ai1 \
-srcauth zdmauth \
-srcarg1 user:opc \
-srcarg2 identity_file:/home/zdmuser/.ssh/id_rsa \
-srcarg3 sudo_location:/usr/bin/sudo \
-targetnode tgt23ai \
-tgtauth zdmauth \
-tgtarg1 user:opc \
-tgtarg2 identity_file:/home/zdmuser/.ssh/id_rsa \
-tgtarg3 sudo_location:/usr/bin/sudo \
-tdekeystorepasswd \
-tgttdekeystorepasswd \
-backupuser oracleidentitycloudservice/s***aik@oracle.com

Conferme

Altre risorse di apprendimento

Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti gratuiti sulla formazione su Oracle Learning YouTube channel. Inoltre, visita education.oracle.com/learning-explorer per diventare un Oracle Learning Explorer.

Per la documentazione del prodotto, visita l'Oracle Help Center.