Mit physischer Migration migrieren

In diesen Schritten wird beschrieben, wie eine physische Online- oder Offlinemigration durchgeführt wird. Beachten Sie Folgendes, bevor Sie die physische Migration ausführen.

  • Die Quelldatenbank auf dem x86-Server muss nicht verschlüsselt werden. Bei der Migration ohne Ausfallzeiten wird die Zieldatenbank während der Migration verschlüsselt.
  • Ein Transparent Data Encryption-(TDE-)Wallet muss vor der Migration in der Quelldatenbank definiert werden, auch wenn die Quelldatenbank nicht verschlüsselt ist.
  • Kennwort, Wallet-Kennwort, Datenbankversion und Patchebene sys in der Quell- und Zieldatenbank müssen identisch sein.
  • Bei der Migration ohne Ausfallzeit wird die Containerdatenbank (CDB) zu CDB und Nicht-CDB zu einer Nicht-CDB migriert.

So führen Sie eine physische Migration mit Zero Downtime Migration aus:

  1. Laden Sie Zero Downtime Migration-Software auf einem separaten Server herunter, und installieren Sie sie. Führen Sie die Zero Downtime Migration-Software mit dem zdmuser aus.
  2. Melden Sie sich als zdmuser bei Ihrem ZDM-Server an.
  3. Generieren Sie ein SSH-Schlüsselpaar.
  4. Aktivieren Sie passwortloses SSH von zdmuser zum Quellserver x86 (root/privilege-sudoer user) und zu allen VM-Clusterknoten in der Oracle Exadata Database Service on Cloud@Customer-Zieldatenbank (opc user).
  5. Erstellen Sie in Oracle ZFS Storage Appliance (NAS) ein Network File System-(NFS-)Share, das während der Migration als Platzhalter für die RMAN-Backups der Quelldatenbank verwendet werden soll.
    Die Zieldatenbank wird aus den Backups wiederhergestellt, die in diesem NFS Share gespeichert sind.
  6. Mounten Sie das NFS-Share auf demselben Mount Point auf allen Knoten der Quell- und Zieldatenbank. Stellen Sie sicher, dass alle Benutzer sowohl für Quelle als auch Ziel über Lese-, Schreib- und Ausführungsberechtigungen verfügen.
  7. Erstellen Sie eine Oracle Exadata Database Service on Cloud@Customer-Zieldatenbank mit der OCI-GUI oder REST-API. Konfigurieren Sie die Zieldatenbank wie folgt:
    • Die Ziel- und Quelldatenbanken müssen dieselben Namen, aber unterschiedliche DB_UNIQUE_NAME aufweisen.
    • Kennwort, Wallet-Kennwort, Datenbankversion und Patchebene sys in der Quell- und Zieldatenbank müssen identisch sein.
    • Wählen Sie kein Backupziel aus, oder aktivieren Sie automatische Backups. Diese Einstellungen können aktiviert werden, nachdem die Datenbank von der Quelle zum Ziel migriert wurde.
  8. Prüfen Sie, ob die Quelldatenbank im Archivelog-Modus konfiguriert ist. Wenn Archivelog nicht aktiviert ist, finden Sie weitere Informationen unter Archivelog-Modus aktivieren.
  9. Wenn die Quelldatenbank nicht verschlüsselt ist, finden Sie unten unter Transparent Data Encryption-(TDE-)Keystore konfigurieren. Daten müssen nicht verschlüsselt werden, nur der TDE-Keystore ist für die physische Migration erforderlich. Stellen Sie sicher, dass das Keystore-(Wallet-)Kennwort mit dem Kennwort sys/wallet übereinstimmt, mit dem die Zieldatenbank in Oracle Exadata Database Service on Cloud@Customer erstellt wird.
  10. Erstellen Sie eine Antwortdatei für die Migration ohne Ausfallzeit, um die Migration auszuführen. Zu den wichtigsten Parametern gehören:
    • TGT_DB_UNIQUE_NAME: Eindeutiger Datenbankname für die Oracle Exadata Database Service on Cloud@Customer-Zieldatenbank.
    • MIGRATION_METHOD: OFFLINE_PHYSICAL oder ONLINE_PHYSICAL.
    • DATA_TRANSFER_MEDIUM: NFS
    • PLATFORM_TYPE: EXACC
    • BACKUP_PATH: Mount Point für Network File System-(NFS-)Freigabe auf Quelle und Ziel aus Schritt 4.
    • SHUTDOWN_SRC: TRUE
  11. Führen Sie einen Migrationsjob für den Testlauf ohne Ausfallzeit aus (-eval), um zu prüfen, ob alle Voraussetzungen für die Migration möglich sind. Beispiel:
    zdmcli migrate database -sourcedb source_db_name \
    -sourcenode IP/hostname_of_x86_db_server \
    -srcauth zdmauth \
    -srcarg1 user: root_or_sudoer_user \
    -srcarg2 identity_file:path_to_ssh_private_key/ssh_private_key_file_name
    \
    -srcarg3 sudo_location:/usr/bin/sudo \
    -targetnode IP/hostname_of_first_Exadata_Database_Cloud@Customer_VM_Cluster_Node
    -tgtarg1 user:opc \
    -tgtarg2 identity_file: path_to_ssh_private_key/ssh_private_key_file_name
    \
    -tgtarg3 sudo_location:/usr/bin/sudo \
    -rsp path_to_response_file/response_file_name_from_step_10 \
    -eval
  12. Job "Migration ohne Ausfallzeit" ausführen. Beispiel:
    zdmcli migrate database -sourcedb source_db_name \
    -sourcenode IP/hostname_of_x86_db_server \
    -srcauth zdmauth \
    -srcarg1 user: root_or_sudoer_user \
    -srcarg2 identity_file:path_to_ssh_private_key/ssh_private_key_file_name
    \
    -srcarg3 sudo_location:/usr/bin/sudo \
    -targetnode IP/hostname_of_first_Exadata_Database_Cloud@Customer_VM_Cluster_Node
    -tgtarg1 user:opc \
    -tgtarg2 identity_file:path_to_ssh_private_key/ssh_private_key_file_name
    \
    -tgtarg3 sudo_location:/usr/bin/sudo \
    -rsp path_to_response_file/response_file_name_from_step_10
