Récupérer une base de données à partir du stockage d'objets à l'aide d'une sauvegarde RMAN
Cet article explique comment récupérer une sauvegarde Recovery Manager (RMAN) stockée dans le stockage d'objets.
Conditions requises
Vous avez besoin des éléments suivants :
- Un nouveau système de base de données dans lequel restaurer la base de données (voir les hypothèses ci-dessous). Pour plus d'informations, voir Aperçu 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, voir Installation du module de sauvegarde sur le système de base de données dans Sauvegarder une base de données dans le stockage d'objets à l'aide de RMAN.
Hypothèses
Les procédures ci-dessous supposent ce qui suit :
- Un nouveau système de base de données a été créé pour héberger la base de données restaurée. Aucune autre base de données n'existe dans le nouveau système. Il est possible d'effectuer la restauration vers un système de base de données dans lequel des bases de données existent, mais cela n'est pas abordé dans cette rubrique.
-
La base de données initiale est perdue; tout ce qui reste est la dernière sauvegarde RMAN. La procédure suppose que le système de base de données (base de données comprise) n'existe plus.
Note :
Les données non incluses dans la sauvegarde la plus récente seront perdues. - Les clés du portefeuille Oracle ou de chiffrement utilisées par la base de données initiale au moment de la dernière sauvegarde sont disponibles.
- La sauvegarde RMAN contient une copie du fichier de contrôle et du fichier spfile datant de la sauvegarde la plus récente, ainsi que les sauvegardes de tous les fichiers de données et d'archives nécessaires pour effectuer une récupération complète de la base de données.
- Aucun catalogue RMAN n'est utilisé pendant la restauration.
Configurer le stockage sur le système de base de données
- Utilisez SSH pour accéder au système de base de données.
ssh -i <private_key_path> opc@<db_system_ip_address>
- Connectez-vous en tant qu'opc, puis accédez à la racine avec les privilèges de superviseur. Utilisez
sudo su -
avec un trait d'union pour appeler le profil de l'utilisateur racine, ce qui règle la variable PATH au répertoire dbcli (/opt/oracle/dcs/bin
).login as: opc sudo su -
- Vous pouvez utiliser un répertoire de base Oracle vide existant ou en créer un pour la restauration. Utilisez les commandes appropriées pour effectuer cette étape.
Si vous utilisez un répertoire de base de base de données existant :
-
Utilisez les commandes dbhome pour lister les 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 de base de données 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 pour créer un répertoire de base de base de données aux fins de restauration.
-
- Utilisez les commandes dbstorage pour configurer des répertoires pour le 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
Note :
Lors de la restauration d'une base de données version 11.2, le stockage ACFS doit être spécifié.
Effectuer la restauration et la récupération de la base de données
- Accédez par SSH au système de base de données, connectez-vous en tant qu'opc et passez à l'utilisateur oracle.
sudo su - oracle
- Créez une entrée dans
/etc/oratab
pour la base de données. Utilisez le même identificateur du système que la base de données initiale.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 initiale. Celui-ci peut être obtenu à partir du nom de fichier de la sauvegarde automatique de
controlfile
sur le support de sauvegarde. Le nom du fichier contient une chaîne qui comporte l'ID BD. Le format type de la chaîne estc-DDDDDDDDDDDD-YYYYMMDD-NN
, oùDDDDDDDDDDDD
est l'ID BD,YYYYMMDD
est la date de création de la sauvegarde etNN
est un numéro de séquence qui rend le nom de fichier unique. Dans les exemples suivants, l'ID BD est 1508405000. Le vôtre sera différent.Utilisez la syntaxe curl suivante pour lancer une interrogation générale sur le stockage d'objets. Les paramètres en rouge sont ceux que vous avez spécifié 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 Sauvegarder une base de données dans le stockage d'objets à 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 la région, voir Régions et domaines de disponibilité.
Par exemple :
curl -u 'djones@mycompany.com:1cnk!d0++ptETd&C;tHR' -v https://swiftobjectstorage.<region_name>.oraclecloud.com/v1/myobjectstoragenamespace
Pour obtenir l'ID BD à partir du nom du 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-
Par 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, 1508405000 est l'ID BD.
{ "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 un fichiercontrolfile
de sauvegarde. Ces fichiers sont restaurés lors des étapes suivantes. Notez que l'état de la base de données cible est(not started)
. C'est normal à 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 BD à 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 factice. 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 bibliothèque 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 fichier 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
. Vous pouvez voir le paramètre utilisé par la base de données initiale en recherchant 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 bloc a été activé dans la base de données initiale, créez le répertoire pour le fichier de suivi. Ce répertoire se trouvera sous
db_create_file_dest
. Recherchez le nom du répertoire dans le fichierspfile
.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ètre de 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 poursuit la récupération à l'aide des fichiers de journalisation archivés jusqu'à ce qu'il n'en trouve plus. Il est normal qu'une erreur similaire à celle ci-dessous se produise après que RMAN a appliqué le dernier fichier de journalisation archivé dans la sauvegarde et qu'il n'en trouve plus.
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 à l'aide de resetlog.
ALTER DATABASE OPEN RESETLOGS;
La récupération est terminée. La base de données comporte toutes les transactions validées jusqu'au dernier fichier de journalisation archivé sauvegardé.