web-dev-qa-db-fra.com

Restaurer les données d'une vieille sauvegarde Rman - ORA-01152

J'ai du mal à restaurer des données d'une vieille sauvegarde.

La machine d'origine a été perdue et ma mission est de restaurer les données. Ce n'est pas une machine critique, mais certaines données sont toujours utiles.

  • Oracle sur le serveur d'origine: 11.2.0.2
  • Oracle sur le serveur de destination: 11.2.0.4

Le serveur est Redhat- 5.6 Original. 6.x destination.

Sur la nouvelle machine, avec Oracle installé, j'ai fait:

export Oracle_SID=oldsid
rman TARGET /

Et à Rman, je mets le SID comme l'ancienne Databsaee:

SET DBID 3348161342;

Puis restauré Controlfile et SPFILE à partir de la sauvegarde. Note importante: Ces fichiers sont plus récents que la sauvegarde.

RESTORE CONTROLFILE from '/mount/restorepoint/3348161342_41qtltn4_1_1_20160111.bck
restore spfile from '/mount/restorepoint/sp_OLDDB-3348161342_42qtltn6_1_1_20160111.bck';

Base de données dans le montage avec:

ALTER DATABASE MOUNT;

Et spécifié lorsque les fichiers de sauvegarde sont:

catalog start with '/mount/restorepoint/rmanfiles';

Parce que sur le dB d'origine il y a aussi TDE.

  • Créé un répertoire pour mettre le portefeuille
  • Créé des fichiers sqlnet.ora avec des indications sur l'emplacement du portefeuille

Système modifié avec:

alter system set encryption wallet open identified by "thetdepassword";

Et puis à nouveau à Rman:

alter database mount;
RESTORE DATABSE;

Jusqu'à présent, tout va bien. Mais quand je trai d'ouvrir la base de données:

ORA-01589: must use RESETLOGS or NORESETLOGS option for database open

Bien, mon mauvais. Ensuite, j'utilise: ((( Alter la base de données ouverte resetlogs; et j'ai l'erreur:

ORA-01152: file 4 was not restored from a sufficiently old backup
ORA-01110: data file 4: '/ltm/data/Oracle/dati/olddb/users01.dbf'

Qu'est-ce que je rate?
[.____] Dans l'original, les options de script de sauvegarde doivent être:

BACKUP AS COMPRESSED BACKUPSET INCREMENTAL LEVEL 0 DATABASE

Comment puis-je lire à nouveau cette donnée?

Je viens du monde SqlServer et PostgreSQL, alors je manque probablement quelque chose ...

2
user_0

Permet de voir les informations fournies par OERR Utility.

ORA-01152: Le fichier 1 n'a pas été restauré d'une sauvegarde suffisamment ancienne

Cause: Une session de récupération incomplète a été lancée, mais un nombre insuffisant de journaux ont été appliqués pour rendre la base de données cohérente. Ce fichier est toujours à l'avenir du dernier journal appliqué. La cause la plus probable de cette erreur oublie de restaurer le fichier d'une sauvegarde avant de récupérer incomplète.

Action: Appliquez plus de journaux jusqu'à ce que la base de données soit cohérente ou rétablir le fichier de base de données à partir d'une sauvegarde plus ancienne et une récupération de répétition

Selon votre message, vous n'avez pas récupéré la base de données. Vous pouvez essayer les commandes suivantes pour récupérer votre base de données.

[

Depuis que vous êtes nouveau à Oracle, vous pouvez trouver le lien suivant utile pour restaurer la sauvegarde ancienne à un nouvel hôte.
[.____] Restaurer une base de données sur un nouvel hôte

3
JSapkota

Vous devez récupérer la base de données. Je suppose que vous avez restauré une sauvegarde en ligne que vous (ou une sauvegarde hors ligne incompatible, mais nous ignorerons cette possibilité). La prochaine étape consiste à récupérer la base de données. Donc dans votre rman session exécuter un

recover database;

ou un

recover database until ....;

où '....' est un point à temps (ou SCN ou quelque chose de similaire). Si vous utilisez un point à temps, il doit être après l'heure de fin de la sauvegarde du fichier de données. Sinon, les fichiers de données resteront incompatibles.

Le processus de restauration appliquera des sauvegardes de niveau 1 de niveau 1 (s'ils existent) et des archives des journaux dans votre base de données.

Une fois que vous avez rétabli la base de données, vous trouverez peut-être des problèmes suivants car vous restaurez une base de données 11.2.0.2 à un environnement 11.2.0.4. Par conséquent, vous devez combiner votre restauration avec une mise à niveau de 11.2.0.4.

L'instruction détaillée pour une mise à niveau vers 11.2.0.4 peut être trouvée dans le paquet logiciel 11.2.0.4. Voici un article de blob court que j'ai googlé ( rkorclappsdbastuff ). À partir de là, nous voyons qu'il y a quelques étapes préventives (étape 2 à 5) que vous devez faire sur la base de données 11.2.0.2, vous devez donc les ignorer: vous ne pouvez pas exécuter le script de preppgrade UTLU112I.SQL et implémenter ses recommandations, vous ne pouvez pas non plus Calculez les statistiques du dictionnaire avant la mise à niveau et vous ne pouvez pas exécuter utlrp.sql pour compiler les objets non valides. Vous devez adapter le SPFILE restauré à 11.2.0.4: Créer un Pfile, modifier/ajouter/supprimer des paramètres, si nécessaire, un a recréé un SPFILE à nouveau du SPFILE. Vous n'êtes pas de base de données pour exécuter le create pfile et create spfile.

Vous pouvez maintenant ouvrir la base de données, mais vous devez l'ouvrir en mode de mise à niveau car il s'agit d'une base de données 11.2.0.2 qui doit être mise à niveau sur 11.2.0.4 et vous l'ouvrez avec des journaux de réinitialisation, car il s'agit d'une base de données récupérée sans logfiles. Donc la bonne commande (voir la référence de la langue d'oracle SQL ) est

REM step 12 of rkorclappsdbastuff
startup mount
alter database open resetlogs upgrade ;
@catupgrd.sql

Maintenant, vous pouvez procéder aux étapes restantes.

2
miracle173