Translate

viernes, 21 de septiembre de 2012

Implementaciòn de dataguard 11.2

Creación de dataguard mediante comandos sql:

Pre-requisitos de la base primaria:

1) alter  database force logging;
2) deben  estar seteados  los parámetros (transport  authentication)
            log_archive_dest_N =  ubicación  de los logs

3) Configurar primary  database para recibir redo (Section 6.2.3)
fal_server= va la entrada de  la que se va a definir como  primaria

Aqui tenemos  en modo  de ejemplo un archivo  de parametros para la base de datos  primaria    
Donde Chicago  es primaria  y Boston  secundaria:

LOG_ARCHIVE_CONFIG='DG_CONFIG=(chicago,boston)'
CONTROL_FILES='/arch1/chicago/control1.ctl', '/arch2/chicago/control2.ctl'
LOG_ARCHIVE_DEST_1='LOCATION=/arch1/chicago/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=chicago'
LOG_ARCHIVE_DEST_2='SERVICE=boston ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=boston'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
LOG_ARCHIVE_FORMAT=%t_%s_%r.arc
LOG_ARCHIVE_MAX_PROCESSES=30


4) ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/tmp/boston.ctl';

5) creamos el pfile para la base de datos standby 

CREATE PFILE='/tmp/initboston.ora' FROM SPFILE;

Lo pasamos al otro servidor si es que la generamos en otro server 

6) Preparar  el pfile para la standby ,modificando los parametros para indicar que va ser la standby 

DB_NAME=chicago
DB_UNIQUE_NAME=boston
LOG_ARCHIVE_CONFIG='DG_CONFIG=(chicago,boston)'
CONTROL_FILES='/arch1/boston/control1.ctl', '/arch2/boston/control2.ctl'
DB_FILE_NAME_CONVERT='chicago','boston'
LOG_FILE_NAME_CONVERT=
'/arch1/chicago/','/arch1/boston/','/arch2/chicago/','/arch2/boston/'
LOG_ARCHIVE_FORMAT=log%t_%s_%r.arc
LOG_ARCHIVE_DEST_1=
'LOCATION=/arch1/boston/
VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
LOG_ARCHIVE_DEST_2=
'SERVICE=chicago ASYNC
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
DB_UNIQUE_NAME=chicago'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
STANDBY_FILE_MANAGEMENT=AUTO
FAL_SERVER=chicago


7)Copiar el password  file de la primaria a la standby

8)Se deben configurar en ambos Server el tnsmanes y el listener para que se pueda  efectuar el cambio  de rol (de primaria  a standby)

9)Montarla base standby  y comenzar el recover

Aplicara los redo  en real time:
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;


en caso  de querer  correrlo en foreground , ejecutar lo siguente:
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE;

Notas: 
para cancelar el aplicado de redo ejecutar el siguente comendo  en el sqlplus
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;



10)Ejecutar en la primary
 ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE {AVAILABILITY | PERFORMANCE | PROTECTION};

11)verificar que la base primaria  esta trabajando  con  el metodo  de proteccion  indicado
SELECT PROTECTION_MODE FROM V$DATABASE;


Proceso de switch

Realizar el switch over hacia la standby fisica.
1) Verificar cual  es primaria y cual  standby:
SELECT SWITCHOVER_STATUS FROM V$DATABASE;

SWITCHOVER_STATUS
-----------------
TO STANDBY

El valor TO STANDBY o SESSIONS ACTIVE indica que la base de datos  primaria  puede cambiar a role standby.

2) Ejecutar sobre la primaria
ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN;
SQL> SHUTDOWN ABORT;
SQL> STARTUP MOUNT;

3) Ejecutar sobre la base standby  para ver si puede pasar  a role  primario

SELECT SWITCHOVER_STATUS FROM V$DATABASE;

Si nos retorna TO PRIMARY o SESSIONS ACTIVE la base standby puede ser switcheada como  role  primaria



4) Ejecutar en la standby
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;
ALTER DATABASE OPEN;

5) Ejecutar  en la  ex primaria (futura standby)
Comenzar el aplicado de redo hacia la nueva standby

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

Or

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;


Failover

1)se Ejecuta sobre la base de datos primaria en el caso de poderse montar.
# realiza un flush de los redo no enviados desde la primaria  hasta  la standby

ALTER SYSTEM FLUSH REDO TO 'SRDDBA';

2) Parar el REDO APPY en la base de datos standby

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

3) Finalizar la aplicación de todos los redo recibidos (ejecutar en la standby)

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;

4) Verificar que la standby  puede pasar a role primario

SELECT SWITCHOVER_STATUS FROM V$DATABASE;

Si nos retorna TO PRIMARY o SESSIONS ACTIVE la base standby puede ser switcheada como  role  primaria.

5) realizar switch de role fisica standby a primaria (ejecutar en standby)

ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY [WITH SESSION SHUTDOWN];

6) Abrir base de datos (ejecutar sobre la standby)

ALTER DATABASE OPEN;

7) Realizar un backup full de la nueva base de datos primaria.

8) Convertir  la vieja primaria  en standby fisica, usando flashback

a)Ejecutar  sobre la nueva primaria
SELECT TO_CHAR(STANDBY_BECAME_PRIMARY_SCN) FROM V$DATABASE;
TO_CHAR(STANDBY_BECAME_PRIMARY_SCN)
----------------------------------------
733778

b)Ejecutar sobre la vieja primaria

SQL>SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;

SQL> FLASHBACK DATABASE TO SCN 733778;

      c)Convertir  la vieja primaria a standby  fisica
      Ejecutar en la vieja primaria

ALTER DATABASE CONVERT TO PHYSICAL STANDBY;

Nota:este commando  desmonta la base de datos.

d) Shut down and restart the database:
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;

9) Start transporting redo to the new physical standby database.
Ejecutar en la nueva primaria

Set  lines 200;
col DESTINATION for a30
col DEST_name for a30;
col error for a10;
SELECT DEST_ID, DEST_NAME, STATUS, PROTECTION_MODE, DESTINATION, ERROR,SRL FROM V$ARCHIVE_DEST_STATUS;

En el  caso  de obtener  el siguente error :
ORA-12528:TNS:listener: all appropriate instances are blocking new connection

Ejecutar el siguente commando  para asegurar que la standby  recibe los redo desde la primaria.

SQL> ALTER SYSTEM SWITCH LOGFILE;

Verificar que el error  desaparecio.
SQL> SELECT DEST_ID, DEST_NAME, STATUS, PROTECTION_MODE, DESTINATION, ERROR,SRL FROM V$ARCHIVE_DEST_STATUS;


No hay comentarios:

Publicar un comentario