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 in Object Storage Classic.
- Database di destinazione: il nuovo database in un sistema DB in Oracle Cloud Infrastructure.
Prerequisiti
Avrai bisogno di:
- Nome del servizio, nome di 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 in Object Storage Classic.
- ID del database di origine, nome del database, nome univoco del database (obbligatorio per l'impostazione dello storage).
- Se il database di origine è configurato con Transparent Data Encryption (TDE), sarà necessario un backup del wallet e della password del wallet.
- Tnsnames da impostare per qualsiasi database link.
- L'output di
Opatch lsinventory
per il database di origine Oracle_home, 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.
Argomenti correlati
Impostare lo storage sul sistema DB
- SSH al sistema DB.
ssh -i <private_key_path> opc@<db_system_ip_address>
- Eseguire il login come opc, quindi sudo per l'utente root. Usare
sudo su -
con un trattino per richiamare il profilo dell'utente root, che imposterà il PATH sulla directory dbcli (/opt/oracle/dcs/bin
).login as: opc sudo su -
- Utilizzare i comandi di Dbstorage per impostare le directory per la memorizzazione DATA, RECO e REDO. L'esempio seguente crea 10 GB di storage ACFS per il database tdetest.
dbcli create-dbstorage --dbname tdetest --dataSize 10 --dbstorage ACFS
Nota
Quando si esegue la migrazione di un database versione 11.2, è necessario specificare lo storage ACFS. - Utilizzare i comandi di Dbstorage per visualizzare l'ID di storage. Per il passo successivo sarà necessario l'ID.
Output:dbcli list-dbstorages
ID Type DBUnique Name Status ---------------------------------------- ------ -------------------- ---------- 9dcdfb8e-e589-4d5f-861a-e5ba981616ed Acfs tdetest Configured
- Utilizzare i comandi Dbstorage con l'ID di memorizzazione del passo precedente per elencare le posizioni DATA, RECO e REDO.
Output:dbcli describe-dbstorage --id 9dcdfb8e-e589-4d5f-861a-e5ba981616ed
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. In seguito sarà necessario impostarli per impostare i parametri
db_create_file_dest
,db_create_online_log_dest
edb_recovery_file_dest
per il database.
Scegliere un 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. ORACLE_HOME non deve essere già associato a un database.
Per ottenere una lista di ORACLE_HOMEs esistenti e assicurarsi che ORACLE_HOME sia vuoto, utilizzare rispettivamente i comandi Dbhome e Comandi database. Per creare un nuovo ORACLE_HOME, utilizzare i comandi Dbhome.
Copiare i wallet del database di origine
Saltare questa sezione se il database di origine non è configurato con TDE.
- Nel sistema DB, diventa l'utente oracle:
sudo su - oracle
- Creare la seguente directory, 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, accertarsi che
$ORACLE_HOME/network/admin/sqlnet.ora
contenga 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 recupero.
Per un database della 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; EOF
Modificare le autorizzazioni
cwallet.sso
daoracle:asmadmin
inoracle:oinstall
.
Output:ls -ltr /opt/oracle/dcs/commonstore/wallets/tde/<db_unique_name>
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.sso
Per un database della versione 11.2, utilizzare il comando
orapki
:orapki wallet create -wallet wallet_location -auto_login [-pwd password]
Installazione del modulo di backup Oracle Database
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.jar
del 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 del modulo di backup Oracle Database Cloud per OCI Classic in Uso di Oracle Database Backup Cloud Service.
Imposta variabili di ambiente
Impostare le seguenti variabili di ambiente 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 sulla posizione del file libopc.so
e del parametro OPC_FILE sulla 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 quando viene installato il modulo di backup di Oracle Database Cloud 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 Come fornire la password necessaria per decifrare i backup cifrati.
Ripristina Spfile
Il seguente script della shell di esempio 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
Impostare 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 relativa all'impostazione dello storage nel 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_size
non è impostato o è impostato in modo errato:alter system set db_recovery_file_dest_size=<sizeG> scope=spfile;
-
Impostare
audit_file_dest
sul 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 Oracle Managed Files (OMF) 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
Ripristinare il control file
Modificare il seguente script della shell di esempio 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
quando è stato installato il 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
Ripristina il database
- Visualizzare l'anteprima e convalidare il backup. Il database è ora installato e RMAN deve essere in grado di individuare il backup dal control file ripristinato. Questo passo garantisce la presenza della lista dei log di archivio e il ripristino dei componenti di backup.
Negli esempi seguenti, modificare SBT_LIBRARY e OPC_PFILE in base alle esigenze per l'ambiente in uso.
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 newname
per ripristinare i file di dati in formato OMF e utilizzareswitch datafile all
per consentire l'aggiornamento del control file con le nuove copie del 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 disponibile del log di archivio 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;
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 la 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 scrittura in lettura. Il comando
dbcli register-database
tenterà di eseguire datapatch, che richiede la modalità di scrittura in lettura. Se sono presenti PDB, devono essere anche in modalità di lettura/scrittura per garantire l'esecuzione di patch dati su di essi. - Dalla home oracle sul 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 e la finestra di recupero del backup per il database. Utilizzare i comandi Backupconfig per creare, elencare e visualizzare le configurazioni di backup.
- Copiare la cartella
$ORACLE_HOME/sqlpatch
dal database di origine al database di destinazione. In questo modo, il comandodbcli register-database
potrà eseguire il rollback di eventuali patch in conflitto.Nota
Se si sta eseguendo la migrazione di un database versione 11.2, sono necessari ulteriori passi dopo la registrazione del database. Per ulteriori informazioni, vedere Rollback delle patch in un database della versione 11.2.
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 comandodbcli 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 duplicato, quindi aggiungere eventuali stringhe di connessione pertinenti al file del database duplicato in $ORACLE_HOME/network/admin/tnsnames.ora
.
Rollback delle patch in un database versione 11.2
Per i database della versione 11.2, l'applicazione sqlpatch non è automatica, pertanto tutte le patch provvisorie (precedentemente note come patch singole) applicate al database di origine che non fanno parte della PSU installata devono essere sottoposte a rollback manualmente 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 sovrapposizione sopra la patch PSU), come descritto di seguito.
Suggerimento
Alcune patch provvisorie possono includere file scritti nella directory $ORACLE_HOME/rdbms/admin e nella directory $ORACLE_HOME/sqlpatch. Oracle consiglia di eseguire il rollback di queste patch nel database di origine utilizzando le istruzioni riportate nella funzione di lettura delle patch prima di eseguire la migrazione del database nell'ambiente OCI. Se si desidera assistenza per il rollback di queste patch, contattare il supporto Oracle.- Nel sistema DB, utilizzare il comando
dbcli list-dbhomes
per trovare il numero di patch PSU per la home del database versione 11.2. Nell'output del comando di esempio riportato di seguito, il numero di patch PSU è il secondo numero nella colonna Versione DB:
Output:dbcli list-dbhomes
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 Configured
Il primo numero di patch, 23054319 nell'esempio precedente, si riferisce al componente OCW nella home del database.
- Individuare l'eventuale patch di sovrapposizione utilizzando il comando
lsinventory
. Nell'esempio seguente, la patch numero 24460960 è la patch di sovrapposizione sopra la patch 23054359 PSU.
Output:$ORACLE_HOME/OPatch/opatch lsinventory
... 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 di sovrapposizione 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 eventuali personalizzazioni successive al ripristino.
- Assicurarsi che i file del database siano stati ripristinati in formato OMF.
- Assicurarsi che il database sia elencato nell'output dei comandi del database.
- Verificare i seguenti riferimenti esterni nel database e aggiornarli, se necessario:
- Tabelle esterne: se il database di origine utilizza tabelle esterne, eseguire il backup di tali 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 richieste siano aggiornate nel file
tnsnames.ora
in 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 al momento della registrazione del database, eseguire un backup di test utilizzando i comandi di backup.
- Se il database ripristinato contiene un CDB e un PDB, verificare che le patch siano state applicate a tutti i PDB.