Migrer la base de données d'application

Oracle Autonomous Transaction Processing supprime le besoin de tenir à jour, d'appliquer des patches et d'optimiser l'hôte et le logiciel de la base de données, et ne fournit donc qu'un accès au niveau de schéma de la base de données. Pour cette raison, les outils de migration disponibles pour migrer une base de données sur site vers Autonomous Transaction Processing sont basés sur datapum, un outil de migration de niveau schéma inclus dans Oracle Database.

A propos de la migration de la base de données d'applications

Le processus de migration de base de données consiste à créer un dump de schéma de base de données sur la base de données source, à le télécharger vers le stockage d'objet sur Oracle Cloud Infrastructure (OCI), à configurer la base de données Autonomous Transaction Processing pour l'importer à partir du stockage d'objet et à importer le dump de schéma de base de données à partir d'Oracle Cloud Infrastructure Object Storage.

Voici un aperçu du processus :

  1. Exportez les schémas de base de données dans un fichier dump local.
  2. Déplacez le fichier dump vers Object Storage à l'aide de la CLI OCI.
  3. Obtenez l'OCID de la base de données autonome.
  4. Obtenez le portefeuille pour accéder à la base de données autonome à partir de la base de données source (ou d'un hôte alternatif).
  5. Créez un tunnel local dans la base de données autonome pour la configuration.
  6. Obtenez un jeton d'authentification OCI pour que la base de données autonome puisse accéder à Oracle Cloud Infrastructure Object Storage.
  7. Configurez les informations d'identification d'accès à la base de données autonome.
  8. Importez le fichier dump à partir d'Oracle Cloud Infrastructure Object Storage dans la base de données autonome.

Exporter le schéma et les données de base de données

Exportez le schéma de base de données et les données dans un seul fichier dump.

  1. Créez un dossier export pour le fichier dump.
    Notez que nous créons un seul dump de fichiers, qui peut être extrêmement volumineux dans certaines circonstances. Reportez-vous à d'autres options pour utiliser Data Pump pour créer des fichiers multipart.
    EXPORT_DB_DIRNAME=export
    mkdir /home/oracle/${ DIRNAME}
    # drop directory if it exists
    echo "DROP DIRECTORY ${EXPORT_DB_DIRNAME};" | sqlplus system/PASSWORD@$HOST:PORT/SERVICE
    # create a directory object in the DB for export with datapump, pointing to the folder created above
    echo "CREATE DIRECTORY ${EXPORT_DB_DIRNAME} AS '/home/oracle/export/';" | sqlplus 
    system/PASSWORD@$HOST:PORT/SERVICE
    # export the schema 
    expdp system/PASSWORD@$HOST:PORT/SERVICE schemas=SCHEMA_NAME 
    DIRECTORY=${EXPORT_DB_DIRNAME}
  2. Déplacez le fichier dump vers le bucket Oracle Cloud Infrastructure Object Storage que vous avez créé précédemment à l'aide de l'interface de ligne de commande Oracle Cloud Infrastructure (OCI).
    oci os object put \
    -bn bucket-name \
    --file /home/oracle/export/expdat.dmp \
    --name expdat.dmp

Obtenir l'OCID d'Autonomous Database

Obtenez l'OCID, l'adresse IP privée et l'URL d'adresse privée de la base de données Oracle Autonomous Transaction Processing.

  1. Dans la console Oracle Cloud Infrastructure, sélectionnez Oracle Database, puis Traitement autonome des transactions.
  2. Sélectionnez le compartiment dans la liste Compartiments à gauche de la page.
    Le compartiment est l'endroit où vous avez déployé les ressources.
  3. Cliquez sur la base de données provisionnée précédemment pour obtenir les détails.
  4. Copiez l'OCID, l'adresse IP privée et l'URL d'adresse privée (nom d'hôte) et enregistrez-les dans un bloc-notes pour plus tard.

Obtenir le fichier de portefeuille de base de données

Obtenez le fichier de portefeuille de base de données Oracle Autonomous Transaction Processing et mettez à jour l'emplacement en définissant le répertoire pour pointer vers l'emplacement du portefeuille dans le fichier sqlnet.ora.

  1. Utilisez l'interface de ligne de commande Oracle Cloud Infrastructure (OCI) pour obtenir le fichier de portefeuille de base de données Autonomous Transaction Processing à l'aide de votre OCID et de votre mot de passe.
    oci db autonomous-database generate-wallet --autonomous-database-
    id your ATP OCID --file wallet.zip --password your-password
  2. Décompressez le portefeuille.
    unzip wallet.zip
  3. Modifiez le fichier sqlnet.ora et remplacez la valeur du répertoire pour correspondre à l'emplacement des fichiers de portefeuille décompressés.
    WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = 
    (DIRECTORY="/home/oracle/ ")))
    SSL_SERVER_DN_MATCH=yes
  4. Définissez la variable d'environnement TNS_ADMIN pour qu'elle corresponde au dossier dans lequel le portefeuille a été décompressé.
    export TNS_ADMIN=$(pwd)