Bei physischen Onlinemigrationen konfiguriert die Zero Downtime Migration Oracle Data Guard zwischen Quelle und Ziel, um sicherzustellen, dass die Datenbank während der Migration immer online ist. Oracle Data Guard synchronisiert alle Quelldatenbankänderungen in der Zieldatenbank.
Damit ist die physische Migration abgeschlossen.

Archivelog-Modus aktivieren

Der Archivelog-Modus muss in der Quelldatenbank für physische Migrationen ohne Ausfallzeit aktiviert sein. In diesen Schritten wird beschrieben, wie der Archivelog-Modus in der Quelldatenbank konfiguriert wird.

  1. Prüfen Sie, ob die Quelldatenbank im Archivelog-Modus nicht konfiguriert ist.
    SQL> select log_mode from v$database;
    LOG_MODE
    ------------
    NOARCHIVELOG
  2. Konfigurieren Sie das Logarchivierungsziel der Quelldatenbank. Das folgende Beispiel stammt aus einer Quelldatenbank mit DB-Dateien in einem Linux-Dateisystem. LOCATION ist anders, wenn DB-Dateien in Oracle ASM Diskgroup gespeichert werden.
    SQL> alter system set 
    log_archive_dest_1='LOCATION=/u01/app/oracle/oradata/db_name/arc' 
    scope=both;
    System altered.
    SQL> select destination,STATUS from v$archive_dest where status='VALID';
    DESTINATION
    --------------------------------------------------------------------------------
    STATUS
    ---------
    /u01/app/oracle/oradata/db_name/arc
    VALID
  3. Fahren Sie die Datenbank herunter, und mounten Sie die Datenbank.
    SQL> shutdown immediate
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL> startup mount;
    ORACLE instance started
  4. Aktivieren Sie den Archivelog-Modus.
    alter database archivelog;
  5. Öffnen Sie die Datenbank.
    alter database open;
  6. Prüfen Sie, ob sich die Datenbank im Archivelog-Modus befindet.
    SQL> select destination,STATUS from v$archive_dest where statuS='VALID';
    DESTINATION
    --------------------------------------------------------------------------------
    STATUS
    ---------
    /u01/app/oracle/oradata/db_name/arc
    VALID
    SQL> select log_mode from v$database;
    LOG_MODE
    ------------
    ARCHIVELOG

Transparent Data Encryption-(TDE-)Keystore konfigurieren

