web-dev-qa-db-fra.com

Restauration Oracle 11g Rman avec un autre nom de base de données à partir de la sauvegarde dans la plate-forme Windows

Quelqu'un peut-il partager la bonne méthode de restauration RMAN sur un autre serveur avec un autre nom de base de données dans Oracle 11g (plate-forme Windows). Je suis totalement confus avec toutes les méthodes de restauration RMAN que j'ai trouvées. J'ai pris la sauvegarde en utilisant la commande

BACKUP AS COMPRESSED BACKUPSET DATABASE PLUS ARCHIVELOG;

Veuillez confirmer s'il est nécessaire d'effectuer la sauvegarde du fichier de contrôle séparément.

Toute aide serait appréciée.

2

Par défaut, le fichier de contrôle est sauvegardé avec vos données. Ceci est activé ou désactivé par cette commande:

CONFIGURE CONTROLFILE AUTOBACKUP ON;

Mais par habitude, je suis généralement mes sauvegardes de données avec:

backup current controlfile ;
backup spfile ;

J'ai eu beaucoup de mal à utiliser une base de données en double sous Windows. En règle générale, je rencontre des échecs d'autorisations NTS pour la connexion cible, ce qui empêche la création de la base de données auxiliaire. Mes efforts pour résoudre ces erreurs ... eh bien, j'ai abandonné.

Cela m'a conduit à rédiger un document "playbook" avec toutes les différentes commandes OS et RMAN nécessaires pour restaurer manuellement une base de données sur un nouveau serveur avec un nouveau nom d'instance. Cela me permet également de modifier les choses sur le nouvel hôte avec plus de contrôle.

Ces scripts ont été testés dans mon environnement Windows Oracle 12.1, mais peuvent ne pas être idéaux pour le vôtre. Je sais que RMAN est plus disposé à exécuter des instructions SQL en 12c qu'en 11g, par exemple. J'espère qu'ils vous aideront.

Ces scripts ont été créés après plusieurs essais et erreurs, basés sur ce lien pour la restauration et cela pour modification du SID . Les étapes sont les suivantes:

Assurez-vous que tout est sauvegardé.

J'aime obtenir une nouvelle copie du fichier de contrôle et du fichier de contrôle, car cela facilite la tâche plus tard.

backup device type disk incremental level = 0 section size 1g database plus archivelog;
backup current controlfile tag='Controlfile Level 0';
backup spfile tag='SPFile Level 0';

Si vos anciens et nouveaux serveurs n'utilisent pas les mêmes chemins d'accès aux fichiers pour les données Oracle, exécutez ceci:

