- Hybrid-DB-Topologie für eine On-Premise-Datenbank bereitstellen
- Standbyinstanz mit RMAN erstellen
Standbyinstanz mit RMAN erstellen
Verwenden Sie Oracle Recovery Manager (RMAN), um eine Standby-Cloud-Instanz aus der Primärdatenbank zu erstellen.
Archive-Log erstellen
Prüfen Sie den Logmodus Ihres On-Premise-Oracle-Servers. Wenn er sich im NOARCHIVELOG
-Modus befindet, ändern Sie ihn in den ARCHIVELOG
-Modus, um ein Archive-Log zu erstellen.
- Logmodus für den On-Premise-Server anzeigen.
SQL> select log_mode from v$database;
Die Ausgabe wird wie folgt aussehen, wenn sich der Logmodus imNOARCHIVELOG
-Modus befindet:LOG_MODE ------------ NOARCHIVELOG
- Herunterfahren der On-Premise-Instanz.
SQL> shutdown immediate;
Die Ausgabe sieht wie folgt aus:Database closed. Database dismounted. ORACLE instance shut down.
- Mounten Sie die On-Premise-Datenbank.
SQL> startup mount;
Die Ausgabe sieht wie folgt aus:ORACLE instance started. Total System Global Area 4966054520 bytes Fixed Size 9144952 bytes Variable Size 922746880 bytes Database Buffers 4026531840 bytes Redo Buffers 7630848 bytes Database mounted.
- Ändern Sie das Datenbankarchiv-Log, und öffnen Sie die Datenbank.
SQL> alter database archivelog;
SQL> alter database open;
- Ändern Sie den Logmodus in
ARCHIVELOG
.SQL> select log_mode from v$database;
LOG_MODE ------------ ARCHIVELOG
- Zeigen Sie die Archive-Logliste an.
SQL> archive log list;
Die Ausgabe sieht wie folgt aus:Database log mode Archive Mode Automatic archival Enabled Archive destination /opt/oracle/product/19c/dbhome_1/dbs/arch Oldest online log sequence 10 Next log sequence to archive 12 Current log sequence 12
- Alle Logs archivieren.
SQL> archive log all;
ORA-00271:there are no logs that need archiving
Standbydatenbank auf OCI instanziieren
Verwenden Sie Oracle Recovery Manager (RMAN), um die aktive Primärdatenbank in Oracle Cloud Infrastructure (OCI) zu duplizieren. Sie können auch aus einem Backup der Primärdatenbank duplizieren.
- Stoppen Sie die Datenbank mit dem Utility
srvctl
, oder fahren Sie die Datenbank mit SQL*Plus herunter.-
$ srvctl stop database -d standby DB_UNIQUE_NAME -o immediate
-
Shutdown immediate;
-
- Melden Sie sich bei der Datenbank an.
$ rman target / RMAN> startup nomount;
- Stellen Sie die Standby-Kontrolldatei aus dem Primärservice wieder her.In diesem Beispiel ist ORCLCDB die primäre On-Premise-Datenbank.
RMAN> restore standby controlfile from service 'ORCLCDB';
- Wenn folgende Fehlermeldungen angezeigt werden, melden Sie sich erneut bei der Datenbank an.
RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of restore command at 09/24/2020 21:10:13 RMAN-06496: must use the TO clause when the database is mounted or open
- Datenbank herunterfahren
RMAN> shutdown;
- Melden Sie sich bei der Datenbank an
RMAN> startup nomount;
- Datenbank herunterfahren
- Stellen Sie die Datenbankkontrolldatei anstelle des Recovery-Katalogs wieder her.
RMAN> restore standby controlfile from service 'ORCLCDB';
Die Ausgabe sieht wie folgt aus:Starting restore at DD-MM-YY using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=182 device type=DISK channel ORA_DISK_1: starting datafile backup set restore channel ORA_DISK_1: using network backup set from service ORCLCDB channel ORA_DISK_1: restoring control file channel ORA_DISK_1: restore complete, elapsed time: 00:00:02 output file name=/u02/app/oracle/oradata/ORCLCDB_iad1s3/control01.ctl output file name=/u03/app/oracle/fast_recovery_area/ORCLCDB_IAD1S3/control02.ctl Finished restore at DD-MM-YY
- Datenbank mounten.
RMAN> alter database mount;
- Wenn ähnliche Fehlermeldungen wie die folgenden angezeigt werden, melden Sie sich erneut bei der Datenbank an.Wenn Sie keine Fehlermeldung erhalten, gehen Sie zu Schritt 8.
Released channel: ORA_DISK_1 RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of sql statement command at 09/24/2020 21:13:41 RMAN-06189: current DBID 2822997440 does not match target mounted database (2823031995)
- Datenbank herunterfahren
RMAN> shutdown immediate;
Die Ausgabe sieht wie folgt aus:database dismounted Oracle instance shutdown
- Melden Sie sich bei der Datenbank an
RMAN> startup nomount;
Die Ausgabe sieht wie folgt aus:connected to target database (not started) Oracle instance startedTotal System Global Area 14495511760 bytesFixed Size 9151696 bytes Variable Size 1912602624 bytes Database Buffers 12549357568 bytes Redo Buffers 24399872 bytes
- Legen Sie die Datenbank-ID fest.
RMAN> set DBID=2823031995;
Die Ausgabe sieht wie folgt aus:executing command: SET DBID
- Datenbank herunterfahren
- Ändern Sie als Root auf der OCI-Instanz die Berechtigungen des Oracle-Verzeichnisses in "Öffnen" (
chmod 777
).[root@drdb opc]# sudo su [root@drdb opc]# cd /opt/ [root@drdb opt]# ls -lrt total 8 drwx------ 7 root root 4096 Sep 12 00:39 zookeeper drwxr-xr-x 6 root root 4096 Sep 12 00:51 oracle [root@drdb opt]# chmod 777 oracle/ [root@drdb opt]# ls -lrt total 8 drwx------ 7 root root 4096 Sep 12 00:39 zookeeper drwxrwxrwx 6 root root 4096 Sep 12 00:51 oracle
- Stellen Sie die Datenbank aus der Primärdatenbank (ORCLCDB) wieder her.
RMAN> restore database from service 'ORCLCDB' section size 5G;
Nachdem das crosscheck Backup und die crosscheck Kopie abgeschlossen sind, wird eine Liste der katalogisierten Dateien in der Ausgabe angezeigt, ähnlich wie die folgenden:Starting restore at 01-SEP-20 Starting implicit crosscheck backup at 01-SEP-20 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=184 device type=DISK Finished implicit crosscheck backup at 01-SEP-20 Starting implicit crosscheck copy at 01-SEP-20 using channel ORA_DISK_1 Finished implicit crosscheck copy at 01-SEP-20 searching for all files in the recovery area cataloging files... cataloging done List of Cataloged Files ======================= File Name: /u03/app/oracle/fast_recovery_area/ORCLCDB_IAD1S3/archivelog/2020_08_27/o1_mf_1_3_hngo1gl6_.arc File Name: /u03/app/oracle/fast_recovery_area/ORCLCDB_IAD1S3/archivelog/2020_08_27/o1_mf_1_1_hngnvtgb_.arc File Name: /u03/app/oracle/fast_recovery_area/ORCLCDB_IAD1S3/archivelog/2020_08_27/o1_mf_1_2_hngnwdfd_.arc using channel ORA_DISK_1 channel ORA_DISK_1: starting datafile backup set restore channel ORA_DISK_1: using network backup set from service ORCLCDB channel ORA_DISK_1: specifying datafile(s) to restore from backup set channel ORA_DISK_1: restoring datafile 00001 to /opt/oracle/oradata/ORCLCDB/system01.dbf channel ORA_DISK_1: restoring section 1 of 1 channel ORA_DISK_1: restore complete, elapsed time: 00:00:26 channel ORA_DISK_1: starting datafile backup set restore channel ORA_DISK_1: using network backup set from service ORCLCDB channel ORA_DISK_1: specifying datafile(s) to restore from backup set channel ORA_DISK_1: restoring datafile 00003 to /opt/oracle/oradata/ORCLCDB/sysaux01.dbf channel ORA_DISK_1: restoring section 1 of 1 channel ORA_DISK_1: restore complete, elapsed time: 00:00:15 channel ORA_DISK_1: starting datafile backup set restore channel ORA_DISK_1: using network backup set from service ORCLCDB channel ORA_DISK_1: specifying datafile(s) to restore from backup set channel ORA_DISK_1: restoring datafile 00004 to /opt/oracle/oradata/ORCLCDB/undotbs01.dbf channel ORA_DISK_1: restoring section 1 of 1 channel ORA_DISK_1: restore complete, elapsed time: 00:00:08 channel ORA_DISK_1: starting datafile backup set restore channel ORA_DISK_1: using network backup set from service ORCLCDB channel ORA_DISK_1: specifying datafile(s) to restore from backup set channel ORA_DISK_1: restoring datafile 00005 to /opt/oracle/oradata/ORCLCDB/pdbseed/system01.dbf channel ORA_DISK_1: restoring section 1 of 1 channel ORA_DISK_1: restore complete, elapsed time: 00:00:07 channel ORA_DISK_1: starting datafile backup set restore channel ORA_DISK_1: using network backup set from service ORCLCDB channel ORA_DISK_1: specifying datafile(s) to restore from backup set channel ORA_DISK_1: restoring datafile 00006 to /opt/oracle/oradata/ORCLCDB/pdbseed/sysaux01.dbf channel ORA_DISK_1: restoring section 1 of 1 channel ORA_DISK_1: restore complete, elapsed time: 00:00:08 channel ORA_DISK_1: starting datafile backup set restore channel ORA_DISK_1: using network backup set from service ORCLCDB channel ORA_DISK_1: specifying datafile(s) to restore from backup set channel ORA_DISK_1: restoring datafile 00007 to /opt/oracle/oradata/ORCLCDB/users01.dbf channel ORA_DISK_1: restoring section 1 of 1 channel ORA_DISK_1: restore complete, elapsed time: 00:00:01 channel ORA_DISK_1: starting datafile backup set restore channel ORA_DISK_1: using network backup set from service ORCLCDB channel ORA_DISK_1: specifying datafile(s) to restore from backup set channel ORA_DISK_1: restoring datafile 00008 to /opt/oracle/oradata/ORCLCDB/pdbseed/undotbs01.dbf channel ORA_DISK_1: restoring section 1 of 1 channel ORA_DISK_1: restore complete, elapsed time: 00:00:04 channel ORA_DISK_1: starting datafile backup set restore channel ORA_DISK_1: using network backup set from service ORCLCDB channel ORA_DISK_1: specifying datafile(s) to restore from backup set channel ORA_DISK_1: restoring datafile 00009 to /opt/oracle/oradata/ORCLCDB/ORCLPDB1/system01.dbf channel ORA_DISK_1: restoring section 1 of 1 channel ORA_DISK_1: restore complete, elapsed time: 00:00:07 channel ORA_DISK_1: starting datafile backup set restore channel ORA_DISK_1: using network backup set from service ORCLCDB channel ORA_DISK_1: specifying datafile(s) to restore from backup set channel ORA_DISK_1: restoring datafile 00010 to /opt/oracle/oradata/ORCLCDB/ORCLPDB1/sysaux01.dbf channel ORA_DISK_1: restoring section 1 of 1 channel ORA_DISK_1: restore complete, elapsed time: 00:00:08 channel ORA_DISK_1: starting datafile backup set restore channel ORA_DISK_1: using network backup set from service ORCLCDB channel ORA_DISK_1: specifying datafile(s) to restore from backup set channel ORA_DISK_1: restoring datafile 00011 to /opt/oracle/oradata/ORCLCDB/ORCLPDB1/undotbs01.dbf channel ORA_DISK_1: restoring section 1 of 1 channel ORA_DISK_1: restore complete, elapsed time: 00:00:01 channel ORA_DISK_1: starting datafile backup set restore channel ORA_DISK_1: using network backup set from service ORCLCDB channel ORA_DISK_1: specifying datafile(s) to restore from backup set channel ORA_DISK_1: restoring datafile 00012 to /opt/oracle/oradata/ORCLCDB/ORCLPDB1/users01.dbf channel ORA_DISK_1: restoring section 1 of 1 channel ORA_DISK_1: restore complete, elapsed time: 00:00:01 Finished restore at 01-SEP-20
- Fahren Sie die Datenbank herunter.
RMAN> Shutdown immediate;
- Starten Sie die Standby-Datenbank mit dem Utility Server Control (
srvctl
) oder SQL*Plus neu.- Starten Sie die Datenbank mit dem Utility
srvctl
:srvctl start instance -d standby DB_UNIQUE_NAME -i standby instance name -o mount
- Starten Sie die Datenbank mit SQL*Plus:
$ ./sqlplus / as sysdba
- Starten Sie die Datenbank mit dem Utility
- Datenbank mounten.
SQL> startup mount
Die Ausgabe sieht wie folgt aus:ORACLE instance started. Total System Global Area 1.4496E+10 bytes Fixed Size 9151696 bytes Variable Size 1912602624 bytes Database Buffers 1.2549E+10 bytes Redo Buffers 24399872 bytes Database mounted.
- Datenbank ändern.
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
Database altered.
- Zeigen Sie Rolle, Threadnummer, Sequenznummer und Aktion für die Datenbank an.
SQL> SELECT ROLE, THREAD#, SEQUENCE#, ACTION FROM V$DATAGUARD_PROCESS;
Die Ausgabe sieht wie folgt aus:ROLE THREAD# SEQUENCE# ACTION ------------------------ ---------- ---------- ------------ post role transition 0 0 IDLE recovery apply slave 0 0 IDLE recovery apply slave 0 0 IDLE recovery apply slave 0 0 IDLE recovery apply slave 0 0 IDLE recovery logmerger 1 7 WAIT_FOR_LOG managed recovery 0 0 IDLE archive redo 0 0 IDLE archive local 0 0 IDLE redo transport timer 0 0 IDLE gap manager 0 0 IDLE archive redo 0 0 IDLE archive redo 0 0 IDLE redo transport monitor 0 0 IDLE log writer 0 0 IDLE 15 rows selected.
- (Optional) Zeigen Sie den Datenbanknamen und die Rolle an.
SQL> select name, database_role from v$database;
Die Ausgabe sieht wie folgt aus:NAME DATABASE_ROLE --------- ---------------- ORCLCDB PHYSICAL STANDBY
- Löschen Sie als
sysdba
alle Online Standbyredo
-Logs$ sqlplus “/ as sysdba” SQL> alter system set db_create_online_log_dest_1=<DATA Disk group>; SQL> set pagesize 0 feedback off linesize 120 trimspool on SQL> spool /tmp/clearlogs.sql SQL> select distinct 'alter database clear logfile group '||group#||';' from v$logfile; SQL> spool off SQL> @/tmp/clearlogs.sql SQL> select member from v$logfile;
RAC-Instanzen zu tnsnames.ora
-Dateien hinzufügen
Fügen Sie für Oracle Real Application Clusters (Oracle RAC) die Oracle RAC-Instanzen tnsnames.ora
hinzu, und starten Sie die Listener neu. Der Scanname kann in keiner Richtung in einer hybriden Konfiguration aufgelöst werden, sodass die Adressliste so konfiguriert werden muss, dass sie hohe Verfügbarkeit bietet.
- Bearbeiten Sie die Datei
TNSNAMES.ORA
auf dem On-Premise-Datenbankhost.Primary db_unique_name = (DESCRIPTION = (SDU=65536) (RECV_BUF_SIZE=134217728) (SEND_BUF_SIZE=134217728) (ADDRESS_LIST = (FAILOVER=on) (CONNECT_TIMEOUT=3)(RETRY_COUNT=3) (ADDRESS = (PROTOCOL = TCP)(HOST = PrimaryDB Node 1IP address)(PORT = {1521|port#})) (ADDRESS = (PROTOCOL = TCP)(HOST = StandbyDB Node 2IP address)(PORT = {1521|port#})) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = Primary_db_SID) (UR=A) )) Standby db_unique_name = (DESCRIPTION = (SDU=65536) (RECV_BUF_SIZE=134217728) (SEND_BUF_SIZE=134217728) (ADDRESS_LIST = (FAILOVER=on) (CONNECT_TIMEOUT=3)(RETRY_COUNT=3) (ADDRESS = (PROTOCOL = TCP)(HOST = StandbyDB Node 1IP address)(PORT = {1521|port#})) (ADDRESS = (PROTOCOL = TCP)(HOST = StandbyDB Node 2IP address)(PORT = {1521|port#})) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = Primary_db_SID) (UR=A) ))
- Bearbeiten Sie die Datei
TNSNAMES.ORA
auf dem Standby-Datenbankhost in Oracle Cloud Infrastructure (OCI).Standby db_unique_name = (DESCRIPTION = (SDU=65536) (RECV_BUF_SIZE=134217728) (SEND_BUF_SIZE=134217728) (ADDRESS_LIST = (FAILOVER=on) (CONNECT_TIMEOUT=3)(RETRY_COUNT=3) (ADDRESS = (PROTOCOL = TCP)(HOST = StandbyDB Node 1IP address)(PORT = {1521|port#})) (ADDRESS = (PROTOCOL = TCP)(HOST = StandbyDB Node 2IP address)(PORT = {1521|port#})) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = Primary_db_SID) (UR=A) )) <Primary db_unique_name> = (DESCRIPTION = (SDU=65536) (RECV_BUF_SIZE=134217728) (SEND_BUF_SIZE=134217728) (ADDRESS_LIST = (FAILOVER=on) (CONNECT_TIMEOUT=3)(RETRY_COUNT=3) (ADDRESS = (PROTOCOL = TCP)(HOST = PrimaryDB Node 1IP address)(PORT = {1521|port#})) (ADDRESS = (PROTOCOL = TCP)(HOST = StandbyDB Node 2IP address)(PORT = {1521|port#})) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = Primary_db_SID) (UR=A) ))