Für physische Migrationen ohne Ausfallzeit ist ein auto_login-TDE-Verschlüsselungs-Keystore/Wallet erforderlich (auch wenn die Quelldatenbank nicht verschlüsselt ist). Dieser Keystore muss mit demselben Kennwort wie der Zieldatenbank-Keystore konfiguriert werden. In diesen Schritten wird beschrieben, wie Sie einen Keystore in der Quelldatenbank konfigurieren.

  1. Prüfen Sie, ob ein Standard-Keystore-Speicherort für die Datenbank konfiguriert ist.
    SQL> select * from v$encryption_wallet;
    WRL_TYPE
    --------------------
    WRL_PARAMETER
    --------------------------------------------------------------------------------
    STATUS WALLET_TYPE WALLET_OR KEYSTORE FULLY_BAC
    ------------------------------ -------------------- --------- -------- ---------
    CON_ID
    ----------
    FILE
    /u01/app/oracle/admin/db_name/wallet
    NOT_AVAILABLE UNKNOWN SINGLE NONE UNDEFINED
    1
    SQL>
  2. Wenn noch kein Verzeichnis für den Keystore vorhanden ist, erstellen Sie ein Verzeichnis für den Keystore.
    mkdir -p /u01/app/oracle/admin/db_name/wallet
  3. Erstellen Sie ein Verzeichnis, in dem die Datei sqlnet.ora gespeichert wird.
    mkdir -p $ORACLE_HOME/network/admin/
  4. Erstellen Sie die Datei sqlnet.ora im Verzeichnis $ORACLE_HOME/network/admin/ mit den Keystore-Informationen aus Schritt 1.
    ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE)
     (METHOD_DATA=(DIRECTORY=/u01/app/oracle/admin/db_name/wallet)))
  5. Erstellen Sie den Keystore, der mit einem Kennwort geschützt ist. Beachten Sie, dass der Oracle Exadata Database Service on Cloud@Customer-Zieldatenbank-Keystore auch mit diesem Kennwort konfiguriert werden muss.
    SQL>administer key management create keystore 
    '/u01/app/oracle/admin/db_name/wallet' identified by keystore_password;
  6. Öffnen Sie den Keystore.
    Wenn die Quelldatenbank eine Nicht-CDB ist, entfernen Sie container = ALL.
    SQL> ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY 
    keystore_password container = ALL;
  7. Erstellen Sie ein Backup für den Keystore.
    Wenn die Quelldatenbank eine Nicht-CDB ist, entfernen Sie container = ALL.
    SQL> ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY keystore_password
    with backup container = ALL;
  8. Prüfen Sie, ob der Keystore erstellt und gesichert wurde.
    SQL> SELECT * FROM v$encryption_keys;
    Snip…
    ACTIVATING_PDBNAME
    --------------------------------------------------------------------------------
    ACTIVATING_PDBID ACTIVATING_PDBUID ACTIVATING_PDBGUID CON_ID
    ---------------- ----------------- -------------------------------- ----------
    ATOlrcGaa0/iv/dFeRSkNSIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    --------------------------------------------------------------------------------
    ACTIVATING_PDBID ACTIVATING_PDBUID ACTIVATING_PDBGUID CON_ID
    ---------------- ----------------- -------------------------------- ----------
    db_name
    ACTIVATING_PDBID ACTIVATING_PDBUID ACTIVATING_PDBGUID CON_ID
    ---------------- ----------------- -------------------------------- ----------
    1 86B637B62FDF7A65E053F706E80A27CA
    Snip…
  9. Erstellen Sie einen auto_login-Keystore aus dem Keystore, der in Schritt 5 erstellt wurde.
    SQL> ADMINISTER KEY MANAGEMENT CREATE AUTO_LOGIN KEYSTORE FROM 
    KEYSTORE '/u01/app/oracle/admin/db_name/wallet' IDENTIFIED BY 
    keystore_password ;
  10. Schließen Sie den Keystore aus Schritt 5.
    SQL> ADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE IDENTIFIED BY 
    keystore_password;
  11. Stellen Sie sicher, dass der auto_login-Keystore noch geöffnet ist.
    SQL> SELECT * FROM v$encryption_wallet;
    WRL_TYPE
    --------------------
    WRL_PARAMETER
    --------------------------------------------------------------------------------
    STATUS WALLET_TYPE WALLET_OR KEYSTORE FULLY_BAC
    ------------------------------ -------------------- --------- -------- ---------
    CON_ID
    ----------
    FILE
    /u01/app/oracle/admin/db_name/wallet
    OPEN AUTOLOGIN SINGLE NONE NO