select '  Set Newname For Datafile ' || file# || ' to ''' || name || ''';' from v$datafile;
select '  Alter Database Rename File ''' || Member || ''' To ''' || Member || ''';' from v$logfile;

prenez la sortie et changez les chemins/noms de fichiers selon vos besoins pour correspondre à votre nouvel environnement.

Copiez les sauvegardes de l'ancien vers le nouvel hôte

Facultatif mais j'aime que les fichiers de sauvegarde RMAN soient sur la boîte sur laquelle je restaure. Connectez-vous donc au nouveau serveur et copiez les sauvegardes complètes, les journaux d'archivage et les dossiers de sauvegarde automatique à partir de la zone de récupération rapide de l'ancien serveur. Notez que vous devez uniquement revenir à la sauvegarde complète la plus récente, pas besoin d'obtenir des semaines de fichiers.

Mettre en scène la nouvelle instance

Sur le nouvel hôte, créez votre dossier de données, votre dossier de récupération rapide et votre dossier admin. Assurez-vous qu'Oracle est installé et que les comptes d'utilisateurs Oracle ont le contrôle total de ces dossiers.

Créez une instance vide, avec le même nom que l'ancien:

oradim -new -sid <<old sid name>>

Set Oracle_SID=<<old sid name>>
RMAN target /

Utilisez RMAN pour récupérer le SPFILE et les fichiers de contrôle. dans RMAN, définissez le DBID pour qu'il corresponde à l'ID de la base de données de l'ancienne instance et les noms de fichier et les chemins d'accès pour qu'ils correspondent à votre environnement:

SET DBID=1234567;
startup nomount;
restore spfile to 'C:\Oracle\Product\12.1.0\dbhome_1\database\init<<Old sid>>/ora' from 'f:\fast_recovery_area\<<old sid>>\BackupSet\2017_07_17\O1_MF_NNSNF_SPFILE_LEVEL_0_DOSTOJT8_.BKP';
create pfile='c:\Oracle\product\12.1.0\dbhome_1\Database\pfile<<old sid>>.ora' from spfile='c:\Oracle\product\12.1.0\dbhome_1\Database\Init<<old sid>>.ora';
shutdown immediate;

Ne fermez pas encore RMAN. Modifiez le fichier pfile de l'étape précédente dans NotePad ou NotePad ++. Ajustez les chemins et les besoins en mémoire selon les besoins pour refléter le nouvel environnement. Ne modifiez pas le nom de la base de données, mais modifiez les chemins d'accès au dossier avec le nouveau nom d'instance.

Revenez à votre session RMAN et restaurez les fichiers de contrôle. Encore une fois, corrigez les chemins si nécessaire.

startup nomount pfile = 'c:\Oracle\product\12.1.0\dbhome_1\Database\pfile<<old sid>>.ora’;
restore controlfile from 'F:\fast_recovery\<<old sid>>\BACKUPSET\2017_07_05\O1_MF_NCNNF_CONTROLFILE_LEVEL_0_DOSTO715_.BKP';
Alter Database Mount;

Restaurer vos fichiers de base de données

Toujours dans RMAN, inventoriez les fichiers de sauvegarde que vous avez copiés.

 catalog start with 'f:\fast_recovery_Area\<<old sid>>';

Déplacez maintenant vos fichiers de journalisation vers leurs nouveaux dossiers dans RMAN. Vous avez généré ces scripts plus tôt.

Alter Database Rename File 'O:\ORADATA\<<old sid>>\REDO03.LOG' To 'f:\ORADATA\<<NEW sid>>\REDO03.LOG';
Alter Database Rename File 'O:\ORADATA\<<old sid>>\REDO02.LOG' To 'f:\ORADATA\<<new sid>>\REDO02.LOG';
Alter Database Rename File 'O:\ORADATA\<<old sid>>\REDO01.LOG' To 'f:\ORADATA\<<NEW Sid>>\REDO01.LOG';

Et maintenant, nous faisons la restauration et la récupération, substituons les scripts NewName créés précédemment.

run { 
    Set Newname For Datafile 1 to 'f:\ORADATA\<<new sid>>\SYSTEM01.DBF';
    Set Newname For Datafile 3 to 'f:\ORADATA\<<new sid>>\SYSAUX01.DBF';
    Set Newname For Datafile 5 to 'f:\ORADATA\<<new sid>>\UNDOTBS01.DBF';
    Set Newname For Datafile 6 to 'f:\ORADATA\<<new sid>>\USERS01.DBF';

    RESTORE DATABASE;
    SWITCH DATAFILE ALL;
    RECOVER DATABASE;
}

Une fois que RMAN a terminé la restauration et la récupération de base, créez un nouveau SPFile.

create spfile from pfile = 'c:\Oracle\product\12.1.0\dbhome_1\Database\pfile<<OLD sid>>.ora’;
alter database open resetlogs;

Oracle ne sauvegarde ni ne restaure l'espace de table TEMP. Cela empêchera la récupération complète de réussir. Créez un nouvel espace de table temporaire, supprimez l'ancien, puis reconstruisez l'original.

CREATE TEMPORARY TABLESPACE TEMP_NEW TEMPFILE 'f:\OraData\<<NEW Sid>>\TempNew1.dbf' SIZE 5m autoextend on next 10m maxsize unlimited;
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP_NEW;
DROP TABLESPACE TEMP including contents;
CREATE TEMPORARY TABLESPACE TEMP TEMPFILE 'f:\OraData\<<NEW Sid>>\Temp01.dbf' SIZE 50m autoextend on next 10m maxsize unlimited;
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP;
DROP TABLESPACE TEMP_NEW including contents and datafiles;

Changer le nom de l'instance

À ce stade, Oracle doit exécuter une copie entièrement restaurée de votre base de données. Mais tu veux un nouveau nom. Dans RMAN:

Shutdown immediate;
Startup mount;

Ne fermez pas RMAN, mais à partir d'une nouvelle fenêtre CMD exécutée en tant qu'administrateur:

 set Oracle_SID=<<old sid>>
 NID target=/ DBNAME=<<new sid>>

Notez le DBID que cela vous donne, car vous en aurez besoin plus tard pour la récupération après sinistre (notez que c'était notre première commande RMAN en haut).

De retour dans la fenêtre RMAN:

Shutdown Immediate;
Startup Mount;
Alter System Set DB_NAME=<<New sid>> scope=SPFILE;
Shutdown Immediate;
exit;

Démarrez votre nouvelle base de données!

Dans l'autre fenêtre CMD, créez un nouveau fichier de mot de passe et recréez les services Windows. Remarque, cet utilitaire n'utilise pas de guillemets autour du chemin, contrairement à la plupart des cas dans Oracle.

orapwd file=c:\Oracle\product\12.1.0\dbhome_1\Database\pwd<<new SID>>.ora password=<SYS pwd> entries=25
oradim -delete -sid <<old sid>>
oradim -new -sid <<new sid>> -intpwd <SYS pwd> -startmode a 

Démarrez la base de données.

Set Oracle_SID=<<new sid>>
lsnrctl reload
sqlplus / as sysdba
Startup Mount;
Alter Database Open ResetLogs;

Sauvegardez votre nouvelle base de données

À ce stade, votre base de données n'a aucune sauvegarde. Effectuez une sauvegarde RMAN avant de travailler sur cette base de données.

4
CaM