Oracle Database mit M5 Cross-Endian XTTS mit inkrementellen RMAN-Backups zu OCI migrieren
Einführung
In diesem Tutorial wird beschrieben, wie Sie eine Oracle Database mit M5 Cross Endian Platform Migration mit Full Transportable Data Pump und inkrementellen RMAN-Backups zu Oracle Cloud Infrastructure (OCI) migrieren.
Diese Methode ermöglicht die Migration zwischen Systemen mit verschiedenen Endian-Formaten und minimiert gleichzeitig die Ausfallzeit der Anwendung.
Der Prozess beginnt mit einer vollständigen Backupkopie von der Quelle zum Ziel. Anschließend werden inkrementelle Backups angewendet, damit das Ziel nahezu mit der Quelle synchronisiert bleibt. Ausfallzeiten sind nur während des letzten inkrementellen Backups und Metadatenexports/-imports erforderlich.
Umgebungsdetails
- Quelldatenbank (Nicht-CDB):
- Datenbankversion:
19.29.0.0 - Betriebssystem:
AIX
- Datenbankversion:
- Zieldatenbank (Nicht-CDB):
- Datenbankversion:
19.29.0.0 (OCI) - Betriebssystem:
Oracle Linux
- Datenbankversion:
Ziele
- Verwenden Sie plattformübergreifende Transportable Tablespaces (XTTS) mit inkrementellen RMAN-Backups, um Daten mit minimaler Ausfallzeit über Endian-Plattformen zu migrieren.
Voraussetzungen
-
Quell- und Zieldatenbanken müssen sich im Modus
ARCHIVELOGbefinden. -
Diese Prozedur unterstützt eine Mindestversion von v19.18 für die Quelldatenbank. Ein Upgrade auf Oracle Database 26ai wird unterstützt.
-
Die Tablespaces
SYSTEM,SYSAUX,UNDOundTEMPsind ausgeschlossen. Alle anderen Tablespaces müssen indbmig_ts_list.txtenthalten sein. -
Plattformübergreifend ist nur mit Enterprise Edition möglich. Dieses Verfahren kann nicht mit Standard Edition verwendet werden.
-
Der Zeichensatz in Quell- und Zieldatenbanken muss identisch sein.
-
Der Parameter
db_create_file_destmuss in der Zieldatenbank festgelegt werden. -
Prüfen Sie die von Data Pump empfohlenen proaktiven Patches für 19.10 und höher KB107134 im MOS-Hinweis, und wenden Sie alle erforderlichen Fixes für die Datenbank 19.18 oder höher sowohl auf Quelle als auch auf Ziel an.
-
Prüfen Sie die empfohlenen proaktiven Data Pump-Patches für 23ai/26ai KB160561 im MOS-Hinweis, und wenden Sie alle erforderlichen Fixes für die 26ai- oder höhere Datenbank auf dem Ziel an.
-
Aktivieren Sie Block Change Tracking, um die Performance von inkrementellen Backups zu verbessern (optional).
-
Tablespaces müssen sich im Modus
READ WRITEbefinden. -
Tablespaces im
READ ONLY-Modus können mit Standard-XTTS migriert werden. -
Der Parameter
COMPATIBLEmuss in Quelle und Ziel identisch sein (mindestens19.0.0.0). -
RMAN muss
BACKUPSETverwenden.COPYdarf nicht verwendet werden.
Aufgabe 1: Quelldatenbank vorbereiten
-
Führen Sie die folgende Abfrage aus, um das Endian-Format in der Quelldatenbank zu prüfen.
col PLATFORM_NAME for a50 select platform_name, platform_id, endian_format from v$transportable_platform; -
Geben Sie die Tablespaces in der Quelldatenbank an, die übertragen werden sollen. Führen Sie die folgende Abfrage aus, wenn Sie alle Tablespaces migrieren.
select tablespace_name from dba_tablespaces where contents='PERMANENT' and tablespace_name not in ('SYSTEM','SYSAUX'); -
Prüfen Sie Verstöße gegen Transport-Sets:
exec dbms_tts.transport_set_check('<comma-separated tablespace list>'); SELECT * FROM SYS.TRANSPORT_SET_VIOLATIONS; -
(Optional) Aktivieren Sie das Block Change Tracking in der Quelldatenbank, um die Performance von inkrementellen Backups zu verbessern.
-
Prüfen Sie, ob alle Tablespaces in der Quelldatenbank online sind.
Aufgabe 2: Zieldatenbank vorbereiten
-
Neuen Benutzer-Tablespace erstellen
select TABLESPACE_NAME from dba_tablespaces where TABLESPACE_NAME='USERS_OCI'; select TABLESPACE_NAME from dba_tablespaces order by 1; set long 99999 SELECT DBMS_METADATA.GET_DDL ('TABLESPACE','USERS') from dual;Verwenden Sie die oben genannte DDL-(Data Definition Language-)Ausgabe, ersetzen Sie den Plattengruppennamen wie unten, und erstellen Sie einen neuen Benutzer-Tablespace.
CREATE BIGFILE TABLESPACE USERS_OCI DATAFILE '+DATAC2' SIZE 1073741824 AUTOEXTEND ON NEXT 17179869184 MAXSIZE 33554431M LOGGING ONLINE PERMANENT BLOCKSIZE 8192 EXTENT MANAGEMENT LOCAL AUTOALLOCATE ENCRYPTION USING 'AES256' ENCRYPT DEFAULT NOCOMPRESS SEGMENT SPACE MANAGEMENT AUTO;Weisen Sie den neuen Benutzer-Tablespace USERS_OCI mit der folgenden Abfrage allen Datenbankbenutzern zu, die den Standard-Tablespace USERS haben.
select 'alter user '||username||' default tablespace USERS_OCI;' from dba_users where default_tablespace='USERS';Die Ausgabe für die obige SELECT-Abfrage muss 0 zurückgeben, nachdem der Tablespace für neue Benutzer neu zugewiesen wurde.
select count(*) from dba_users where default_tablespace='USERS'; ALTER DATABASE DEFAULT TABLESPACE USERS_OCI; drop tablespace users including contents and datafiles; select TABLESPACE_NAME from dba_tablespaces where TABLESPACE_NAME='USERS'; -
Temporary Tablespaces in der Zieldatenbank erstellen Führen Sie die folgende Abfrage für die Quelle aus, und erfassen Sie die Tablespace-Details.
Führen Sie die folgende Abfrage für die Quelle aus:
select TABLESPACE_NAME from dba_tablespaces where CONTENTS='TEMPORARY';Erstellen Sie dann Temporary Tablespaces in der Zieldatenbank. Beispiel:
create bigfile temporary tablespace USER_TEMP tempfile size 672m autoextend on next 672m extent management local;
Aufgabe 3: Inkrementelle M5 XTTS-Schritte
Aufgabe 3.1: Anfangsphase
-
Laden Sie die neuesten M5-Skripte herunter, und dekomprimieren Sie sie hier: M5 Cross Endian Platform Migration using Full Transportable Data Pump Export/Import and RMAN Incremental Backups (Dok.-ID 2999157.1). Erstellen Sie ein Arbeitsverzeichnis auf einer NFS-Freigabe, die von Quelle und Ziel gemeinsam verwendet wird. Der Pfad zur NFS-Freigabe muss auf Quelle und Ziel identisch sein.
Wenn eine NFS-Freigabe nicht möglich ist, verwenden Sie einen lokalen Speicher. Erstellen Sie das Verzeichnis auf dem Quellhost, und kopieren Sie es auf den Zielhost. Dies muss während des gesamten Prozesses mehrmals wiederholt werden. Der Pfad auf dem Quell- und Zielhost muss identisch sein. Andernfalls sind verschiedene Änderungen an den Skripten erforderlich, die außerhalb dieses Verfahrens liegen.
mkdir -p <Shared_location>/XTTS_Migration mkdir -p <Shared_location>/XTTS_Migration/Backup mkdir -p <Shared_location>/XTTS_Migration/DPPUMP cd <Shared_location> unzip DBMIG.zipDie Datei enthält:
dbmig_driver_m5.sh: Migrationstreiberskript.impdp.sh: Importtreiberskript.- Verzeichnis
log: Zur Laufzeit erstellt. Speichert das RMAN-Backuplog, die Migrationslogs und zusätzliche Logs.rman_mig_bkp.log: Zentralisierte Migrationsprotokolldatei.rman_mig_bkp.lck: Sperrdatei, die am Anfang jedes Backups erstellt wurde, um die Ausführung des nebenläufigen Treibers zu verhindern. Wenn eine Treiberausführung die Sperre abbricht, wird sie nicht entfernt. Das Problem sollte vor dem Entfernen der Sperre untersucht und behoben werden.
- Verzeichnis
cmd: Zur Laufzeit erstellt. Speichert die RMAN-Backup- und Restore-Skripts.dbmig_driver.properties: Umgebungsvariablen.dbmig_ts_list.txt: Tablespace-Liste durch Komma getrennt.
-
Ändern Sie die Variablen in dbmig_driver.properties (im cmd-Verzeichnis), um die von Ihnen verwendete Umgebung wiederzugeben. Die Beschreibung der Parameter in der Konfigurationsdatei
dbmig_driver.propertiesfinden Sie hier: M5 Cross Endian Platform Migration using Full Transportable Data Pump Export/Import and RMAN Incremental Backups.Beispieldatei für dbmig_driver.properties
############################################################ #Source database properties #my_M5_prop_version=2 # - # - ORACLE_HOME Path to Oracle Home # - ORACLE_SID SID of the source database # - SRC_SCAN Connect string to source database via SCAN. # If no SCAN, specify source database network name. # Enclose in single quotes # Example: '@myhost-scan/db1' # Example: '@localhost/pdb1' # - MIG_PDB Accepted values: 0, 1 # Choose 0 if source is non-CDB # Choose 1 if source is a PDB # - PDB_NAME If source is a PDB, specify PDB name. # Else leave blank # Example: PDB1 # - BKP_FROM_STDBY Accepted values: 0, 1 # Choose 0 to back up from primary database, # or if Data Guard is not in use. # Choose 1 to back up from standby database. ############################################################ export ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_1 export PATH=$PATH:$ORACLE_HOME/bin export ORACLE_SID=soldb1918 export SRC_SCAN='@scan1/soldb1918' export MIG_PDB=0 export PDB_NAME= export BKP_FROM_STDBY=0 ############################################################ #Source Data Pump settings # - SOURCE_DPDMP Directory path of the directory DATA_PUMP_DIR # Example: /u01/app/oracle/m5/data_pump_dir # - SOURCE_DPIR Data Pump Directory, typically DATA_PUMP_DIR # - SYSTEM_USR Username for Data Pump export. # Do not use SYS AS SYSDBA # Example: SYSTEM # - DP_TRACE Data Pump trace level. # Use 0 to disable trace. # Use 3FF0300 to full transportable tracing # See MOS Doc ID 286496.1 for details. # - DP_PARALLEL Data Pump parallel setting. # Accepted values: 1 to 999 # Example: 16 ############################################################ export SOURCE_DPDMP=<Shared_location>/XTTS_Migration/DPPUMP export SOURCE_DPDIR=DATA_PUMP_DIR export SYSTEM_USR=SYSTEM export DP_TRACE=0 export DP_PARALLEL=1 export DP_ENC_PROMPT=N ############################################################ #Source RMAN settings # - BKP_DEST_TYPE Accepted values: DISK, SBT_TAPE # Choose DISK to backup up to local storage # Choose SBT_TAPE to use ZDLRA # - BKP_DEST_PARM If BKP_DEST_TYPE=DISK, enter location for backup: # Example: /u01/app/oracle/m5/rman # If BKP_DEST_TYPE=SBT_TAPE, enter channel configuration: # Example: "'%d_%U' PARMS \"SBT_LIBRARY=<oracle_home>/lib/libra.so,SBT_PARMS=(RA_WALLET='location=file:<oracle_home>/dbs/zdlra credential_alias=<zdlra-connect-string>')\"" # - CAT_CRED If you use RMAN catalog or ZDLRA, specify connect string to catalog database # Example: <scan-name>:<port>/<service> # - SECTION_SIZE Section size used in RMAN backups # - CHN Number of RMAN channels allocated ############################################################ export BKP_DEST_TYPE=DISK export BKP_DEST_PARM=<Shared_location>/XTTS_Migration/Backup export CAT_CRED= export SECTION_SIZE=64G export CHN=8 ############################################################ #Destination host settings #If specified, the script transfers the RMAN backups and #Data Pump dump file to the destination via over SSH. #SSH equivalence is required. # - DEST_SERVER Network name of the destination server. # Leave blank if you manually transfer # backups and dump files # - DEST_USER User for SSH connection # Example: oracle # - DEST_WORKDIR The script working directory on destination # Example: /u01/app/oracle/m5 # - DEST_DPDMP The directory path used by DATA_PUMP_DIR # in destination database # Example: /u01/app/oracle/m5/data_pump_dir ############################################################ export DEST_SERVER=srvadm01 export DEST_USER=oracle export DEST_WORKDIR=<Shared_location>/XTTS_Migration export DEST_DPDMP=<Shared_location>/XTTS_Migration/DPDUMP ############################################################ #Advanced settings #Normally, you don't need to edit this section ############################################################ export WORKDIR=$PWD export LOG_DIR=${WORKDIR}/log export CMD_DIR=${WORKDIR}/cmd export PATH=$PATH:$ORACLE_HOME/bin export DT='date +%y%m%d%H%M%S' export CMD_MKDIR='which mkdir' export CMD_TOUCH='which touch' export CMD_CAT='which cat' export CMD_RM='which rm' export CMD_AWK='which awk' export CMD_SCP='which scp' export CMD_CUT='which cut' export CMD_PLATFORM='uname' if [[ "$CMD_PLATFORM" = "Linux" ]]; then export CMD_GREP="/usr/bin/grep" else if [[ "$CMD_PLATFORM" = "AIX" ]]; then export CMD_GREP="/usr/bin/grep" else if [[ "$CMD_PLATFORM" = "HPUX" ]]; then export CMD_GREP="/usr/bin/grep" else export CMD_GREP='which ggrep' fi fi fi export my_M5_prop_version=2Erstellen Sie Verzeichnisse für Datendumpdateien in Quell- und Zieldatenbanken.
create directory M5_XTTS_MIG as '<Shared_Location>/XTTS_Migration/DPDUMP'; grant read,write on directory M5_XTTS_MIG to sys,system;
Aufgabe 3.2: Backup und Wiederherstellung der Ebene 0
-
Melden Sie sich im Quellsystem als Oracle-Benutzer an, wobei die Umgebungsvariablen (
ORACLE_HOMEundORACLE_SID) auf die Quelldatenbank gesetzt sind, und führen Sie dann das Backup aus:cd <Shared_location> nohup sh dbmig_driver_m5.sh L0 & -
Wenn Sie kein gemeinsam verwendetes NFS verwenden, kopieren Sie das Arbeitsverzeichnis auf den Zielhost.
-
Stellen Sie die Datendateien auf dem Zielsystem wieder her.
Legen Sie auf dem Ziel die Umgebung auf die Zieldatenbank fest. Das Treiberskript erstellt ein Wiederherstellungsskript. Es wird im Cmd-Verzeichnis gespeichert:
cd <Shared_location>/XTTS_Migration cp nohup.out nohup.out_L0 ls -ltra cmd/restore_L0_* rman target / cmdfile=<restore_cmdfile_name>Prüfen Sie die RMAN-Logdatei:
egrep "WARN-|ORA-" log/restore_*.log
Aufgabe 3.3: Phase vorwärts
In dieser Phase wird ein inkrementelles Backup in der Quelldatenbank erstellt und an das Zielsystem übertragen.
Das Backup wird in das Endian-Zielformat konvertiert und auf die Zieldatendateien angewendet. Dieser Prozess kann mehrmals wiederholt werden, um die Zieldatenbank synchron zu halten.
Jedes inkrementelle Backup ist kleiner als das vorherige und reduziert das letzte Ausfallzeitfenster.
Hinweis: Mehrere Backups können für die Quelle ausgeführt werden, ohne sie auf das Ziel anzuwenden.
- Führen Sie auf der Quelle ein inkrementelles Backup der Quelldatenbank der Ebene 1 (L1) aus:
cd <Shared_location>/XTTS_Migration
cp nohup.out nohup.out_1
nohup sh dbmig_driver_m5.sh L1 &
-
Wenn Sie kein gemeinsam verwendetes NFS verwenden, kopieren Sie das Arbeitsverzeichnis auf den Zielhost.
-
Wenden Sie das inkrementelle Backup auf die Datendateikopien im Zielsystem an. Melden Sie sich auf dem Zielsystem als Oracle-Benutzer mit den entsprechenden Umgebungsvariablen an, und führen Sie den Roll Forward-Datendateienschritt wie folgt aus.
Melden Sie sich auf dem Zielsystem als Oracle-Benutzer an, wobei die entsprechenden Umgebungsvariablen festgelegt sind. Das Treiberskript erstellt ein Wiederherstellungsskript. Sie wird im cmd-Verzeichnis gespeichert: Stellen Sie das Backup der Ebene 1 (L1) mit dem neuesten Restore-Skript in der Zieldatenbank wieder her.
cd <Shared_location>/XTTS_Migration
ls -ltra cmd/restore_L1_*
cp nohup.out nohup.out_3
rman target / cmdfile=<restore_cmdfile_name>
Prüfen Sie die RMAN-Logdatei:
egrep "WARN-|ORA-" log/restore_*.log
Der Roll Forward-Schritt meldet sich bei der Zieldatenbank an und wendet die inkrementellen Backups auf die Datendateien der Tablespaces für jeden zu transportierenden Tablespace an.
Wiederholen Sie die Roll Forward-Phase bis zum Datenbank-Cutover-Fenster.
Aufgabe 3.4: Endgültige inkrementelle Backupphase
- Deaktivieren Sie die folgenden auditbezogenen Parameter in Quelle und Ziel, bis der Import abgeschlossen ist. Aktivieren Sie sie nach Abschluss des Imports erneut:
show parameter audit_sys_operations
show parameter audit_trail
alter system set audit_trail=none scope=spfile sid='*';
alter system set audit_sys_operations=FALSE scope=spfile sid='*';
srvctl stop database -d ${ORACLE_UNQNAME}
srvctl start database -d ${ORACLE_UNQNAME}
show parameter audit_sys_operations
show parameter audit_trail
- Führen Sie auf der Quelle das letzte inkrementelle Backup der Quelldatenbank der Ebene 1 (L1) aus:
Das Skript führt Folgendes aus: - Prompts für das Systemkennwort - Setzt Tablespaces in den schreibgeschützten Modus - Führt das letzte inkrementelle Backup aus - Führt den Data Pump-Export aus
cd <Shared_location>/XTTS_Migration
cp nohup.out nohup.out_1
nohup sh dbmig_driver_m5.sh L1F &
-
Wenn Sie kein gemeinsam verwendetes NFS verwenden, kopieren Sie das Arbeitsverzeichnis auf den Zielhost.
-
Letztes inkrementelles Backup auf Zieldatendateien anwenden
Legen Sie auf dem Ziel die Umgebung auf die Zieldatenbank fest. Das Treiberskript erstellt ein Wiederherstellungsskript. Es wird im Cmd-Verzeichnis gespeichert:
cd <Shared_location>/XTTS_Migration
ls -ltra cmd/restore_L1F_*
Stellen Sie das endgültige Backup der Ebene 1 (L1) in der Zieldatenbank mit dem Skript für die endgültige Wiederherstellung wieder her.
cd <Shared_location>/XTTS_Migration
cp nohup.out nohup.out_5
nohup rman target / cmdfile=<restore_cmdfile_name> &
Prüfen Sie die RMAN-Logdatei:
egrep "WARN-|ORA-" log/restore_*.log
Aufgabe 3.5: Data Pump-Import
-
Bearbeiten Sie auf dem Ziel das Importtreiberskript (impdp.sh). Verwenden Sie Informationen zur Zieldatenbank, um die Variablen auszufüllen.
ORACLE_HOME: Pfad zu Oracle HomeORACLE_SID: Zieldatenbank-SIDORACLE_CONNECT_STRING: VerbindungszeichenfolgeDATA_PUMP_PARALLEL: ParallelstufeDATA_PUMP_TRACE: Traceebene
Das Importtreiberskript verwendet vier Parameter:
expdp_dumpfile: Name of the Data Pump dump file, e.g., exp_UP19_240206134155.dmp
rman_last_restore_log: Relative path to the last RMAN restore log
run-mode: One of the below:
test: Generates the Data Pump parameter file. Does not start Data Pump.
test-readonly. Generates the Data Pump parameter file and adds TRANSPORTABLE=KEEP_READ_ONLY to the Data Pump parameter file. Review the documentation for the usage of this parameter. Does not start Data Pump.
run: Generates the Data Pump parameter file. Starts Data Pump to perform the import.
run-readonly: Generates the Data Pump parameter file and adds TRANSPORTABLE=KEEP_READ_ONLY to the Data Pump parameter file. Review the documentation for the usage of this parameter. Starts Data Pump to perform the import.
DP_ENC_PROMPT:
One of the below
Y: Will prompt the user for an encryption password in case one was used for the export
N: Will not prompt the user for an encryption password.
Starten Sie das Importtreiberskript im Testmodus, um die Richtigkeit der generierten Data Pump-Parameterdatei zu prüfen:
cd <Shared_location>/XTTS_Migration
sh impdp.sh <expdp_dumpfile> <rman_last_restore_log> test N
Das Treiberskript generiert die Parameterdatei im aktuellen Verzeichnis. Überprüfen Sie es.
$ vi imp_<oracle_sid>_<timestamp>_xtts.par
Ändern Sie die generierte Data Pump-Parameterdatei nicht. Wenn Sie die Parameterdatei ändern müssen, ändern Sie den Code im Treiberskript, sodass die gewünschte Parameterdatei generiert wird.
Starten Sie das Importtreiberskript im Ausführungsmodus, um den Data Pump-Import auszuführen:
cd <Shared_location>/XTTS_Migration
sh impdp.sh <expdp_dumpfile> <rman_last_restore_log> run N
Prüfen Sie immer die Data Pump-Logdatei. Auch wenn Data Pump als erfolgreich aufgeführt wird, sollten Sie die Data Pump-Logdatei immer auf kritische Fehler prüfen.
- Aktivieren Sie die Auditparameter in Quell- und Zieldatenbanken erneut, nachdem der Import abgeschlossen ist.
show parameter audit_sys_operations
show parameter audit_trail
alter system set audit_trail=<value before migration taken above> scope=spfile sid='*';
alter system set audit_sys_operations=<value before migration taken above> scope=spfile sid='*';
srvctl stop database -d ${ORACLE_UNQNAME}
srvctl start database -d ${ORACLE_UNQNAME}
show parameter audit_sys_operations
show parameter audit_trail
- Validieren Sie die übertragenen Daten.
rman target sys/<password>@<target_db_name> trace=rman_trace.trc log=<backup_location>/tablespace_validate.log
validate tablespace <comma-separated tablespace list> check logical;
- Weisen Sie dem Benutzer-Tablespace zu, um die in der Vorbereitung der Zieldatenbank vorgenommenen Änderungen rückgängig zu machen.
select 'alter user '||username||' default tablespace users;' from dba_users where default_tablespace='USERS_OCI';
Execute the alter commands generated by above select query.
select count(*) from dba_users where default_tablespace='USERS_OCI';
ALTER DATABASE DEFAULT TABLESPACE USERS;
drop tablespace USERS_OCI including contents and datafiles;
select TABLESPACE_NAME from dba_tablespaces where TABLESPACE_NAME='USERS';
Validieren Sie die Daten in Quell- und Zieldatenbanken.
Verwandte Links
Bestätigungen
- Autor – Pavan Yennampelli (Principal Cloud Engineer)
Weitere Lernressourcen
Sehen Sie sich weitere Übungen auf docs.oracle.com/learn an, oder greifen Sie auf weitere kostenlose Lerninhalte im YouTube-Kanal von Oracle Learning zu. Besuchen Sie außerdem education.oracle.com/learning-explorer, um ein Oracle Learning Explorer zu werden.
Die Produktdokumentation finden Sie im Oracle Help Center.
Migrate Oracle Database to OCI Using M5 Cross-Endian XTTS with RMAN Incremental Backups
G56681-01