Récupération d'une base de données à partir d'Object Storage à l'aide d'une sauvegarde RMAN
Cet article explique comment récupérer une sauvegarde Recovery Manager (RMAN) stockée dans Object Storage.
Prérequis
Vous aurez besoin des éléments suivants :
- Un nouveau système de base de données dans lequel restaurer la base de données (reportez-vous aux hypothèses ci-dessous). Pour plus d'informations, reportez-vous à Présentation de la création d'un système de base de données.
- Le module de sauvegarde Oracle Database Cloud doit être installé sur le système de base de données. Pour plus d'informations, reportez-vous à Installation du module de sauvegarde sur le système de base de données dans Sauvegarde d'une base de données vers Object Storage à l'aide de RMAN.
Hypothèses
Les procédures ci-dessous supposent les éléments suivants :
- Un système de base de données a été créé pour héberger la base de données restaurée et aucune autre base de données n'existe sur le nouveau système de base de données. Il est possible d'effectuer une restauration vers un système qui contient déjà des bases de données, mais ce cas de figure n'est pas traité dans cette rubrique.
-
La base de données d'origine est perdue et le seul élément restant est la dernière sauvegarde RMAN. Cette procédure suppose que le système de base de données (base de données incluse) n'existe plus.
Remarques :
Toutes les données non incluses dans la sauvegarde la plus récente seront perdues. - Les clés de portefeuille Oracle et/ou de cryptage utilisées par la base de données d'origine au moment de la dernière sauvegarde sont disponibles.
- La sauvegarde RMAN contient une copie du fichier de contrôle et du fichier SPFILE au moment de la sauvegarde la plus récente, ainsi que toutes les sauvegardes des fichiers de données et des journaux d'archivage nécessaires à l'opération de récupération complète de la base de données.
- Un catalogue RMAN ne sera pas utilisé pendant la restauration.
Configuration du stockage sur le système de base de données
- Connectez-vous via SSH au système de base de données.
ssh -i <private_key_path> opc@<db_system_ip_address>
- Connectez-vous en tant qu'utilisateur opc et passez à l'utilisateur root à l'aide de la commande sudo. Utilisez
sudo su -
avec un trait d'union pour appeler le profil de l'utilisateur root, qui définira PATH sur le répertoire dbcli (/opt/oracle/dcs/bin
).login as: opc sudo su -
- Vous pouvez utiliser un répertoire de base de base de données vide existant ou en créer un pour la restauration. Utilisez les commandes applicables pour réaliser cette étape.
Si vous comptez utiliser un répertoire de base de base de données existant :
-
Utilisez les commandes dbhome pour établir la liste des répertoires de base de base de données.
Sortie :dbcli list-dbhomes
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
-
Utilisez les commandes database pour vous assurer que le répertoire de base de base de données n'est associé à aucune base de données.
Si nécessaire, utilisez les commandes dbhome afin de créer un répertoire de base de base de données en vue de la restauration.
-
- Utilisez les commandes dbstorage pour configurer des répertoires en vue du stockage DATA, RECO et REDO. L'exemple suivant crée 10 Go de stockage ACFS pour la base de données rectest.
dbcli create-dbstorage --dbname rectest --dataSize 10 --dbstorage ACFS
Remarques :
Lors de la restauration d'une base de données version 11.2, le stockage ACFS doit être indiqué.
Exécution de la restauration et de la récupération de la base de données
- Connectez-vous via SSH au système de base de données, connectez-vous en tant qu'utilisateur opc, puis passez à l'utilisateur oracle.
sudo su - oracle
- Créez une entrée dans
/etc/oratab
pour la base de données. Utilisez le SID de la base de données d'origine.db1:/u01/app/oracle/product/12.1.0.2/dbhome_1:N
- Définissez les variables d'environnement
ORACLE_HOME
etORACLE_SID
à l'aide de l'utilitaire oraenv.. oraenv
- Obtenez l'ID de la base de données d'origine. Vous pouvez l'obtenir à partir du nom de fichier de la sauvegarde automatique
controlfile
sur le support de sauvegarde. Le nom de fichier comporte une chaîne qui contient l'ID de base de données. Le format standard de la chaîne estc-DDDDDDDDDDDD-YYYYMMDD-NN
oùDDDDDDDDDDDD
est l'ID de base de données,YYYYMMDD
est la date de création de la sauvegarde etNN
est un numéro de séquence permettant de rendre le nom de fichier unique. L'ID de base de données dans les exemples suivants est 1508405000. Votre ID de base de données sera différent.Utilisez la syntaxe cURL suivante pour effectuer une requête générale d'Object Storage. Les paramètres en rouge sont les mêmes que ceux que vous avez indiqués lors de l'installation du module de sauvegarde, comme décrit dans Installation du module de sauvegarde sur le système de base de données dans Sauvegarde d'une base de données vers Object Storage à l'aide de RMAN.
curl -u '<user_ID>.com:<auth_token>' -v https://swiftobjectstorage.<region_name>.oraclecloud.com/v1/<object_storage_namespace>
Pour rechercher le nom de région, reportez-vous à Régions et domaines de disponibilité.
Exemple :
curl -u 'djones@mycompany.com:1cnk!d0++ptETd&C;tHR' -v https://swiftobjectstorage.<region_name>.oraclecloud.com/v1/myobjectstoragenamespace
Pour obtenir l'ID de base de données à partir du nom de fichier de contrôle, utilisez la syntaxe suivante :
curl -u '<user_id>.com:<auth_token>' -v https://swiftobjectstorage.<region_name>.oraclecloud.com/v1/<object_storage_namespace>/<bucket_name>?prefix=sbt_catalog/c-
Exemple :
curl -u 'djones@mycompany.com:1cnk!d0++ptETd&C;tHR' -v https://swiftobjectstorage.<region_name>.oraclecloud.com/v1/myobjectstoragenamespace/dbbackups/?prefix=sbt_catalog/c-
Dans l'exemple de sortie ci-dessous, l'ID de base de données est 1508405000.
{ "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" }
- Exécutez RMAN et connectez-vous à la base de données cible. Il n'est pas nécessaire de créer un fichier
pfile
ouspfile
ni d'utiliser une sauvegardecontrolfile
. Ceux-ci seront restaurés au cours des étapes suivantes. L'état de la base de données cible est(not started)
. Ce comportement est normal et est attendu à ce stade.
Sortie :rman target /
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)
- Définissez l'ID de base de données à l'aide de la valeur obtenue ci-dessus.
set dbid 1508405000;
- Exécutez la commande suivante . Si le fichier de paramètres du serveur n'est pas disponible, RMAN tente de démarrer l'instance avec un fichier de paramètres de serveur dummy. Les erreurs ORA-01078 et LRM-00109 sont normales et peuvent être ignorées.
STARTUP NOMOUNT
startup 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
- Restaurez le fichier de paramètres du serveur à partir de la sauvegarde automatique.
SBT_LIBRARY est la même bibliothèque que celle spécifiée avec le paramètre
-libDir
lors de l'installation du module de sauvegarde, par exemple/home/oracle/lib/
.OPC_PFILE est le même fichier que celui spécifié avec le paramètre
-configfile
lors de l'installation du module de sauvegarde, par exemple/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; }
- Créez le répertoire pour audit_file_dest. La valeur par défaut est
/u01/app/oracle/admin/$ORACLE_SID/adump
. Pour visualiser le paramètre utilisé par la base de données d'origine, vous pouvez rechercher la chaîneaudit_file_dest
dans le fichier SPFILE.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
- Si le suivi des modifications de blocs a été activé sur la base de données d'origine, créez le répertoire pour le fichier de suivi des modifications de blocs. Il s'agit d'un répertoire sous
db_create_file_dest
. Recherchez le nom du répertoire dansspfile
.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
- Redémarrez l'instance avec le fichier de paramètres du serveur restauré.
STARTUP FORCE NOMOUNT;
- Restaurez le fichier de contrôle à partir de la sauvegarde automatique RMAN et montez la base de données.
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; }
- Restaurez et récupérez la base de données.
RESTORE DATABASE; RECOVER DATABASE;
- RMAN effectue une récupération à l'aide des fichiers de journalisation archivés jusqu'à ce qu'il ne trouve plus d'éléments. Une erreur semblable à celle ci-dessous peut se produire lorsque RMAN a appliqué le dernier fichier de journalisation archivé dans la sauvegarde et qu'il ne trouve plus de journaux.
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
- Ouvrez la base de données avec le paramètre RESETLOGS.
ALTER DATABASE OPEN RESETLOGS;
La récupération est terminée. La base de données dispose de toutes les transactions validées contenues dans le dernier fichier de journalisation archivé sauvegardé.