Bonjour
J'ai testé sur mon petit pc perso de créer une base de secours a l aide de 2 tutos, l un présent dans les officiels de ce site et le second trouvé dans les forums (je n arrive d ailleurs plus a retrouver le post ce qui m embête bien)
D'ailleurs une phrase me trouble dans le tuto officiel : Si une base de secours est activée, elle ne pourra revenir dans son état précédent
Cela signifie que si la primary crash, la secondary passera primary "a vie" et que l on doit tout reconfigurer pour que le procces de standby soit a nouveau en place ?
sinon j'ai suivi ces étapes
Et aucune replication ne semble se faire présence d'aucun fichier d'archivage dans l arbo de la standby
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137 Mise en place d'une base standby SGBD: Oracle 9 SE: windows 2000 server architecture matérielle: les deux bases (primaires et standby) sont sur le même serveur. (Normalement le but d'une standby est de garder les données en cas de désastre sur la base primaire, donc les deux bases ne doivent pas être sur le même pc ni dans la même salle ou région. Il ne s'agit ici que d'un test) Citation: Les commentaire (précédé de //) ne doivent pas être recopiés. Les paramètres entre <> doivent remplacé par vos paramètres personnels. Citation: La solution expliquée ici utilise les archivelogs. Ainsi les archivelogs de la base primaire sont envoyés sur la base standby et elle modifiée à partir de ces fichiers. Il existe d'autre solutions. ! La base primaire doit donc être en mode archivelog automatique. Il ne faut pas créer la base standby à l'avance, mais il serait bon d'avoir déjà créé les différents dossiers permettant de l'acceuillir. - Créer un fichier de contrôle standby pour la base standby (sur la base primaire): Code : ALTER DATABASE CREATE standby controlfile AS <chemin complet pour le fichier de contrôle avec le nom de fichier> ; //pour ma part le chemin est le répertoire de base de la standby (ou se trouve habituellement le(s) controlfile(s)) - Copie des fichiers .dbf de la base primaire vers le site standby - Modification de tnsnames.ora et listener.ora : (Ces deux fichiers se trouvent dans oracle_home>/network/admin/) Pour tnsnames.ora : Code : <NOM BASE STANDBY>.WORLD = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = <nom du serveur>)(PORT = <port oracle>)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = <nom base standby>) ) ) pour listener.ora : Code : (SID_DESC = (GLOBAL_DBNAME = <???>) (ORACLE_HOME = <???>) (SID_NAME = <???>) ) - Copier linit<sid>.ora de la base primaire sur la standby.Renommer celui-ci. Cela permet de ne pas tous se retaper à 0 pour l'inti<sid> de la standby. - Modifier l'init<sid>.ora de la standby pour que les chemins des différents fichier soient ceux de la base standby. (par exemple changer le chemin du fichier de contrôle vers celui que vous avez créer précedement). - Ajouter les lignes suivantes à l'init<sid>.ora de la standby: Code : db_name=<nom de la base primaire>; //ce paramètre existe déjà, vérifiez le. lock_name_space=<nom de la base standby> //si les deux sont sur la même machine standby_archive_dest=<chemin du dossier archivelogs> fal_client=<nom de la base standby> fal_server=<nom de la base standby> db_file_name_convert=(<dossier des fichiers .dbf sur la base primaire>,<idem sur la standby>) log_file_name_convert=(<dossier des redologs sur la base primaire>,'<idem sur la standby>) - Ajouter les lignes suivantes à linit<sid>.ora de la base primaire : Code : log_archive_dest_2 = "service=<nom base standby> MANDATORY arch affirm" //mandatory signifie obligatoire log_archive_dest_state_2 = enable - Copier l'init<sid>.ora de chaque base dans le dossier qui contient les init<sid>.ora de toutes les bases. (dans <oracle_home>/database). - Créer un service et le mot de passe sys: à éxécuter dans une fenêtre de commande windows ou dans un .bat. Code : oradim.exe -new -sid <sid base standby> -startmode a -pfile <chemin complet de l'init<sid>.ora de la standby> orapwd.exe file=<oracle_home>database\<nom désiré pour le fichier du mot de passe>.ora password=<mot de passe désiré pour sys> //le mot de passe et le nom du fichier de mot passe peuvent être changé. Pour supprimmer le service il faut taper: Code : oradim.exe -DELETE -sid <sid de la base> Pour changer le mot de passe sys il faut supprimmer le fichier créé par la commande ci dessus (orapwd) et la relancer. Utilisation de la base standby - Démarer la base primaire (startup) - Démarrer la base standby : Code : Startup nomount; ALTER DATABASE mount standby DATABASE; - Mise en marche de la récupération automatique : Code : ALTER DATABASE recover managed standby DATABASE; A partir de ce moment la base standby est modifiée par les changements effectués sur la base primaire. De plus vous n'avez plus la main. Pour ne pas geler la session, il faut plutôt taper: Code : ALTER DATABASE recover managed standby DATABASE disconnect FROM session; - Faire passer un archivelogs entre les deux bases (sur la base primaire) Code : ALTER system switch logfile ; Un archivelog apparait sur le site standby. Ainsi la route est tracée, les modifications effectuées sur la base primaire pourront être visible sur la base standby. Cependant il faudra que la transaction (de la base primaire) ai été validée (commit) et qu'un archivelog soit passé entre les deux bases (cela peut être forcé par la commande si dessus).. - Pour lire la base standby : Code : ALTER DATABASE recover managed standby DATABASE cancel; ALTER DATABASE open READ only; Vous pouvez ainsi effectuer des select sur la standby. A ce moment la base standby reçoit toujours les archivelogs mais n'est plus modifiée; elle le sera de nouveau aprés avoir retapé la commande: Code : ALTER DATABASE recover managed standby DATABASE;
Init.ora de la Primary (SID = GD)
Init.ora de la secondary (SID = GD2)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2log_archive_dest_2 = "service=GD2 MANDATORY arch affirm" log_archive_dest_state_2 = enable
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 db_name=GD instance_name=GD2 lock_name_space=GD2 standby_archive_dest=D:\oracle\oradata\GD2\arch fal_client=GD2 fal_server=GD2 db_file_name_convert=(D:\oracle\oradata\GD,D:\oracle\oradata\GD2) log_file_name_convert=(D:\oracle\oradata\GD,D:\oracle\oradata\GD2) control_files=("D:\oracle\oradata\GD2\STBDB.CTL")
Partager