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:
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.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
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;