web-dev-qa-db-fra.com

Comment changer le chemin du fichier temporaire, refaire le fichier journal lors de la restauration d'une sauvegarde rman sur une autre machine?

J'essaie de migrer ma base de données (11.2.0.4) A vers une autre machine en utilisant la sauvegarde rman. À l'heure actuelle, dans la machine source, le fichier journal de rétablissement, le fichier temporaire est stocké sous le répertoire foo (/foo). Dans la machine cible, je voudrais stocker ces fichiers sous la barre de répertoire (/bar). Dans la pratique passée, ce que j'ai fait est de créer foo pour ces fichiers et de déplacer ces fichiers vers la barre manuellement une fois la récupération terminée. RMAN est un outil si puissant que je pense qu'il doit y avoir un moyen simple de satisfaire mon besoin. Jusqu'à présent, en recherchant sur Google, j'ai obtenu une commande rman utile pour le fichier temporaire:

set newname for tempfile <fileno> to '<path>'

Il semble qu'il n'y ait pas de commande similaire pour refaire le fichier. Avant d'utiliser cette commande pour effectuer une récupération, j'ai plusieurs questions à poser:

  1. Lorsque nous effectuons une sauvegarde complète, la sauvegarde ne va pas avec l'espace de table temporaire et les fichiers de rétablissement, mais dans la migration précédente que j'ai connue, j'ai constaté que lorsque j'ouvrais (alter database open resetlogs) la base de données une fois la récupération terminée, les fichiers de journalisation et les fichiers temporaires existent. Est-ce que rman le créera automatiquement pour la base de données? Je ne trouve pas les documents Oracle fiables pour ce sujet.
  2. Pour changer le chemin de redo est tellement ennuyeux, je voudrais terminer cette tâche dans les scripts rman, y a-t-il une commande disponible pour renommer le fichier journal de redo dans les scripts rman?
5
user4535727

Le plus simple consiste à utiliser Oracle Managed Files pour cela. Oracle placera simplement - et nommera - les fichiers aux emplacements configurés par le

db_create_file_dest = '/on/some/disk'
db_create_online_log_dest_1 = '/on/other/disk'
...
db_create_online_log_dest_5 = '/on/extra_other/disk'

paramètres. Selon vos besoins de disponibilité, vous utilisez plus ou moins de paramètres db_create_online_log_dest_N. Si vous êtes sérieux au sujet de la disponibilité et des performances, vous disposez de disques et de contrôleurs distincts pour les différents emplacements.

Bon documentation pour commencer

1
ik_zelf

Vous pouvez utiliser un fichier pf et définir les éléments suivants dans le fichier pfile, ou vous pouvez utiliser un fichier spf et effectuer un démarrage nomount pour définir les variables suivantes. Vous pouvez avoir autant de répertoires que vous le souhaitez, le modèle sera toujours: '', '', '', '', '', '' ...

alter system set db_file_name_convert='/foo/','/bar/' scope=spfile;
alter system set log_file_name_convert='/foo/','/bar/' scope=spfile;

Vous pouvez également spécifier le rétablissement sur la commande clone/restore.

DUPLICATE DATABASE TO mytest BACKUP LOCATION '/mybackup/mytest' 
LOGFILE 
       GROUP 1 ('/mybackup/mytest/redo01a.log',  '/mybackup/mytest/redo01b.log') SIZE 256M REUSE,
       GROUP 2 ('/mybackup/mytest/redo02a.log',  '/mybackup/mytest/redo02b.log') SIZE 256M REUSE,
       GROUP 3 ('/mybackup/mytest/redo03a.log',  '/mybackup/mytest/redo03b.log') SIZE 256M REUSE  
NOFILENAMECHECK;
1
Gandolf989