Anwendungsdatenbank migrieren

Oracle Autonomous Transaction Processing entfernt die Notwendigkeit, den Datenbankhost und die Datenbanksoftware zu verwalten, zu patchen und zu optimieren, und bietet daher nur Zugriff auf die Schemaebene der Datenbank. Aus diesem Grund basieren die Migrationstools, die für die Migration einer On-Premise-Datenbank in die autonome Transaktionsverarbeitung verfügbar sind, auf Data Pumps, einem Migrationstool auf Schemaebene, das in Oracle Database enthalten ist.

Informationen zur Migration der Anwendungsdatenbank

Der Datenbankmigrationsprozess besteht darin, einen Datenbankschema-Dump in der Quelldatenbank zu erstellen, in Object Storage in Oracle Cloud Infrastructure (OCI) hochzuladen, die Autonomous Transaction Processing-Datenbank so zu konfigurieren, dass sie aus Object Storage importiert und den Datenbankschema-Dump aus Oracle Cloud Infrastructure Object Storage importiert wird.

Im Folgenden finden Sie einen Überblick über den Prozess:

  1. Exportieren Sie die Datenbankschemas in eine lokale Dumpdatei.
  2. Verschieben Sie die Dumpdatei mit der OCI CLI in Object Storage.
  3. Ruft die OCID der autonomen Datenbank ab.
  4. Rufen Sie das Wallet ab, um von der Quelldatenbank (oder einem alternativen Host) auf die autonome Datenbank zuzugreifen.
  5. Erstellen Sie einen lokalen Tunnel zur Konfiguration in der autonomen Datenbank.
  6. Rufen Sie ein OCI-Authentifizierungstoken für die autonome Datenbank ab, um auf Oracle Cloud Infrastructure Object Storage zuzugreifen.
  7. Konfigurieren Sie die Zugangsdaten für den autonomen Datenbankzugriff.
  8. Importieren Sie die Dumpdatei aus Oracle Cloud Infrastructure Object Storage in die autonome Datenbank.

Datenbankschema und -daten exportieren

Exportieren Sie das Datenbankschema und die Daten in eine einzelne Dumpdatei.

  1. Erstellen Sie einen Ordner export für die Dumpdatei.
    Beachten Sie, dass wir ein einzelnes Dateidump erstellen, das unter Umständen extrem groß sein kann. Weitere Optionen zum Erstellen mehrteiliger Dateien finden Sie unter Datenpumpe.
    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. Verschieben Sie die Dumpdatei mit der Befehlszeilenschnittstelle Oracle Cloud Infrastructure (OCI) in den Oracle Cloud Infrastructure Object Storage-Bucket, den Sie zuvor erstellt haben.
    oci os object put \
    -bn bucket-name \
    --file /home/oracle/export/expdat.dmp \
    --name expdat.dmp

OCID des Autonomous Database abrufen

Rufen Sie OCID, private Endpunkt-IP und Private Endpoint-URL der Oracle Autonomous Transaction Processing-Datenbank ab.

  1. Wählen Sie in der Oracle Cloud Infrastructure-Konsole Oracle Database, Autonome Transaktionsverarbeitung aus.
  2. Wählen Sie das Compartment aus der Compartments-Liste auf der linken Seite der Seite aus.
    Im Compartment haben Sie die Ressourcen bereitgestellt.
  3. Klicken Sie auf die zuvor bereitgestellte Datenbank, um zu den Details zu gelangen.
  4. Kopieren Sie OCID, Private Endpoint IP und Private Endpoint URL (Hostname), und speichern Sie sie später in einem Notizblock.

Datenbank-Wallet-Datei abrufen

Rufen Sie die Wallet-Datei der Oracle Autonomous Transaction Processing-Datenbank ab, und aktualisieren Sie den Speicherort, indem Sie das Verzeichnis so einstellen, dass es auf den Wallet-Speicherort in der Datei sqlnet.ora verweist.

  1. Verwenden Sie die Oracle Cloud Infrastructure-Befehlszeilenschnittstelle (OCI), um die Wallet-Datei der Autonomous Transaction Processing-Datenbank mit OCID und Kennwort abzurufen.
    oci db autonomous-database generate-wallet --autonomous-database-
    id your ATP OCID --file wallet.zip --password your-password
  2. Dekomprimieren Sie die Brieftasche.
    unzip wallet.zip
  3. Bearbeiten Sie die Datei sqlnet.ora, und ersetzen Sie den Verzeichniswert, um den Speicherort der entpackten Wallet-Dateien abzugleichen.
    WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = 
    (DIRECTORY="/home/oracle/ ")))
    SSL_SERVER_DN_MATCH=yes
  4. Legen Sie die Umgebungsvariable TNS_ADMIN so fest, dass sie mit dem Ordner übereinstimmt, in dem das Wallet entpackt wurde.
    export TNS_ADMIN=$(pwd)

Lokalen Tunnel über einen Bastion-Host in Autonomous Database erstellen

