![]() |
|||||||||||||||||||||||||||||||||||||||||||||
|
DBA La standby database (extrait du livre) La standby database est apparue en Oracle 7.3. Elle est une base de données en perpétuelle restauration avec les redologs de la base source et qui lors de la chute de celle-ci reprend ses activités. Dans les versions antérieures à 8i, le DBA devait transférer les redo logs vers leur destination manuellement, en 8i ceci peut être effectué automatiquement. Pour la vérification de la disponibilité de l’option, vérifiez les options (v$options) l’y concernant : Managed Standby à TRUE.
Comme la standby est alimenté par les redo logs archivés de la base source, nous devons indiquer l’emplacement de ces fichiers. Un nouveau paramètre est introduit en V8, standby_archive_dest, qui indique le répertoire d’arrivage des archives.
Création de la standby database Dans la création de la standby database nous allons prendre la configuration suivante parmi les multiples configurations offertes par Oracle :
La base source se trouve sur la machine \\SCLAVOS dans l’arborescence l:\db\IDBA\data, les archives se trouvent dans l:\db\IDBA\archives. La base cible se trouve(ra) sur la machine \\MASTER dans l’arborescence l:\db\IDBA\data, les archives se trouvent dans l:\db\IDBA\archives
Backup des fichiers de la base La constitution de la base commence avec la copie des fichiers de la base originelle dans l’arborescence de la standby database. Les fichiers de données, de contrôle et redo sont copiés sur la machine cible comme pendant l’opération d’un backup à froid (d’ailleurs les fichiers sont issus d’un backup). N’oublions que nous pouvons employer aussi les fichiers issus d’un hot backup.
Les fichiers de contrôle seront écrasés par l’opération suivante. Nous pouvons ne pas les prendre, mais ça nous fera faire une action supplémentaire. Création du fichier de contrôle Cette action est à mener bien évidement dans l’instance source.
set echo on spool standby_cre_ctl.lis archive log list alter database create standby controlfile as 'l:\db\idba\data\idbastandby.ctl'; spool off;Code 1 Création du fichier de contrôle La base originelle a trois fichiers de contrôle.
Configuration du réseau
Dans notre cas de gestion automatisée, le listener de la machine en standby doit être modifié.
. . .
STANDBY_LISTENER =
(ADDRESS = (PROTOCOL = TCP)(HOST = master)(PORT = 1522))
SID_LIST_STANDBY_LISTENER =
(SID_LIST = (SID_DESC = (SID_NAME = idba)
(ORACLE_HOME = F:\oracle81)))
Code 2 Configuration du listener sur la machine cible(standby)Notons que sur la même machine nous avons un premier listener pour une autre base de production. Enfin, presque. Le listener standby est démarré dans notre cas avec
Lsnrctl start standby_listener Connecting to (ADDRESS=(PROTOCOL=TCP)(HOST=master)(PORT=1522)) STATUS of the LISTENER ------------------------ Alias standby_listener Version TNSLSNR for 32-bit Windows: Version 8.1.6.0.0 - Produc tion Start Date 30-AOU-2000 19:19:11 Uptime 0 days 0 hr. 0 min. 2 sec Trace Level off Security OFF SNMP OFF Listener Parameter File F:\oracle81\network\admin\listener.ora Listener Log File F:\oracle81\network\log\standby_listener.log Services Summary... idba has 1 service handler(s) The command completed successfullyFigure 1 Démarrage du listener pour la standby
Le fichier TNSNAMES.ORA de la machine source doit également être modifié :
isos.world = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(PORT = 1522)(HOST = master))) (CONNECT_DATA = (SID = idba)))Code 3 Configuration du tnsnames sur la machine source (prod) Configurer l’archivage
En 8i les redologs archivés peuvent être pris en compte automatiquement par la standby dans le cas de la gestion automatisée et l’utilisation de NET*8. La ligne
log_archive_dest = l:\db\idba\archive devient log_archive_dest_1 = 'LOCATION=l:\db\idba\archive' log_archive_dest_state_1 = ENABLE log_archive_dest_2 = 'SERVICE=isos.world' log_archive_dest_state_2 = ENABLECode 4 Modifications du init.ora sur le serveur Notons que la deuxième destination des archive est le service ISOS. Jusqu'à quatre destinations supplémentaires peuvent être renseignées. Les services sont activés.
Un démarrage de l’instance source en ce moment provoquera sur la machine de la standby lors de switch de redo logs (STANDBY_LISTENER.LOG):
30-AOU-2000 16:17:03 * (CONNECT_DATA=(SID=IDBA)(CID=(PROGRAM=l:\oracle\ora81\bin\ORACLE.EXE)(HOST=SCLAVOS)(USER=SYSTEM))) * (ADDRESS=(PROTOCOL=tcp)(HOST=172.16.14.93)(PORT=1938)) * establish * IDBA * 12500 TNS-12500: TNS:listener failed to start a dedicated server process TNS-12560: TNS:protocol adapter error TNS-00530: Protocol adapter error 32-bit Windows Error: 2: No such file or directoryCode 5 Le listener de la standby n’a pas pu faire son travail. Une instance standby n’existe pas (encore)
Sur la machine standby, nous avons ajouté le paramètre STANDBY_ARCHIVE_DEST qui dans notre cas de figure est identique à ARCHIVELOG_DEST, ainsi que le paramètre de compatibilité 8.1.6
STANDBY_ARCHIVE_DEST = l:\db\idba\archive COMPATIBLE = 8.1.6Code 6 Modifications du init.ora sur le serveur Création du service (NT) En environnement Windows NT, un service doit être créé :
L:\db\idba>oradim -new -sid idba -intpwd poloff -pfile l:\db\idba\script\init\init.ora -startmode manualCode 7 Création du service (Windows NT) Démarrages
startup nomount pfile=L:/db/idba/script/init/init.ora alter database mount standby database; Vérifications Inutile de le préciser, après les manipulations effectuées nous nous attendons de voir apparaître dans le répertoire STANDBY_ARCHIVE_DEST les redologs archivés sur la machine source. Il est très frustrant de ne pas avoir le résultat escompté tout de suite.
Comme le transfert des redo se fait par le biais de NET*8, l’analyse des logs sur les deux machines peut s’avérer bénéfique. Attention aux numéros de ports, noms de hosts, etc.
Attention aux fichiers qui deviendront standby database : la sauvegarde de ceux ci doit être une cohérente, après un shutdown propre. La requête suivante montre les eventuelles causes du disfonctionnement de transfert d’archives :
SQL> col error for a25 wrapSQL> col destination for a30 wrap SQL> set line 1000 SQL> select dest_id, status, destination, error 2 from v$archive_dest; DEST_ID STATUS DESTINATION ERROR ---------- --------- ------------------------------ ----- 1 VALID l:\db\idba\archive 2 VALID isos.world 3 INACTIVE 4 INACTIVE 5 INACTIVE Figure 2 analyse des possibles erreurs avec v$archivedest (base source) Recouvrir la standby database Si l’on utilise une managed standby database, nous démarrons son recouvrement perpétuel avec alter database recover managed standby database timeout 30; Le paramètre timeout spécifie le délai d’attente d’un fichier redolog après lequel la restauration sera abortée.
Arrêt du recouvrement et ouverture en read only Les bases de données en mode standby peuvent être ouvertes en mode read only. Ceci permet une utilisation sur le site de secours ou bien des opérations de vérification, déchargement massif, etc. Ceci est réalisé avec
alter database recover managed standby database cancel; alter database open read only; La premiere commande arête le process de restauration, la deuxieme ouvre la base en mode read only.
Recommencer la restauration La restauration est redémarrée avec la commande
alter database recover managed standby database ; |
||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||