Recupera un database dallo storage degli oggetti mediante backup RMAN
In questo articolo viene descritto come recuperare un backup di Recovery Manager (RMAN) memorizzato nello storage degli oggetti.
Prerequisiti
Avrai bisogno di quanto segue:
- Un nuovo sistema DB in cui ripristinare il database (vedere le ipotesi riportate di seguito). Per ulteriori informazioni, vedere Panoramica sulla creazione di un sistema DB.
- Oracle Database Cloud Backup Module deve essere installato nel sistema DB. Per ulteriori informazioni, vedere Installazione del modulo di backup sul sistema DB in Backup di un database nello storage degli oggetti mediante RMAN.
Supposizioni
Le procedure riportate di seguito presuppongono quanto segue:
- È stato creato un nuovo sistema DB per ospitare il database ripristinato e non esistono altri database sul nuovo sistema DB. È possibile eseguire il ripristino in un sistema DB che dispone di database esistenti, ma questo non rientra nell'ambito di questo argomento.
-
Il database originale viene perso e tutto ciò che rimane è il backup RMAN più recente. La procedura presuppone che il sistema DB (incluso il database) non esista più.
Nota: tutti i dati non inclusi nel backup più recente andranno persi.
- Sono disponibili le chiavi di cifratura e/o Oracle Wallet utilizzate dal database originale al momento dell'ultimo backup.
- Il backup RMAN contiene una copia del control file e dello spfile del backup più recente, nonché tutti i backup dei file di dati e dei log di archivio necessari per eseguire un recupero completo del database.
- Un catalogo RMAN non verrà utilizzato durante il ripristino.
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 - -
È possibile utilizzare una home database vuota esistente o crearne una nuova per il ripristino. Utilizzare i comandi applicabili per completare questo passaggio.
Se si utilizzerà una home del database esistente:
-
Utilizzare i comandi Dbhome per elencare le home del database.
dbcli list-dbhomesOutput:
ID Name DB Version Home Location ---------------------------------------- -------------------- ---------- --------------------------------------------- 2e743050-b41d-4283-988f-f33d7b082bda OraDB12102_home1 12.1.0.2 /u01/app/oracle/product/12.1.0.2/dbhome_1 -
Utilizzare i comandi del database per assicurarsi che la home del database non sia associata ad alcun database.
Se necessario, utilizzare i comandi Dbhome per creare una home del database per il ripristino.
-
-
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 di rettest.
dbcli create-dbstorage --dbname rectest --dataSize 10 --dbstorage ACFS
Nota: quando si ripristina un database versione 11.2, è necessario specificare lo storage ACFS.
Eseguire il ripristino e il recupero del database
-
SSH al sistema DB, eseguire il login come opc, quindi diventare l'utente oracle.
sudo su - oracle -
Creare una voce in
/etc/oratabper il database. Utilizzare lo stesso SID del database originale.db1:/u01/app/oracle/product/12.1.0.2/dbhome_1:N -
Impostare le variabili di ambiente
ORACLE_HOMEeORACLE_SIDutilizzando la utility oraenv.. oraenv -
Ottenere il DBID del database originale. Ciò può essere ottenuto dal nome file del backup automatico
controlfilesul supporto di backup. Il nome del file includerà una stringa contenente il DBID. Il formato tipico della stringa èc-DDDDDDDDDDDD-YYYYMMDD-NN, doveDDDDDDDDDDDDè il DBID,YYYYMMDDè la data di creazione del backup eNNè un numero di sequenza per rendere univoco il nome del file. Il DBID negli esempi seguenti è 1508405000. Il DBID sarà diverso.Usare la sintassi curl seguente per eseguire una query generale dello storage degli oggetti. I parametri in rosso corrispondono ai parametri specificati durante l'installazione del modulo di backup, come descritto in Installazione del modulo di backup sul sistema DB in Backup di un database nello storage degli oggetti mediante RMAN.
curl -u '<user_ID>.com:<auth_token>' -v https://swiftobjectstorage.<region_name>.oraclecloud.com/v1/<object_storage_namespace>Per cercare il nome dell'area, vedere Aree e domini di disponibilità.
Ad esempio:
curl -u 'djones@mycompany.com:1cnk!d0++ptETd&C;tHR' -v https://swiftobjectstorage.<region_name>.oraclecloud.com/v1/myobjectstoragenamespacePer ottenere il DBID dal nome del control file, utilizzare la sintassi seguente:
curl -u '<user_id>.com:<auth_token>' -v https://swiftobjectstorage.<region_name>.oraclecloud.com/v1/<object_storage_namespace>/<bucket_name>?prefix=sbt_catalog/c-Ad esempio:
curl -u 'djones@mycompany.com:1cnk!d0++ptETd&C;tHR' -v https://swiftobjectstorage.<region_name>.oraclecloud.com/v1/myobjectstoragenamespace/dbbackups/?prefix=sbt_catalog/c-Nell'output di esempio riportato di seguito, 1508405000 è il DBID.
{ "bytes": 1732, "content_type": "binary/octet-stream", "hash": "f1b61f08892734ed7af4f1ddaabae317", "last_modified": "2016-08-11T20:28:34.438000", "name": "sbt_catalog/c-1508405000-20160811-00/metadata.xml" } -
Esegui RMAN e connettiti al database di destinazione. Non è necessario creare un
pfileospfileo utilizzare un backupcontrolfile. Questi verranno ripristinati nei passaggi seguenti. Si noti che il database di destinazione è(not started). Questo è normale e previsto a questo punto.rman target /Output:
Recovery Manager: Release 12.1.0.2.0 - Production on Wed Jun 22 18:36:40 2016 Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved. connected to target database (not started) -
Impostare il DBID utilizzando il valore ottenuto sopra.
set dbid 1508405000; -
Eseguire il comando riportato di seguito. Se il file dei parametri del server non è disponibile, RMAN tenta di avviare l'istanza con un file dei parametri del server fittizio. Gli errori ORA-01078 e LRM-00109 sono normali e possono essere ignorati.
STARTUP NOMOUNTstartup failed: ORA-01078: failure in processing system parameters LRM-00109: could not open parameter file '/u01/app/oracle/product/12.1.0.2/dbhome_1/dbs/initdb1.ora' starting Oracle instance without parameter file for retrieval of spfile Oracle instance started Total System Global Area 2147483648 bytes Fixed Size 2944952 bytes Variable Size 847249480 bytes Database Buffers 1254096896 bytes Redo Buffers 43192320 bytes -
Ripristinare il file dei parametri del server dal backup automatico.
SBT_LIBRARY è la stessa libreria specificata con il parametro
-libDirdurante l'installazione del modulo di backup, ad esempio/home/oracle/lib/.OPC_PFILE è lo stesso file specificato con il parametro
-configfiledurante l'installazione del modulo di backup, ad esempio/home/oracle/config.set controlfile autobackup format for device type sbt to '%F'; run { allocate channel c1 device type sbt PARMS 'SBT_LIBRARY=/home/oracle/lib/libopc.so, SBT_PARMS=(OPC_PFILE=/home/oracle/config)'; restore spfile from autobackup; } -
Creare la directory per audit_file_dest. L'impostazione predefinita è
/u01/app/oracle/admin/$ORACLE_SID/adump. È possibile vedere l'impostazione utilizzata dal database originale cercando nello spfile la stringa,audit_file_dest.strings ${ORACLE_HOME}/dbs/spfile${ORACLE_SID}.ora | grep audit_file_dest *.audit_file_dest='/u01/app/oracle/admin/db1/adump' mkdir -p /u01/app/oracle/admin/db1/adump -
Se il tracciamento delle modifiche ai blocchi è stato abilitato nel database originale, creare la directory per il file di tracciamento delle modifiche ai blocchi. Questa sarà una directory in
db_create_file_dest. Cercare nel filespfileil nome della directory.strings ${ORACLE_HOME}/dbs/spfile${ORACLE_SID}.ora | grep db_create_file_dest *.db_create_file_dest='/u02/app/oracle/oradata/db1' mkdir -p /u02/app/oracle/oradata/db1/<$ORA_UNQNAME if available or database name>/changetracking -
Riavviare l'istanza con il file dei parametri del server ripristinato.
STARTUP FORCE NOMOUNT; -
Ripristinare il control file dal backup automatico RMAN ed eseguire il MOUNT del database.
set controlfile autobackup format for device type sbt to '%F'; run { allocate channel c1 device type sbt PARMS 'SBT_LIBRARY=/home/oracle/lib/libopc.so, SBT_PARMS=(OPC_PFILE=/home/oracle/config)'; restore controlfile from autobackup; alter database mount; } -
Ripristinare e recuperare il database.
RESTORE DATABASE; RECOVER DATABASE; -
RMAN recupererà utilizzando i redo log archiviati fino a quando non sarà più possibile trovarli. È normale che si verifichi un errore simile a quello riportato di seguito quando RMAN ha applicato l'ultimo redo log archiviato nel backup e non riesce a trovare altri log.
unable to find archived log archived log thread=1 sequence=29 RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of recover command at 06/28/2016 00:57:35 RMAN-06054: media recovery requesting unknown archived log for thread 1 with sequence 29 and starting SCN of 2349563 -
Aprire il database con l'opzione resetlogs.
ALTER DATABASE OPEN RESETLOGS;
Il recupero è completo. Il database avrà tutte le transazioni di cui è stato eseguito il commit a partire dall'ultimo redo log archiviato di cui è stato eseguito il backup.