Outils personnels

Standby database manuelle par RMAN (hot) sur Standard Edition

De wikiGite

Sur le serveur standby

Créer l'instance sur le serveur standby (on suppose la même arborescence et le même nom de base sur les 2 serveurs).

Une fois créée, la lancer :

$ sqlplus "/ as sysdba"
SQL> startup nomount

Sur le serveur primaire

Lancer rman, faire un backup de la base avec le control file pour la standby :

backup database include current controlfile for standby ;
sql "alter system archive log current";
backup archivelog all

Copier les fichiers de backup vers le serveur standby, dans le même répertoire.

Créer une entrée pour la base standby dans le tnsnames.ora du serveur primaire. Lancer RMAN et se connecter aux 2 bases (local=primaire, distante=standby) :

$ rman
RMAN> connect auxiliary sys/password@standbydb
RMAN> connect target /

Lancer la duplication :

duplicate target database for standby dorecover nofilenamecheck;

En cas d'erreur :

RMAN> connect auxiliary sys/password@standbydb
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-04006: error from auxiliary database: ORA-12528: TNS:listener: all
appropriate instances are blocking new connections

Ajouter les lignes suivantes (en rouge) au listener.ora du serveur standby :

SID_LIST_LISTENER =
 (SID_LIST =
   (SID_DESC =
     (SID_NAME = PLSExtProc)
     (ORACLE_HOME = C:\oracle\product\10.2.0\db_1)
     (PROGRAM = extproc)
   )
   (SID_DESC =
     (SID_NAME = DBSID)
     (ORACLE_HOME = C:\oracle\product\10.2.0\db_1)
   )
)

L'erreur ;

starting media recovery

Oracle Error:
ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01152: file 1 was not restored from a sufficiently old backup
ORA-01110: data file 1: '/oradata/DBID/SYSTEM01.DBF'

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of Duplicate Db command at 11/08/2010 21:07:42
RMAN-03015: error occurred in stored script Memory Script
RMAN-06053: unable to perform media recovery because of missing log
RMAN-06025: no backup of log thread 1 seq 17200 lowscn 14557604 found to restore

RMAN-06025: no backup of log thread 1 seq 17199 lowscn 14557397 found to restore

peut n'être qu'un warning. Relancer la standby et tester le recover d'un archive log :

SQL> alter database mount standby database;
SQL> recover standby database

ORA-00279: change 57953 generated at ....
ORA-00289: suggestion : ....
ORA-00280: change 57953 ....
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}

Si l'archive demandée est présente (en générer un à partir du serveur primaire au besoin) et qu'appuyer sur "Entrée" suffit à l'appliquer : tout va bien !