Créer un tunnel local vers Autonomous Database via un hôte de bastion

Créez un tunnel en configurant l'adresse IP publique de l'hôte bastion.

  1. Obtenez l'adresse IP publique de l'hôte bastion à partir de la sortie terraform.
    Si le serveur Apache Tomcat a été déployé dans un sous-réseau public, vous pouvez utiliser l'adresse IP publique du serveur Tomcat, sinon utiliser l'adresse IP publique hôte bastion.
  2. Définir l'adresse IP du bastion pour créer un tunnel.
    export BASTION_IP=Public IP of the bastion
  3. Exécutez la commande pour exporter l'hôte de base de données à l'aide de l'adresse IP d'adresse privée pour la base de données Autonomous Transaction Processing et ssh vers l'hôte de base de données.
    DB_HOST est l'adresse IP privée rassemblée précédemment.
    export DB_HOST=10.0.2.2
    ssh -4 -M -S socket -fnNT -L 1522:${DB_HOST}:1522 opc@${BASTION_IP} cat -
    Lorsque vous êtes invité, saisissez Oui pour accuser réception du nouvel hôte.
  4. Modifiez le fichier /etc/hosts pour pointer vers l'hôte d'adresse privée de la base de données autonome vers 127.0.0.1 (localhost).
    Ceci recherche l'hôte d'adresse privée dans le fichier tnsnames.ora.
    ATP_HOSTNAME=$(sed 's|.*(host=\([a-z0-9.-]*\)).*|\1|;' 
    tnsnames.ora | head -n1)
    sudo su -c "printf \"127.0.0.1  ${ATP_HOSTNAME}\n\"  >> 
    /etc/hosts"
  5. Vérifiez que l'adresse est correcte.
    cat /etc/hosts
    La sortie doit être similaire à la suivante :
    127.0.0.1    localhost
    ::1    localhost ip6-localhost ip6-loopback
    fe00::0    ip6-localnet
    ff00::0    ip6-mcastprefix
    ff02::1    ip6-allnodes
    ff02::2    ip6-allrouters
    172.19.0.3    58aa534ef636
    127.0.0.1  jrhdeexg.adb.region

Générer un jeton d'authentification

