Bonjour,
Oracle 9.2.0.8.0
Je souhaiterais copier un schéma d'une base à une autre (sur 2 serveurs différents) en utilisant rman.
Comment puis-je procéder ?
Version imprimable
Bonjour,
Oracle 9.2.0.8.0
Je souhaiterais copier un schéma d'une base à une autre (sur 2 serveurs différents) en utilisant rman.
Comment puis-je procéder ?
Rman effectue des backup "physique" (bloc Oracle). Il n'est pas adapté pour copier un seul schéma d'une base.
Si tu souhaites copier l'utilisateur USER_A de la base BASE_A et l'intégrer dans la base BASE_B, il y a deux cas figure:
cas 1) tu écrases BASE_B en dupliquant avec RMAN la base BASE_A
cas 2) tu fais un export/import de BASE_A vers BASE_B pour l'utilisateur USER_A
Acceptes tu de perdre tout le contenu de BASE_B ? Si c'est le cas, tu peux utiliser RMAN, sinon il faudra passer par un export/import
Christophe
Dans ce cas,
comme le user_A a 6 tablespaces qui lui sont propres, puis-je utiliser rman pour backuper les 6 tablespaces de la BASE_A et les restaurer dans la BASE_B ?
C'est ce que j'ai voulu essayé, mais je n'arrive déjà pas à restaurer sur la même base, alors sur une autre .....
Voici mon script shell de backup à chaud qui a fonctionné (j'espère qu'il est bien adapté pour la restauration) :
Comment faire pour la restauration sur la même base ou sur une autre ?Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 rman << FIN connect target / run { # OUverture canal sauvegarde disque ALLOCATE CHANNEL d1 DEVICE TYPE DISK; # Sauvegarde des tablespaces BACKUP TABLESPACE TB_MPP_SMALL format '/data/local/hotbkp_TB_MPP_SMALL_%d_%T.%s.%p.bkp' TAG 'HOT FULL TB_MPP_SMALL'; BACKUP TABLESPACE TB_MPP_MEDIUM format '/data/local/hotbkp_TB_MPP_MEDIUM_%d_%T.%s.%p.bkp' TAG 'HOT FULL TB_MPP_MEDIUM'; BACKUP TABLESPACE TB_MPP_LARGE format '/data/local/hotbkp_TB_MPP_LARGE_%d_%T.%s.%p.bkp' TAG 'HOT FULL TB_MPP_LARGE'; BACKUP TABLESPACE IX_MPP_SMALL format '/data/local/hotbkp_IX_MPP_SMALL_%d_%T.%s.%p.bkp' TAG 'HOT FULL IX_MPP_SMALL'; BACKUP TABLESPACE IX_MPP_MEDIUM format '/data/local/hotbkp_IX_MPP_MEDIUM_%d_%T.%s.%p.bkp' TAG 'HOT FULL IX_MPP_MEDIUM'; BACKUP TABLESPACE IX_MPP_LARGE format '/data/local/hotbkp_IX_MPP_LARGE_%d_%T.%s.%p.bkp' TAG 'HOT FULL IX_MPP_LARGE'; # Liberation canal disque RELEASE CHANNEL d1; } # Allocation canal pour mainteance ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE DISK; # Supprime les fichiers et entree dictionnaire selon retention DELETE FORCE NOPROMPT OBSOLETE; # Liberation canal de maintenance RELEASE CHANNEL; FIN
Merci d'avance pour votre aide
Pour copier les tablespaces et les "plugger" sur BASE_B, il faut utiliser les transportable tablespace.
1) mettre les tablespaces en READONLY
2) export des metadata sur BASE_A avec l'utilitaire exp
3) rman ou cp pour copier les datafiles sur la machine de BASE_B
4) imp sur BASE_B
Il y a pas mal de contraintes lors de l'utilisation des transportable tablespace ( tablespace en readonly, indépendance des objets exportés par rapport à ce qui n'est pas exporté ... )
Sinon, le plus simple pour copier un schéma (pas trop gros) d'une base vers une autre reste l'export/import (mais il y a aussi des contraintes/limites avec cette méthode).
Christophe
Il existe maintenant un moyen plus simple de gerer les tablespaces transportable via RMAN depuis la version d'oracle 10.2.0
Via RMAN :
RMAN > Tablespace transportable <Nom du TableSpace>
Très Efficace aussi bien pour l'export que pour l'import
Karim