Note :

Migrer d'une base de données non conteneur 19c sur place vers une base de données conteneur Oracle Database 23ai

Présentation

ZDM 21.5 introduit la migration physique avec une mise à niveau en cours, permettant des transitions transparentes pour les bases de données Oracle. Cette fonction prend en charge la migration des bases de données Oracle 11.2.0.4 et 12c vers les bases de données Oracle 19c, ainsi que les migrations des bases de données sources 19c vers Oracle Database 23ai.

Ce tutoriel explique comment ZDM facilite la migration et la conversion d'une base de données 19c non conteneur source en base de données conteneur lors de l'exécution d'une mise à niveau au niveau cible. ZDM effectue une migration initiale à l'aide d'une base de données cible non conteneur temporaire pour que les clients puissent migrer et mettre à niveau une base de données non conteneur. À la fin de cette phase initiale, ZDM tire parti de la mise à niveau automatique pour la convertir en multilocataire et mettre à niveau la base de données vers la version souhaitée.

Ce tutoriel est spécialement conçu pour la migration des bases de données non conteneur sur place exécutant la version 19c d'une plate-forme Linux vers la base de données conteneur Oracle Database 23ai.

Vous trouverez ci-dessous les propriétés et les détails des environnements source et cible.

Image présentant les détails de la source et de la cible

Objectifs

Préalables

Tâche 1 : Préparer et installer le serveur ZDM

  1. Provisionnez un hôte de calcul dédié pour l'installation du logiciel ZDM. L'hôte sur lequel le logiciel ZDM est installé est appelé hôte du service ZDM. Les conditions requises suivantes doivent être remplies sur l'hôte :

    • Oracle Linux 8 et volume de démarrage de 200 Go.
    • 100 Go d'espace de stockage libre.
    • Aucune infrastructure Oracle Grid Infrastructure ne s'exécute dessus.
    • Possibilité de se connecter à la base de données source et cible (serveurs).
  2. Connectez-vous à l'hôte ZDM à l'aide de putty.

  3. Exécutez la commande suivante pour étendre le système de fichiers afin de rendre les 200 Go disponibles.

    [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. Créez un groupe, un utilisateur et les répertoires requis en tant qu'utilisateur racine à l'aide de la commande suivante.

    [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. Installez les ensembles de logiciels requis en tant qu'utilisateur racine à l'aide de la commande suivante.

    [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. Téléchargez le logiciel ZDM version 21.5 et copiez le fichier zip sur l'hôte ZDM dans le répertoire /home/zdmuser/zdminstall/. Remplacez le responsable du fichier zip par zdmuser en tant qu'utilisateur racine à l'aide de la commande suivante.

    [root@zdm ~]# chown zdmuser:zdm /home/zdmuser/zdminstall/zdm21.5.zip
    
  7. Installez le logiciel ZDM en tant que zdmuser à l'aide de la commande suivante.

    [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. Exécutez la commande suivante pour démarrer ZDM et vérifiez le statut 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. Exécutez la commande suivante pour créer une paire de clés SSH pour zdmuser. Cette fonction sera utilisée ultérieurement pour vous connecter au serveur de base de données source et cible à l'aide de SSH. Conservez les valeurs par défaut.

    [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. Créez un jeton d'authentification pour votre utilisateur OCI, à partir de la page Détails de l'utilisateur.

    Cliquez sur Jetons d'authentification, Générer un jeton, entrez une description et cliquez sur Générer un jeton.

    Note : Copiez ce jeton pour vos dossiers, car il ne sera plus affiché.

    Image présentant la création du jeton d'authentification

  11. Exécutez la commande suivante pour installer l'outil d'interface de ligne de commande d'Oracle Cloud Infrastructure (interface de ligne de commande OCI) sous zdmuser qui sera utilisé pour accéder aux ressources OCI. Par exemple, copiez le fichier de vidage de l'extraction de données dans le service de stockage d'objets OCI.

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

    Note : L'installation de l'interface de ligne de commande OCI nécessite l'OCID de l'utilisateur, l'OCID de la location et la région principale, utilisez ces valeurs selon votre location en nuage et conservez les autres valeurs de paramètre par défaut.

    [zdmuser@zdm ~]$ oci setup config
    
  12. Exécutez la commande suivante pour charger la clé publique de signature d'API à l'utilisateur OCI dans la location en nuage à partir de zdmhost.

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

    Allez à la console OCI, naviguez jusqu'à la page Détails de l'utilisateur, cliquez sur Clés d'API et sur Ajouter une clé d'API. Sélectionnez Coller la clé publique, entrez la sortie de la commande ci-dessus et cliquez sur Ajouter.

    Image présentant l'ajout d'une clé d'API

  13. Exécutez la commande suivante pour créer un seau de stockage d'objets OCI standard dans la location OCI à l'aide de l'interface de ligne de commande OCI ou de la console OCI.

    [zdmuser@zdm ~]$ oci os bucket create --compartment-id ocid1.compartment.oc1.....lh4lfamxdrpuxg3x……… --name zdmbucket
    
  14. Connectivité de zdmhost aux serveurs de base de données source et cible : Copiez la clé SSH de zdmhost en tant que zdmuser vers la source et la cible telles que créées dans la tâche 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. Résolvez les noms d'hôte de la base de données source et de la base de données cible à zdmhost en copiant le nom d'hôte, l'adresse IP et le nom de domaine complet à /etc/hosts sur zdmhost en tant qu'utilisateur racine.

Tâche 2 : Exécuter des vérifications préalables dans les bases de données source et cible

  1. Exécutez les commandes suivantes pour créer ORACLE_HOME sur l'instance Oracle Base Database Service cible avec la même version que la source.

    [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. Exécutez la commande suivante pour valider la création du répertoire de base de données.

    [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
    

Tâche 3 : Préparer le fichier de réponses

  1. Copiez le fichier de réponse du modèle sur zdmhost placé sous $ZDM_HOME/rhp/zdm/template/ dans un autre répertoire.

  2. Modifiez le fichier de réponses copié conformément à la configuration de l'environnement source et cible. Voici un exemple de fichier de réponses partagé avec des paramètres minimaux utilisés pour effectuer la migration avec mise à niveau.

    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
    

Tâche 4 : Évaluer la migration

Évaluez la migration en modifiant les paramètres en fonction des détails de la source et de la cible.

./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

Note : Vous pouvez surveiller la tâche à l'aide de la commande suivante.

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

Tâche 5 : Effectuer la migration réelle

Effectuez la migration réelle à l'aide de la commande suivante. Modifiez les valeurs en fonction de l'environnement source et cible.

./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

Confirmation

Autres ressources d'apprentissage

Explorez d'autres laboratoires sur la page docs.oracle.com/learn ou accédez à plus de contenu d'apprentissage gratuit sur le canal YouTube d'Oracle Learning. De plus, visitez education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.

Pour obtenir de la documentation sur le produit, visitez Oracle Help Center.