Standby database manuelle sur Standard Edition : Différence entre versions
De wikiGite
Ligne 7 : | Ligne 7 : | ||
=== Sur le serveur primaire === | === Sur le serveur primaire === | ||
Passer la base primary en archive log : | Passer la base primary en archive log : | ||
− | alter system set log_archive_dest_1='LOCATION=/oradata01/ | + | alter system set log_archive_dest_1='LOCATION=/oradata01/ORA/archives'; |
shutdown immediate; | shutdown immediate; | ||
startup mount; | startup mount; | ||
Ligne 19 : | Ligne 19 : | ||
Backup cold de la base primary : | Backup cold de la base primary : | ||
shutdown immediate; | shutdown immediate; | ||
− | '''<nowiki>*</nowiki>NIX''' : tar du répertoire /oradata01/ | + | '''<nowiki>*</nowiki>NIX''' : tar du répertoire /oradata01/ORA |
'''WINDOWS''' : copier les données vers un répertoire backup, puis par SMB sur serveur standby | '''WINDOWS''' : copier les données vers un répertoire backup, puis par SMB sur serveur standby | ||
Ligne 35 : | Ligne 35 : | ||
copier la clé publique (contenue dans /home/oracle/.ssh/id_dsa.pub) | copier la clé publique (contenue dans /home/oracle/.ssh/id_dsa.pub) | ||
créer sur la serveur standby un fichier /home/oracle/.ssh/authorized_keys, et y coller la clé | créer sur la serveur standby un fichier /home/oracle/.ssh/authorized_keys, et y coller la clé | ||
− | * Créer un script (à planifier à interval régulier, toutes les minutes par exemple) (/oracle/product/10.2.0/db_1/admin/ | + | * Créer un script (à planifier à interval régulier, toutes les minutes par exemple) (/oracle/product/10.2.0/db_1/admin/ORA/scripts/send_archives.sh ): |
#!/bin/sh | #!/bin/sh | ||
− | rsync -e ssh -a --delete /oradata01/ | + | rsync -e ssh -a --delete /oradata01/ORA/archives/* 172.16.1.22:/oradata01/ORA/archives 2>/dev/null |
'''WINDOWS''' : ''voir script cwrsync'' | '''WINDOWS''' : ''voir script cwrsync'' | ||
Ligne 47 : | Ligne 47 : | ||
Arrêter la base | Arrêter la base | ||
− | Ecraser la base existante : cd /oradata01; tar -xvzf | + | Ecraser la base existante : cd /oradata01; tar -xvzf ORA.tgz |
Dupliquer (par cp/copy) le ctrlstdby.ctl en control01.ctl, control02.ctl, control03.ctl | Dupliquer (par cp/copy) le ctrlstdby.ctl en control01.ctl, control02.ctl, control03.ctl | ||
− | Script shell de démarrage de la base standby (/oracle/product/10.2.0/db_1/admin/ | + | Script shell de démarrage de la base standby (/oracle/product/10.2.0/db_1/admin/ORA/scripts/start_standby.sh) : |
#!/bin/sh | #!/bin/sh | ||
. /home/oracle/.bashrc | . /home/oracle/.bashrc | ||
− | export ORACLE_SID= | + | export ORACLE_SID=ORA |
sqlplus / as sysdba << EOF | sqlplus / as sysdba << EOF | ||
startup nomount; | startup nomount; | ||
Ligne 61 : | Ligne 61 : | ||
EOF | EOF | ||
− | script sql d'application des logs (à planifier à interval régulier avec « >/dev/null 2>&1 ») (/oracle/product/10.2.0/db_1/admin/ | + | script sql d'application des logs (à planifier à interval régulier avec « >/dev/null 2>&1 ») (/oracle/product/10.2.0/db_1/admin/ORA/scripts/apply_archive.sh) : |
#!/bin/sh | #!/bin/sh | ||
#Insérer un retour chariot dans le script avant « exit » sinon il attend indéfiniment | #Insérer un retour chariot dans le script avant « exit » sinon il attend indéfiniment | ||
. /home/oracle/.bashrc | . /home/oracle/.bashrc | ||
− | export ORACLE_SID= | + | export ORACLE_SID=ORA |
sqlplus / as sysdba << EOF | sqlplus / as sysdba << EOF | ||
recover automatic standby database; | recover automatic standby database; | ||
Ligne 72 : | Ligne 72 : | ||
EOF | EOF | ||
− | Note 1 : les messages d'info qui s'affichent lors du recover sont aussi loggués dans le fichier | + | Note 1 : les messages d'info qui s'affichent lors du recover sont aussi loggués dans le fichier alert_ORA.log. Penser à le remettre à zéro de temps en temps. |
Note 2 : les fichiers archivelogs ne sont pas supprimés après leur application. Penser à faire le ménage dans le répertoire d'archives. | Note 2 : les fichiers archivelogs ne sont pas supprimés après leur application. Penser à faire le ménage dans le répertoire d'archives. | ||
Ligne 78 : | Ligne 78 : | ||
---- | ---- | ||
− | Pour passer la standby en primary (/oracle/product/10.2.0/db_1/admin/ | + | Pour passer la standby en primary (/oracle/product/10.2.0/db_1/admin/ORA/scripts/standby_to_primary.sh) : |
#!/bin/sh | #!/bin/sh | ||
. /home/oracle/.bashrc | . /home/oracle/.bashrc | ||
− | export ORACLE_SID= | + | export ORACLE_SID=ORA |
sqlplus / as sysdba << EOF | sqlplus / as sysdba << EOF | ||
alter database activate standby database; | alter database activate standby database; |
Version actuelle datée du 18 mars 2009 à 18:58
Oracle 10G MANUAL STANDBY DATABASE (Standard edition)
Installer Oracle 10g standard sur les 2 serveurs.
Créer des bases identiques sur les 2 serveurs, avec les mêmes SID et arborescences.
Sur le serveur primaire
Passer la base primary en archive log :
alter system set log_archive_dest_1='LOCATION=/oradata01/ORA/archives'; shutdown immediate; startup mount; alter database archivelog; alter database open;
Tester :
alter system switch logfile;
Vérifier que l'archive log se crée au bon endroit.
Backup cold de la base primary :
shutdown immediate;
*NIX : tar du répertoire /oradata01/ORA
WINDOWS : copier les données vers un répertoire backup, puis par SMB sur serveur standby
Sauvegarde du controlfile en mode standby :
startup alter database create standby controlfile as '/oradata01/ctrlstdby.ctl' ;
(c'est ce qui fera que la standby sera marquée « PHYSICAL STANDBY » et acceptera les recover des archive logs)
Copie des fichiers d'archives par
*NIX : rsync :
- Pour que ssh ne demande plus de mot de passe entre le primary et le standby :
créer une clé ssh sur le primary : ssh-keygen -t dsa (tout par défaut, sans passphrase) copier la clé publique (contenue dans /home/oracle/.ssh/id_dsa.pub) créer sur la serveur standby un fichier /home/oracle/.ssh/authorized_keys, et y coller la clé
- Créer un script (à planifier à interval régulier, toutes les minutes par exemple) (/oracle/product/10.2.0/db_1/admin/ORA/scripts/send_archives.sh ):
#!/bin/sh rsync -e ssh -a --delete /oradata01/ORA/archives/* 172.16.1.22:/oradata01/ORA/archives 2>/dev/null
WINDOWS : voir script cwrsync
Sur le serveur standby
Transférer le .tgz et le .ctl vers standby (par scp)
Paramétrer log_archives_dest_1 vers le répertoire qui recevra les archive log du primary
Arrêter la base
Ecraser la base existante : cd /oradata01; tar -xvzf ORA.tgz
Dupliquer (par cp/copy) le ctrlstdby.ctl en control01.ctl, control02.ctl, control03.ctl
Script shell de démarrage de la base standby (/oracle/product/10.2.0/db_1/admin/ORA/scripts/start_standby.sh) :
#!/bin/sh . /home/oracle/.bashrc export ORACLE_SID=ORA sqlplus / as sysdba << EOF startup nomount; alter database mount standby database; exit EOF
script sql d'application des logs (à planifier à interval régulier avec « >/dev/null 2>&1 ») (/oracle/product/10.2.0/db_1/admin/ORA/scripts/apply_archive.sh) :
#!/bin/sh #Insérer un retour chariot dans le script avant « exit » sinon il attend indéfiniment . /home/oracle/.bashrc export ORACLE_SID=ORA sqlplus / as sysdba << EOF recover automatic standby database; exit EOF
Note 1 : les messages d'info qui s'affichent lors du recover sont aussi loggués dans le fichier alert_ORA.log. Penser à le remettre à zéro de temps en temps.
Note 2 : les fichiers archivelogs ne sont pas supprimés après leur application. Penser à faire le ménage dans le répertoire d'archives.
Pour passer la standby en primary (/oracle/product/10.2.0/db_1/admin/ORA/scripts/standby_to_primary.sh) :
#!/bin/sh . /home/oracle/.bashrc export ORACLE_SID=ORA sqlplus / as sysdba << EOF alter database activate standby database; alter database open; exit EOF
La standby devient alors PRIMARY et refusera les recover (si on oublie d'enlever le script planifié, les erreurs seront logguées dans l'alert.log).
L'ancienne primary devra être remontée en standby mais pas de switch possible.
On peut aussi arrêter l'actuelle primary, copier la base sur la machine reconstruite (donc redémarrer la primary sur la bonne machine) et recommencer la procédure pour refaire une standby sur la machine 2.