Erstellen Sie einen Tunnel, indem Sie die öffentliche IP-Adresse des Bastionshosts konfigurieren.

  1. Rufen Sie die öffentliche IP des Bastionshosts aus der Terraformausgabe ab.
    Wenn der Apache Tomcat-Server in einem öffentlichen Subnetz bereitgestellt wurde, können Sie die öffentliche IP des Tomcat-Servers verwenden, andernfalls verwenden Sie die öffentliche IP-Adresse des Bastion-Hosts.
  2. Definieren Sie die Bastion IP, um einen Tunnel zu erstellen.
    export BASTION_IP=Public IP of the bastion
  3. Führen Sie den Befehl aus, um den DB-Host mit der privaten Endpunkt-IP-Adresse für die Autonomous Transaction Processing-Datenbank und ssh auf den Datenbankhost zu exportieren.
    DB_HOST ist die zuvor erfasste Private Endpoint-IP.
    export DB_HOST=10.0.2.2
    ssh -4 -M -S socket -fnNT -L 1522:${DB_HOST}:1522 opc@${BASTION_IP} cat -
    Wenn Sie aufgefordert werden, Ja einzugeben, um den neuen Host zu bestätigen.
  4. Bearbeiten Sie die Datei /etc/hosts, um auf den privaten Endpunkthost der autonomen Datenbank auf 127.0.0.1 (localhost) zu verweisen.
    Sucht den privaten Endpunkthost in der Datei 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. Stellen Sie sicher, dass der Endpunkt korrekt ist.
    cat /etc/hosts
    Die Ausgabe sollte wie folgt aussehen:
    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

Authentifizierungstoken generieren

Generieren Sie ein Token, das beim Verschieben Ihrer Daten in Oracle Cloud Infrastructure Object Storage und in die Oracle Autonomous Transaction Processing-Datenbank verwendet werden soll. Die Authentifizierungstokenzeichenfolge wird nur angezeigt, wenn Sie sie erstellen. Kopieren Sie daher das Authentifizierungstoken sofort in einen sicheren Speicherort.
  1. Melden Sie sich bei Oracle Cloud Infrastructure-Konsole an
  2. Klicken Sie auf das Symbol Benutzer, um das Menü Profil zu öffnen, und klicken Sie auf Benutzereinstellungen.
    Beachten Sie Ihren vollständigen Benutzernamen (möglicherweise Ihre E-Mail oder Ihre E-Mail mit dem Single Sign-On-Service, den Sie verwenden, wenn aktiviert).
  3. Klicken Sie auf Authentifizierungstoken, und klicken Sie auf Token generieren.
  4. Geben Sie eine aussagekräftige Beschreibung für das Authentifizierungstoken an, und klicken Sie auf Token generieren.
  5. Kopieren Sie das Token, und speichern Sie es, damit Sie es später abrufen können.
    Das Token wird nur einmal angezeigt. Wenn Sie das Dialogfeld schließen, können Sie das Token in der Konsole nicht erneut anzeigen.
  6. Klicken Sie auf Schließen.

Cloud-Zugangsdaten in Autonomous Database konfigurieren

Fügen Sie Ihren Oracle Cloud Infrastructure -(OCI-)Benutzernamen und das Authentifizierungstoken-Kennwort als Standardzugangsdaten für die Oracle Autonomous Transaction Processing-Datenbank hinzu.

  1. Melden Sie sich mit SQLPLus Instant Client über den zuvor erstellten Tunnel bei der Remote-Autonomous Transaction Processing-Datenbank an.
    sqlplus admin@atp_db_name_high
  2. Geben Sie in der Eingabeaufforderung das Admin-Kennwort für die Autonomous Transaction Processing-Datenbank ein.
    atp_admin_password, das in der Datei terraform.tfvars konfiguriert wurde.
  3. Stellen Sie sicher, dass Sie bei einem SQLPlus-Prompt angemeldet sind.
    SQL>
  4. Erstellen Sie die OCI-Cloud-Zugangsdaten in der Autonomous Transaction Processing-Datenbank mit dem folgenden Befehl mit dem OCI-Benutzernamen und dem OCI-Authentifizierungstoken-Kennwort.
    SET DEFINE OFF
    BEGIN
    DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'DEF_CRED_NAME',
        username => 'oci username',
        password => 'oci auth token'
    );
    END;
    /
  5. Legen Sie Ihre Zugangsdaten als Standardzugangsdaten fest.
    ALTER DATABASE PROPERTY SET DEFAULT_CREDENTIAL = 
    'ADMIN.DEF_CRED_NAME';
  6. Beenden Sie SQLPlus.
    SQL> exit

Dumpdatei in Autonomous Database importieren

Verwenden Sie datapump, um den Datendump in die Autonomous Transaction Processing-Datenbank zu importieren.

  1. Definieren Sie die Umgebungsvariablen für den Bereich (wie us-ashburn-1), den Namespace, Bucket, Dateinamen, den Datenbanknamen für die autonome Transaktionsverarbeitung (wie atpdb) und das Admin-Kennwort für die autonome Transaktionsverarbeitung.
    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. Führen Sie den folgenden Befehl aus:
    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 

    Der erste Versuch ist mit einem Fehler nicht erfolgreich: ORA-01950: no privileges on tablespace 'DATA'. Fahren Sie mit dem nächsten Schritt fort, um dem Benutzer, der aus dem Datenbankschema erstellt wurde, eine Quota zu geben.

  3. Unbegrenzten Tablespace des Benutzers erteilen
    echo "GRANT UNLIMITED TABLESPACE TO USER;" | sqlplus 
    admin/${ATP_PASSWORD}@${ATP_DB_NAME}_low
    Die folgende Ausgabe sollte angezeigt werden:
    Grant Succeeded
  4. Löschen Sie die Tabellen, die in Schritt 2 erstellt wurden, damit die Daten bei der nächsten Ausführung erstellt werden können.
    echo "DROP TABLE TABLE_NAME;" | sqlplus 
    admin/${ATP_PASSWORD}@${ATP_DB_NAME}_low
  5. Führen Sie den folgenden Befehl aus, um die Daten jetzt zu importieren, wenn der Benutzer über eine gültige Quota verfügt.
    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 
    Es werden Fehler angezeigt, die mit dem bereits vorhandenen Benutzer zusammenhängen. Dies ist normal, weil Objekte erstellt wurden, wenn wir den Befehl zum ersten Mal in Schritt 2 ausgeführt haben.
Datenbank wurde migriert.