Recupera un database dall'area di memorizzazione degli oggetti OCI Classic
Questo articolo spiega come recuperare un database utilizzando un backup creato da Oracle Database Backup Module e memorizzato in Oracle Cloud Infrastructure Object Storage Classic.
In questo argomento vengono utilizzati i seguenti termini:
- Database di origine: backup del database nello storage degli oggetti versione Classic.
- Database di destinazione: il nuovo database su un sistema DB in Oracle Cloud Infrastructure.
Prerequisiti
Avrai bisogno di quanto segue:
- Nome del servizio, nome identità, contenitore, nome utente e password per Oracle Cloud Infrastructure Object Storage Classic.
- Password di backup se è stata utilizzata la cifratura basata su password durante il backup su Object Storage Classic.
- L'ID del database di origine, il nome del database e il nome univoco del database (necessario per l'impostazione dello storage).
- Se il database di origine è configurato con TDE (Transparent Data Encryption), sarà necessario eseguire un backup del wallet e della password del wallet.
- Nomi Tns da impostare per qualsiasi database link.
- L'output di
Opatch lsinventoryper Oracle_home del database di origine, come riferimento. - Copia della directory sqlpatch dalla home del database di origine. Questa operazione è necessaria per il rollback nel caso in cui il database di destinazione non includa queste patch.
Impostare lo storage sul sistema DB
-
SSH sul sistema DB.
ssh -i <private_key_path> opc@<db_system_ip_address> -
Eseguire il login come opc, quindi eseguire sudo per l'utente root. Usare
sudo su -con un trattino per richiamare il profilo dell'utente root, che imposterà il valore PATH nella directory dbcli (/opt/oracle/dcs/bin).login as: opc sudo su - -
Utilizzare i comandi Dbstorage per impostare le directory per la memorizzazione DATA, RECO e REDO. Nell'esempio seguente vengono creati 10 GB di storage ACFS per il database tdetest.
dbcli create-dbstorage --dbname tdetest --dataSize 10 --dbstorage ACFSNota: quando si esegue la migrazione di un database versione 11.2, è necessario specificare lo storage ACFS.
-
Utilizzare i comandi Dbstorage per elencare l'ID storage. Avrai bisogno dell'ID per il prossimo passo.
dbcli list-dbstoragesOutput:
ID Type DBUnique Name Status ---------------------------------------- ------ -------------------- ---------- 9dcdfb8e-e589-4d5f-861a-e5ba981616ed Acfs tdetest Configured -
Utilizzare i comandi Dbstorage con l'ID storage del passo precedente per elencare le posizioni DATA, RECO e REDO.
dbcli describe-dbstorage --id 9dcdfb8e-e589-4d5f-861a-e5ba981616edOutput:
DBStorage details ---------------------------------------------------------------- ID: 9dcdfb8e-e589-4d5f-861a-e5ba981616ed DB Name: tdetest DBUnique Name: tdetest DB Resource ID: Storage Type: Acfs DATA Location: /u02/app/oracle/oradata/tdetest RECO Location: /u03/app/oracle/fast_recovery_area/ REDO Location: /u03/app/oracle/redo/ State: ResourceState(status=Configured) Created: August 24, 2016 5:25:38 PM UTC UpdatedTime: August 24, 2016 5:25:53 PM UTC -
Prendere nota delle posizioni DATA, RECO e REDO. Saranno necessari in un secondo momento per impostare i parametri
db_create_file_dest,db_create_online_log_destedb_recovery_file_destper il database.
Scegliere una ORACLE_HOME
Decidere quale ORACLE_HOME utilizzare per il ripristino del database, quindi passare alla home con le impostazioni ORACLE_BASE, ORACLE_HOME e PATH corrette. La ORACLE_HOME non deve essere già associata a un database.
Per ottenere una lista di ORACLE_HOME esistenti e assicurarsi che ORACLE_HOME sia vuota, utilizzare rispettivamente i comandi Dbhome e i comandi del database. Per creare una nuova ORACLE_HOME, utilizzare i comandi Dbhome.
Copia i wallet del database di origine
Saltare questa sezione se il database di origine non è configurato con TDE.
-
Nel sistema DB diventare l'utente oracle:
sudo su - oracle -
Creare la directory seguente, se non esiste già:
mkdir /opt/oracle/dcs/commonstore/wallets/tde/<db_unique_name> - Copiare il file ewallet.p12 dal database di origine nella directory creata nel passo precedente.
-
Nell'host di destinazione, assicurarsi che
$ORACLE_HOME/network/admin/sqlnet.oracontenga la riga seguente:ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=/opt/oracle/dcs/commonstore/wallets/tde/$ORACLE_UNQNAME)))Aggiungere la riga se non esiste nel file. La riga potrebbe non essere presente se si tratta di una nuova home e non è stato ancora creato alcun database su questo host.
-
Creare il wallet di login automatico dal wallet basato su password per consentire l'apertura automatica del wallet durante le operazioni di ripristino e ripristino.
Per un database versione 12.1 o successiva, utilizzare il comando
ADMINISTER KEY MANAGEMENT:$cat create_autologin_12.sh #!/bin/sh if [ $# -lt 2 ]; then echo "Usage: $0 <dbuniquename><remotewalletlocation>" exit 1; fi mkdir /opt/oracle/dcs/commonstore/wallets/tde/$1 cp $2/ewallet.p12* /opt/oracle/dcs/commonstore/wallets/tde/$1 rm -f autokey.ora echo "db_name=$1" > autokey.ora autokeystoreLog="autologinKeystore_`date +%Y%m%d_%H%M%S_%N`.log" echo "Enter Keystore Password:" read -s keystorePassword echo "Creating AutoLoginKeystore -> " sqlplus "/as sysdba" <<EOF spool $autokeystoreLog set echo on startup nomount pfile=autokey.ora ADMINISTER KEY MANAGEMENT CREATE AUTO_LOGIN KEYSTORE FROM KEYSTORE '/opt/oracle/dcs/commonstore/wallets/tde/$1' -- Keystore location IDENTIFIED BY "$keystorePassword"; shutdown immediate; EOFModificare le autorizzazioni
cwallet.ssodaoracle:asmadminaoracle:oinstall.ls -ltr /opt/oracle/dcs/commonstore/wallets/tde/<db_unique_name>Output:
total 20 -rw-r--r-- 1 oracle oinstall 5680 Jul 6 11:39 ewallet.p12 -rw-r--r-- 1 oracle asmadmin 5725 Jul 6 11:39 cwallet.ssoPer un database versione 11.2, utilizzare il comando
orapki:orapki wallet create -wallet wallet_location -auto_login [-pwd password]
Installare il modulo Oracle Database Backup
Il file JAR del modulo di backup è incluso nel sistema DB, ma è necessario installarlo.
-
SSH al sistema DB, eseguire il login come opc, quindi diventare l'utente oracle.
ssh -i <path to SSH key used when launching the DB System> opc@<DB System IP address or hostname> sudo su - oracle -
Spostarsi nella directory che contiene il file
opc_install.jardel modulo di backup.cd /opt/oracle/oak/pkgrepos/orapkgs/oss/<version>/ -
Per installare il modulo di backup, vedere la sintassi dei comandi descritta in Installazione di Oracle Database Cloud Backup Module per OCI Classic in Uso di Oracle Database Backup Cloud Service.
Imposta variabili d'ambiente
Impostare le variabili di ambiente riportate di seguito per le sessioni RMAN e SQL*Plus per il database.
ORACLE_HOME=<path of Oracle Home where the database is to be restored>
ORACLE_SID=<database instance name>
ORACLE_UNQNAME=<db_unique_name in lower case>
NLS_DATE_FORMAT="mm/dd/yyyy hh24:mi:ss"
Allocazione di un canale SBT RMAN
Per ogni operazione di ripristino, allocare un canale SBT e impostare il parametro SBT_LIBRARY nella posizione del file libopc.so e del parametro OPC_FILE nella posizione del file opc_sbt.ora, ad esempio:
ALLOCATE CHANNEL c1 DEVICE TYPE sbt MAXPIECESIZE 2 G FORMAT '%d_%I_%U' PARMS 'SBT_LIBRARY=/tmp/oss/libopc.so ENV=(OPC_PFILE=/<ORACLE_HOME>/dbs/opc_sbt.ora)';
Per ulteriori informazioni su questi file, vedere File creati durante l'installazione di Oracle Database Cloud Backup Module per OCI Classic in Uso di Oracle Database Backup Cloud Service.
Assicurarsi che la decifrazione sia attivata
Assicurarsi che la decifrazione sia attivata per tutte le sessioni di ripristino RMAN.
set decryption wallet open identified by <keystore password>;
Per ulteriori informazioni, vedere Providing the Password Required to Decrypt Encrypted Backups.
Ripristina Spfile
Lo script shell di esempio riportato di seguito ripristina lo spfile. Impostare la variabile $dbID sul dbid del database da ripristinare. Per impostazione predefinita, spfile viene ripristinato in $ORACLE_HOME/dbs/spfile<sid>.ora.
rman target / <<EOF
spool log to "`date +%Y%m%d_%H%M%S_%N`_dbid_${dbID}_restore_spfile.log"
startup nomount
set echo on
run {
ALLOCATE CHANNEL c1 DEVICE TYPE sbt MAXPIECESIZE 2 G FORMAT '%d_%I_%U' PARMS 'SBT_LIBRARY=/tmp/oss/libopc.so ENV=(OPC_PFILE=/tmp/oss/opc_sbt.ora)';
SET DBID=$dbID;
RESTORE SPFILE FROM AUTOBACKUP;
shutdown immediate;
EOF
Imposta i parametri del database
-
Avvia il database in modalità NOMOUNT.
startup nomount -
Aggiornare spfile e modificare i seguenti parametri.
-
Se il tipo di storage del database è ACFS, utilizzare le posizioni DATA, RECO e REDO ottenute dall'output del comando
dbcli describe-dbstorage, come descritto nella sezione Imposta storage sul sistema DB:alter system set db_create_file_dest='/u02/app/oracle/oradata/' scope = spfile; alter system set db_create_online_log_dest_1='/u03/app/oracle/redo' scope = spfile; alter system set db_recovery_file_dest='/u03/app/oracle/fast_recovery_area' scope = spfile; -
Se il tipo di memorizzazione del database è ASM:
alter system set db_create_file_dest='+DATA' scope = spfile; alter system set db_create_online_log_dest_1='+RECO' scope = spfile; alter system set db_recovery_file_dest='+RECO' scope = spfile; -
Il set
db_recovery_file_dest_sizenon è impostato o è impostato in modo errato:alter system set db_recovery_file_dest_size=<sizeG> scope=spfile; -
Impostare
audit_file_destsul valore corretto:alter system set audit_file_dest=/u01/app/oracle/admin/<db_unique_name in lower case>/adump
-
-
Rimuovere il parametro
control_files. I parametri OMM (Oracle Managed Files) verranno utilizzati per creare il control file.alter system reset control_files scope=spfile; -
Riavviare il database in modalità nomount utilizzando i nuovi parametri aggiunti.
shutdown immediate startup nomount
Ripristina il control file
Modificare lo script della shell di esempio seguente per l'ambiente in uso per ripristinare il control file. Impostare la variabile $dbID sul dbid del database da ripristinare. Impostare SBT_LIBRARY sulla posizione specificata nel parametro -libDir durante l'installazione del modulo di backup. Impostare OPC-PFILE sulla posizione specificata nel parametro -configFile, che per impostazione predefinita è ORACLE_HOME/dbs/opcSID.ora.
rman target / <<EOF
spool log to "`date +%Y%m%d_%H%M%S_%N`_dbid_${dbID}_restore_controlfile.log"
set echo on
run {
ALLOCATE CHANNEL c1 DEVICE TYPE sbt MAXPIECESIZE 2 G FORMAT '%d_%I_%U' PARMS 'SBT_LIBRARY=/<Backup Module libDir>/libopc.so ENV=(OPC_PFILE=/<Backup Module configFile>/opcSID.ora)';
SET DBID=$dbID;
RESTORE CONTROLFILE FROM AUTOBACKUP;
alter database mount;
}
exit;
EOF
Ripristino del database
-
Visualizzare in anteprima e convalidare il backup. Il database è ora attivato e RMAN dovrebbe essere in grado di individuare il backup dal control file ripristinato. Questo passo consente di assicurarsi che l'elenco dei log di archivio sia presente e che i componenti di backup possano essere ripristinati.
Negli esempi riportati di seguito, modificare SBT_LIBRARY e OPC_PFILE in base alle esigenze dell'ambiente.
rman target / <<EOF spool log to "`date +%Y%m%d_%H%M%S_%N`_restore_database_preview.log" set echo on run { ALLOCATE CHANNEL c1 DEVICE TYPE sbt MAXPIECESIZE 2 G FORMAT '%d_%I_%U' PARMS 'SBT_LIBRARY=/tmp/oss/libopc.so ENV=(OPC_PFILE=/tmp/oss/opc_sbt.ora)'; ALLOCATE CHANNEL c2 DEVICE TYPE sbt MAXPIECESIZE 2 G FORMAT '%d_%I_%U' PARMS 'SBT_LIBRARY=/tmp/oss/libopc.so ENV=(OPC_PFILE=/tmp/oss/opc_sbt.ora)'; ALLOCATE CHANNEL c3 DEVICE TYPE sbt MAXPIECESIZE 2 G FORMAT '%d_%I_%U' PARMS 'SBT_LIBRARY=/tmp/oss/libopc.so ENV=(OPC_PFILE=/tmp/oss/opc_sbt.ora)'; restore database validate header preview; }Esaminare l'output e se sono presenti messaggi di errore, analizzare la causa del problema.
-
Reindirizzare il ripristino utilizzando
set newnameper ripristinare i file di dati in formato OMF e utilizzareswitch datafile allper consentire l'aggiornamento del control file con le nuove copie dei file di dati.rman target / <<EOF spool log to "`date +%Y%m%d_%H%M%S_%N`_restore_database_preview.log" set echo on run { ALLOCATE CHANNEL c1 DEVICE TYPE sbt MAXPIECESIZE 2 G FORMAT '%d_%I_%U' PARMS 'SBT_LIBRARY=/tmp/oss/libopc.so ENV=(OPC_PFILE=/tmp/oss/opc_sbt.ora)'; ALLOCATE CHANNEL c2 DEVICE TYPE sbt MAXPIECESIZE 2 G FORMAT '%d_%I_%U' PARMS 'SBT_LIBRARY=/tmp/oss/libopc.so ENV=(OPC_PFILE=/tmp/oss/opc_sbt.ora)'; ALLOCATE CHANNEL c3 DEVICE TYPE sbt MAXPIECESIZE 2 G FORMAT '%d_%I_%U' PARMS 'SBT_LIBRARY=/tmp/oss/libopc.so ENV=(OPC_PFILE=/tmp/oss/opc_sbt.ora)'; set newname for database to new; restore database; switch datafile all; switch tempfile all; recover database; }Questo recupero tenterà di utilizzare l'ultimo backup del log di archivio disponibile e quindi non riuscirà con un errore, ad esempio:
RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of recover command at 07/20/2016 12:09:02 RMAN-06054: media recovery requesting unknown archived log for thread 1 with sequence 22 and starting SCN of 878327 -
Per completare il recupero incompleto, eseguire un recupero utilizzando il numero di sequenza e il numero di thread visualizzati nel messaggio RMAN-06054, ad esempio:
recover database until sequence 22 thread 1;
Reimpostazione dei log
Reimpostare i log.
alter database open resetlogs;
Preparati a registrare il database
Prima di registrare il database:
- Assicurarsi che il valore del parametro COMPATIBLE del database sia accettabile. Se il valore è inferiore al minimo, il database non può essere registrato finché non si aggiorna la compatibilità del database.
-
Verificare che il database sia stato registrato con il listener e il nome del servizio.
lsnrctl services -
Assicurarsi che il password file sia stato ripristinato o creato per il nuovo database.
ls -ltr $ORACLE_HOME/dbs/orapw<oracle sid>Se il file non esiste, crearlo utilizzando l'utility orapwd.
orapwd file=<$ORACLE_HOME/dbs/orapw<$ORACLE_SID>> password=<sys password> -
Assicurarsi che il database ripristinato sia aperto in modalità lettura/scrittura.
select open_mode from v$database;L'output del comando deve indicare la modalità di lettura scrittura. Il comando
dbcli register-databasetenterà di eseguire datapatch, che richiede la modalità di lettura e scrittura. Se sono presenti PDB, devono essere anche in modalità di lettura/scrittura per garantire che DataPatch venga eseguito su di essi. -
Dalla home oracle nel database ripristinato, utilizzare il comando seguente per verificare la connessione a SYS:
conn sys/<password>@//<hostname>:1521/<database service name>Questa connessione è necessaria per registrare il database in un secondo momento. Risolvere eventuali problemi di connessione prima di continuare.
-
Assicurarsi che il database sia in esecuzione su spfile utilizzando il comando SQL*Plus.
SHOW PARAMETERS SPFILE - (Facoltativo) Se si desidera gestire il backup del database con l'interfaccia della riga di comando dbcli, è possibile associare una configurazione di backup nuova o esistente al database migrato al momento della registrazione o dopo la registrazione. Una configurazione di backup definisce la destinazione del backup e la finestra di recupero per il database. Utilizzare i comandi Backupconfig per creare, elencare e visualizzare le configurazioni di backup.
- Copiare la cartella
$ORACLE_HOME/sqlpatchdal database di origine al database di destinazione. Ciò consentirà al comandodbcli register-databasedi eseguire il rollback di eventuali patch in conflitto.
Nota: se si esegue la migrazione di un database della versione 11.2, dopo la registrazione del database sono necessari passi aggiuntivi. Per ulteriori informazioni, vedere Rollback Patches on a Version 11.2 Database.
Registrare il database nel sistema DB
I comandi del database registrano il database ripristinato in dcs-agent in modo che possa essere gestito dallo stack dcs-agent.
Nota: il comando dbcli register-database non è disponibile nei sistemi DB RAC a 2 nodi.
Come utente root, utilizzare il comando dbcli register-database per registrare il database nel sistema DB, ad esempio:
dbcli register-database --dbclass OLTP --dbshape odb1 --servicename tdetest --syspassword
Output:
Password for SYS:
{
"jobId" : "317b430f-ad5f-42ae-bb07-13f053d266e2",
"status" : "Created",
"message" : null,
"reports" : [ ],
"createTimestamp" : "August 08, 2016 05:55:49 AM EDT",
"description" : "Database service registration with db service name: tdetest",
"updatedTime" : "August 08, 2016 05:55:49 AM EDT"
}
Aggiorna tnsnames.ora
Controllare tnsnames.ora nella posizione di backup, controllare i database link utilizzati nel database clonato, quindi aggiungere eventuali stringhe di connessione pertinenti al file di database clonato in $ORACLE_HOME/network/admin/tnsnames.ora.
Rollback delle patch su un database della versione 11.2
Per i database della versione 11.2, l'applicazione sqlpatch non è automatizzata, pertanto è necessario eseguire il rollback manuale delle patch provvisorie (precedentemente note come patch "una tantum") applicate al database di origine che non fanno parte del PSU installato nel database di destinazione. Dopo aver registrato il database, eseguire lo script catbundle.sql e quindi lo script postinstall.sql con la patch PSU corrispondente (o la patch di overlay sopra la patch PSU), come descritto di seguito.
Suggerimento: alcune patch provvisorie possono includere i file scritti nella directory $ORACLE_HOME/rdbms/admin nonché la directory $ORACLE_HOME/sqlpatch. Oracle consiglia di eseguire il rollback di queste patch nel database di origine utilizzando le istruzioni riportate nel file read-me della patch prima di eseguire la migrazione del database nell'ambiente OCI. Per assistenza sul rollback di queste patch, contattare il Supporto Oracle.
-
Nel sistema DB utilizzare il comando
dbcli list-dbhomesper trovare il numero di patch PSU per la home del database della versione 11.2. Nell'output del comando di esempio seguente, il numero di patch PSU è il secondo numero nella colonna Versione DB:dbcli list-dbhomesOutput:
ID Name DB Version Home Location Status ------------------------------------ ----------------- ------------------------------------- ----------------------------------------- ---------- 59d9bc6f-3880-4d4f-b5a6-c140f16f8c64 OraDB11204_home1 11.2.0.4.160719 (23054319, 23054359) /u01/app/oracle/product/11.2.0.4/dbhome_1 ConfiguredIl primo numero di patch, 23054319 nell'esempio precedente, si riferisce al componente OCW nella home del database.
-
Per trovare l'eventuale patch di overlay, usare il comando
lsinventory. Nell'esempio seguente, la patch numero 24460960 è la patch di overlay sulla parte superiore della patch PSU 23054359.$ORACLE_HOME/OPatch/opatch lsinventoryOutput:
... Installed Top-level Products (1): Oracle Database 11g 11.2.0.4.0 There are 1 products installed in this Oracle Home. Interim patches (5) : Patch 24460960 : applied on Fri Sep 02 15:28:17 UTC 2016 Unique Patch ID: 20539912 Created on 31 Aug 2016, 02:46:31 hrs PST8PDT Bugs fixed: 23513711, 23065323, 21281607, 24006821, 23315889, 22551446, 21174504 This patch overlays patches: 23054359 This patch needs patches: 23054359 as prerequisites -
Avviare SQL*Plus ed eseguire lo script
catbundle.sql, ad esempio:startup connect / as sysdba @$ORACLE_HOME/rdbms/admin/catbundle.sql psu apply exit -
Applicare sqlpatch, utilizzando il numero di patch overlay del passo precedente, ad esempio:
connect / as sysdba @$ORACLE_HOME/sqlpatch/24460960/postinstall.sql exit
Nota: se nel database di origine sono installate patch singole e tali patch non fanno parte della PSU installata nell'ambiente cloud, è necessario eseguire il rollback delle modifiche SQL corrispondenti a tali patch singole. Per eseguire il rollback delle modifiche SQL, copiare lo script $ORACLE_HOME/sqlpatch/<patch#>/postdeinstall.sql dall'ambiente di origine all'ambiente cloud ed eseguire lo script postdeinstall.sql.
Elenco di controllo dopo il ripristino
Dopo aver ripristinato e registrato il database nel sistema DB, utilizzare la seguente lista di controllo per verificare i risultati ed eseguire le personalizzazioni successive al ripristino.
- Assicurarsi che i file di database siano stati ripristinati in formato OMF.
- Assicurarsi che il database sia elencato nell'output dei comandi del database.
-
Controllare i seguenti riferimenti esterni nel database e aggiornarli se necessario:
- Tabelle esterne: se il database di origine utilizza tabelle esterne, eseguire il backup dei dati ed eseguirne la migrazione nell'host di destinazione.
- Directory: personalizzare le directory predefinite in base alle esigenze per il database ripristinato.
- Database link: assicurarsi che tutte le voci TNS necessarie siano aggiornate nel file
tnsnames.orain ORACLE_HOME. - E-mail e URL: assicurarsi che gli indirizzi e-mail e gli URL utilizzati nel database siano ancora accessibili dal sistema DB.
- Job pianificati: rivedere i job pianificati nel database di origine e pianificare job simili in base alle esigenze nel database ripristinato.
- Se è stata associata una configurazione di backup durante la registrazione del database, eseguire un backup utilizzando i comandi di backup.
- Se il database ripristinato contiene un CDB e PDB, verificare che le patch siano state applicate a tutti i PDB.