Générez un jeton à utiliser lors du déplacement de vos données vers Oracle Cloud Infrastructure Object Storage et dans la base de données Oracle Autonomous Transaction Processing. Vous ne voyez la chaîne de jeton d'authentification que lorsque vous la créez, assurez-vous de copier le jeton d'authentification à un emplacement sécurisé immédiatement.
  1. Connexion à la console Oracle Cloud Infrastructure
  2. Cliquez sur l'icône Utilisateur pour ouvrir le menu Profil, puis cliquez sur Paramètres utilisateur.
    Prenez note de votre nom utilisateur complet (il peut s'agir de votre e-mail, ou de votre e-mail préfixé avec le service de connexion unique que vous utilisez, si activé).
  3. Cliquez sur Jetons d'authentification, puis sur Générer un jeton.
  4. Fournissez une description significative pour le jeton Auth et cliquez sur Générer un jeton.
  5. Copiez le jeton et enregistrez-le pour pouvoir l'extraire ultérieurement.
    Le jeton n'est affiché qu'une seule fois. Lorsque vous fermerez la boîte de dialogue, vous ne pourrez plus voir le jeton dans la console.
  6. Cliquez sur Fermer.

Configurer les informations d'identification Cloud dans Autonomous Database

Ajoutez votre nom utilisateur Oracle Cloud Infrastructure (OCI) et votre mot de passe Auth Token en tant qu'informations d'identification par défaut pour la base de données Oracle Autonomous Transaction Processing.

  1. A l'aide de SQLPLus Instant Client, connectez-vous à la base de données Autonomous Transaction Processing distante via le tunnel créé précédemment.
    sqlplus admin@atp_db_name_high
  2. Dans l'invite, entrez le mot de passe administrateur de la base de données Autonomous Transaction Processing.
    atp_admin_password configuré dans le fichier terraform.tfvars.
  3. Assurez-vous que vous êtes connecté à une invite SQLPlus.
    SQL>
  4. Créez les informations d'identification OCI Cloud dans la base de données Autonomous Transaction Processing à l'aide de la commande suivante, avec votre nom utilisateur OCI et votre mot de passe de jeton d'authentification OCI.
    SET DEFINE OFF
    BEGIN
    DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'DEF_CRED_NAME',
        username => 'oci username',
        password => 'oci auth token'
    );
    END;
    /
  5. Définissez vos informations d'identification par défaut.
    ALTER DATABASE PROPERTY SET DEFAULT_CREDENTIAL = 
    'ADMIN.DEF_CRED_NAME';
  6. Quitter SQLPlus.
    SQL> exit

Importer le fichier dump dans Autonomous Database

Utilisez Data Pump pour importer le vidage de données dans la base de données Autonomous Transaction Processing.

  1. Définissez les variables d'environnement pour la région (telles qu'us-ashburn-1), l'espace de noms, le bucket, le nom de fichier, le nom de la base de données Autonomous Transaction Processing (par exemple atpdb) et le mot de passe administrateur Autonomous Transaction Processing.
    export REGION=your-OCI-region
    export NAMESPACE=your namespace
    export BUCKET=atp-upload
    export FILENAME=expdat.dmp
    export ATP_DB_NAME=your ATP DB name
    export ATP_PASSWORD=atp_admin_password
  2. Exécutez la commande suivante :
    impdp admin/${ATP_PASSWORD}@${ATP_DB_NAME}_low 
    directory=data_pump_dir 
    dumpfile=default_credential:https://objectstorage.${REGION}.oracl
    ecloud.com/n/${NAMESPACE}/b/${BUCKET}/o/${FILENAME} parallel=16 
    exclude=cluster,db_link 

    La première tentative échouera avec une erreur : ORA-01950: no privileges on tablespace 'DATA'. Passez à l'étape suivante pour donner un quota à l'utilisateur créé à partir du schéma de base de données.

  3. Accordez un tablespace illimité à l'utilisateur.
    echo "GRANT UNLIMITED TABLESPACE TO USER;" | sqlplus 
    admin/${ATP_PASSWORD}@${ATP_DB_NAME}_low
    Le résultat suivant apparaît :
    Grant Succeeded
  4. Supprimez les tables créées à l'étape 2 pour permettre la création des données lors de l'exécution suivante.
    echo "DROP TABLE TABLE_NAME;" | sqlplus 
    admin/${ATP_PASSWORD}@${ATP_DB_NAME}_low
  5. Exécutez la commande suivante pour importer les données maintenant que l'utilisateur dispose d'un quota valide.
    impdp admin/${ATP_PASSWORD}@${ATP_DB_NAME}_low 
    directory=data_pump_dir 
    dumpfile=default_credential:https://objectstorage.${REGION}.oracl
    ecloud.com/n/${NAMESPACE}/b/${BUCKET}/o/${FILENAME} parallel=16 
    exclude=cluster,db_link 
    Vous verrez des erreurs liées à l'utilisateur déjà existant. Ceci est normal car des objets ont été créés lors de l'exécution de la commande pour la première fois à l'étape 2.
La base de données est migrée.