Sunteți pe pagina 1din 29

FECHA: 21Agosto2008 MODIFICADO: 21Octubre2008 AUTOR: PSM;

CONTENIDO
1.- PREPARATIVOS EN BASE DE DATOS PRIMARIA....................................................................... 3 1.1.- Habilitar Forced Loggin................................................................................................................3 1.2.- Crear archivo de password:...........................................................................................................3 1.3.- Configuracin de Standby Redo Log............................................................................................3

1.4.- Parmetros especficos para base de datos primaria..................................................................... 4 1.5.- Parmetros para inicializacin de rol standby...............................................................................4 1.6.- Habilitacin modalidad archivelog............................................................................................... 4 2.- CREACION BASE DE DATOS STANDBY FISICA......................................................................... 5 2.1.- Crear resplado de la base de datos primaria..................................................................................5 2.2.- Crear controlfile para base de datos standby ............................................................................... 5 2.3.- Preparar archivo de parametros para base de datos standby ...................................................... 5 2.4.- Llevar archivos a sitio standby .....................................................................5 2.5.- Seteo ambiente para sporte de standby......................................................................................... 5 2.6.- Iniciar base de datos standby........................................................................................................ 6 2.7.- Verificar funcionamiento base standby ..................................................................................... 6 3.- VERIFICACIONES GENERALES:.................................................................................................... 7 4.- REFERENCIAS:................................................................................................................................ 10 ANEXO 1: EJEMPLO CONFIGURACION BROKER..........................................................................10 Parmetro:.......................................................................................................................................10 Configuracin para listener:............................................................................................................11 Configuracin BROKER:............................................................................................................... 11 ANEXO 2: REFERENCIAS SETEO LOG_ARCHIVE_DEST_n:........................................................ 11 ANEXO 3: PROCEDIMIENTOS STANDBY CPT................................................................................ 15 Observaciones:.................................................................................................................................... 15 Resolucin de Archive Gaps............................................................................................................... 16 Resumen Orden subida y bajada bases de datos primaria y standby...................................................17 Subida standby en modo de recuperacin automtico........................................................................ 17 Bajada standby en modo de recuperacin automtico........................................................................ 17 Operacin de switchover manual:....................................................................................................... 18 ANEXO 4: PRUEBA CONFIGURACION DG (broker)........................................................................ 20 Parmetros instancia RAC: (primaria)................................................................................................ 20 Parmetros instancia DG: (standby)....................................................................................................21 Configuracion listener.ora................................................................................................................... 22 Configuracin tnsnames.ora................................................................................................................23 Configuracin realizada para DG........................................................................................................26 ANEXO 5: PROCEDIMIENTOS OPERADORES CPT (check standby)..............................................28 *.- Identificar archivos de archivelog no transferidos a base standby.................................................28 *.- Si la query retorna datos, se deben identificar los nombres de archivelogs faltantes:................... 28 *.- Validar si archivelogs se encuentran en la ubicacion reportada por la base de datos (resultado SQL anterior), ya sea ne filesystem o en ASM................................................................................... 28 *.- Validar GAPS en base standby.......................................................................................................29

1.- PREPARATIVOS EN BASE DE DATOS PRIMARIA


1.1.- Habilitar Forced Loggin.
SQL> ALTER DATABASE FORCE LOGGING;

1.2.- Crear archivo de password:


ORAPWD FILE=<filename> PASSWORD=<password> ENTRIES=<max_users> Seteo parmetro REMOTE_LOGIN_PASSWORDFILE en valor EXCLUSIVE o SHARED, parmetro esttico, requiere reinicio de la base de datos.

1.3.- Configuracin de Standby Redo Log


Configuracin requerida para modos de proteccin "maximum protection" and "maximum availability", y se recomienda modo de transporte LGWR ASYNC. Consideraciones: 1 Asegurarse que el tamao de logfiles son idnticos para base de datos primaria y standby. 2 Definir nmero de standby redo log file groups. 3 Verificar valores de parmetros MAXLOGFILES MAXLOGMEMBERS 4 Crear standby redo log file groups. EJ:
SQL> ALTER DATABASE ADD STANDBY LOGFILE THREAD 5 2> ('/oracle/dbs/log1c.rdo','/oracle/dbs/log2c.rdo') SIZE 500M;

--- Alternativamente.
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 10 2> ('/oracle/dbs/log1c.rdo','/oracle/dbs/log2c.rdo') SIZE 500M;

5 Verificar creacin de standby redo log file groups.


SQL> SELECT GROUP#,THREAD#,SEQUENCE#,ARCHIVED,STATUS FROM V$STANDBY_LOG;

1.4.- Parmetros especficos para base de datos primaria.


DB_NAME = <nombre_primaria> DB_UNIQUE_NAME = <nombre_primaria> LOG_ARCHIVE_CONFIG ='DG_CONFIG=(<nombre_primaria>,<nombre_stdby>)' CONTROL_FILES = '/..../control1.ctl', '/..../control2.ctl' LOG_ARCHIVE_DEST_1 = 'LOCATION=/.../../ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=<nombre_primaria>' LOG_ARCHIVE_DEST_2 = 'SERVICE=<stdby> LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=<nombre_stdby>' 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 = <num_procs>

Ejemplo:
Database DB_UNIQUE_NAME =============== ================== Primary <nombre_primaria> Physical standby <nombre_stdby> Oracle Net Service Name ======================== <nombre_primaria> <nombre_stdby>

Observaciones: Parmetro DB_UNIQUE_NAME fue introducido en 10g, especifica un nombre globalmente nico para la base de datos. Bases de datos con el mismo DB_NAME, DB_DOMAIN, deben tener un valor nico valor para DB_UNIQUE_NAME. El valor para DB_UNIQUE_NAME puede tener hasta 30 caracteres.

1.5.- Parmetros para inicializacin de rol standby.


FAL_SERVER = <nombre_primaria> FAL_CLIENT = <nombre_stdby> DB_FILE_NAME_CONVERT = '<patron_origen>','<patron_destino>' LOG_FILE_NAME_CONVERT = '<patron_origen1>','<patron_destino1>','<patron_origen2>','<patron_destino2>' STANDBY_FILE_MANAGEMENT = AUTO

1.6.- Habilitacin modalidad archivelog.


SQL> SQL> SQL> SQL> SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN;

2.- CREACION BASE DE DATOS STANDBY FISICA


Resumen:

2.1.- Crear resplado de la base de datos primaria.


En base primaria RMAN: backup database plus archivelog;

2.2.- Crear controlfile para base de datos standby


En base primaria RMAN: backup current controlfile for standby;

2.3.- Preparar archivo de parametros para base de datos standby


Parametros a modificar para standby.
DB_UNIQUE_NAME CONTROL_FILES DB_FILE_NAME_CONVERT LOG_FILE_NAME_CONVERT LOG_ARCHIVE_DEST_1 LOG_ARCHIVE_DEST_2 FAL_SERVER FAL_CLIENT

2.4.- Llevar archivos a sitio standby


Mediante ftp, scp, rcp, llevar los archivos en disco al servidor standby y recuperar base standby. Primary database backup + controlfile for standby + parameter file. Servidor standby: RMAN startup nomount restore controlfile from '/.../.../<bkp_file'>'; alter database mount; restore database; recover database; shutdown immediate;

2.5.- Seteo ambiente para sporte de standby


Servidor standby Crear archivo de passowrd. orapwd file=<fname> password=<password> entries=<users> Configurar listener netca

Configurar entradas para Oracle Net Service tnsnames.ora Crear archivo de parametros. $ORACLE_HOME/dbs/spfile<stdby>.ora

2.6.- Iniciar base de datos standby


Servidor standby:
SQL> STARTUP NOMOUNT; SQL> ALTER DATABASE MOUNT STANDBY DATABASE; SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

2.7.- Verificar funcionamiento base standby


Validar aplicacin de archivelogs:
SELECT THREAD#,SEQUENCE#, APPLIED FROM V$ARCHIVED_LOG; SELECT THREAD#, SEQUENCE#, FIRST_CHANGE#, NEXT_CHANGE# FROM V$LOG_HISTORY;

3.- VERIFICACIONES GENERALES:

Standby redologs definidos. (primaria / standby ) SELECT INST_ID,GROUP#,THREAD#,SEQUENCE#,ARCHIVED,STATUS FROM GV$STANDBY_LOG;

Ej: resultados en base primaria clearing.

SELECT INST_ID,GROUP#,THREAD#,SEQUENCE#,ARCHIVED,STATUS FROM GV$STANDBY_LOG; INST_ID GROUP# THREAD# SEQUENCE# ARC STATUS ---------- ---------- ---------- ---------- --- ---------1 25 1 0 YES UNASSIGNED 1 26 1 0 YES UNASSIGNED 1 27 1 0 YES UNASSIGNED 1 28 1 0 YES UNASSIGNED 1 29 1 0 YES UNASSIGNED 1 30 1 0 YES UNASSIGNED 2 25 1 0 YES UNASSIGNED 2 26 1 0 YES UNASSIGNED 2 27 1 0 YES UNASSIGNED 2 28 1 0 YES UNASSIGNED 2 29 1 0 YES UNASSIGNED 2 30 1 0 YES UNASSIGNED 12 rows selected.

Ej: resultados en base standby clearing.

SELECT INST_ID,GROUP#,THREAD#,SEQUENCE#,ARCHIVED,STATUS FROM GV$STANDBY_LOG; INST_ID GROUP# THREAD# SEQUENCE# ARC STATUS ---------- ---------- ---------- ---------- --- ---------1 21 1 6058 YES ACTIVE 1 22 2 0 NO UNASSIGNED 1 23 1 0 NO UNASSIGNED 1 24 2 5365 YES ACTIVE 1 25 1 0 NO UNASSIGNED 1 26 2 0 NO UNASSIGNED 1 27 1 0 NO UNASSIGNED 1 28 2 0 NO UNASSIGNED 1 29 1 0 YES UNASSIGNED 1 30 2 0 YES UNASSIGNED 10 rows selected.

Archivelogs recibidos en standby. (standby) SELECT THREAD#,SEQUENCE#, APPLIED FROM V$ARCHIVED_LOG;

Ej: resultados en base standby clearing.


SELECT THREAD#, SEQUENCE#, FIRST_CHANGE#, NEXT_CHANGE# FROM V$LOG_HISTORY; ... ... ... THREAD# SEQUENCE# FIRST_CHANGE# NEXT_CHANGE# ---------- ---------- ------------- -----------2 5363 7.3024E+10 7.3025E+10 1 6057 7.3025E+10 7.3026E+10 2 5364 7.3025E+10 7.3026E+10 2 5365 7.3026E+10 7.3027E+10 1 6058 7.3026E+10 7.3026E+10 1 6059 7.3026E+10 7.3028E+10 2 5366 7.3027E+10 7.3027E+10 2 5367 7.3027E+10 7.3028E+10 1 6060 7.3028E+10 7.3028E+10 9348 rows selected.

Archivelogs aplicados en standby. (standby) SELECT THREAD#,SEQUENCE#, APPLIED FROM V$ARCHIVED_LOG;

Ej: resultados en base standby clearing.


SELECT THREAD#,SEQUENCE#, APPLIED FROM V$ARCHIVED_LOG; .. .. .. THREAD# SEQUENCE# APP ---------- ---------- --1 6058 YES 2 5365 YES 2 5366 YES 1 6059 YES 1 6060 YES 2 5367 NO 7673 rows selected.

Revisin eventos gatillados por mensajes en archivo de alertas o trace files de server process. (primaria / standby) SELECT MESSAGE FROM V$DATAGUARD_STATUS;

Ej: resultados en base primaria clearing.


SELECT MESSAGE FROM V$DATAGUARD_STATUS; ... ... ... MESSAGE ----------------------------------------------------------------------------------------------------FAL[server]: Fail to queue the whole FAL gap GAP - thread 2 sequence 5367-5367 DBID 2831143475 branch 658334797 ARC1: Standby redo logfile selected for thread 2 sequence 5367 for destination LOG_ARCHIVE_DEST_3 256 rows selected.

Ej: resultados en base standby clearing.


SELECT MESSAGE FROM V$DATAGUARD_STATUS; ... ... ... MESSAGE -------------------------------------------------------------------------------RFS[21]: Successfully opened standby log 24: '+DISKGROUPMIRROR/cleadb/redot_stan dby_2_24.log' Media Recovery Log +DISKGROUPRAID5/archivelog/2_5367_658334797.dbf Media Recovery Log +DISKGROUPRAID5/archivelog/1_6060_658334797.dbf Media Recovery Waiting for thread 1 sequence 6061 (in transit) 256 rows selected.

Determinatr los mas recientes archivelog en cada destino. (primaria:) SELECT DESTINATION, STATUS, ARCHIVED_THREAD#, ARCHIVED_SEQ# FROM GV$ARCHIVE_DEST_STATUS WHERE STATUS <> 'DEFERRED' AND STATUS <> 'INACTIVE';

Ej: resultados en base primaria clearing


SELECT INST_ID,DESTINATION,STATUS,ARCHIVED_THREAD#, ARCHIVED_SEQ# FROM GV$ARCHIVE_DEST_STATUS WHERE STATUS <> 'DEFERRED' AND STATUS <> 'INACTIVE'; INST_ID ---------1 1 2 2 DESTINATION -------------------------------------------------+DISKGROUPRAID5/cleadb/archivelog CLEADB_DG +DISKGROUPRAID5/cleadb/archivelog CLEADB_DG STATUS ARCHIVED_THREAD# ARCHIVED_SEQ# --------- ---------------- ------------VALID 1 6057 VALID 2 5334 VALID 2 5364 VALID 2 5333

4 rows selected.

4.- REFERENCIAS:

Oracle Data Guard Concepts and Administration


10g Release 2 (10.2) Part Number B14239-04 Capitulo 3 Creating a Physical Standby Database http://download.oracle.com/docs/cd/B19306_01/server.102/b14239/create_ps.htm#SBYDB00200

Oracle Data Guard Concepts and Administration


10g Release 2 (10.2) Part Number B14239-04 Capitulo 14 LOG_ARCHIVE_DEST_n Parameter Attributes http://download.oracle.com/docs/cd/B19306_01/server.102/b14239/log_arch_dest_param.htm#g1017491

Oracle Database Reference


10g Release 2 (10.2) Part Number B14237-03 http://download.oracle.com/docs/cd/B19306_01/server.102/b14237/initparams056.htm#sthref160

Oracle Data Guard Broker


10g Release 2 (10.2) Part Number B14230-02 http://download.oracle.com/docs/cd/B19306_01/server.102/b14230/install.htm#BABECEJC

METALINK:
Note:469493.1 Step By Step Guide To Create Physical Standby Database Using RMAN

ANEXO 1: EJEMPLO CONFIGURACION BROKER


Parmetro:
dg_broker_start boolean TRUE

Configuracin para listener:


LISTENER = (DESCRIPTION = (ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=host_name)(PORT=port_num)))) SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(SID_NAME=sid_name) (GLOBAL_DBNAME=db_unique_name_DGMGRL.db_domain)(ORACLE_HOME=oracle_home)))

Configuracin BROKER:
$ dgmgrl DGMGRL for Linux: Version 10.2.0.3.0 - Production Copyright (c) 2000, 2005, Oracle. All rights reserved. Welcome to DGMGRL, type "help" for information. DGMGRL> connect sys/xxxxxx DGMGRL> create configuration miconfigdg as > primary database is base1 > connect identifier is base1; Configuration "miconfigdg" created with primary database "base1" DGMGRL> show configuration; Configuration Name: Enabled: miconfigdg NO

Protection Mode: MaxPerformance Fast-Start Failover: DISABLED Databases: base1 - Primary database Current status for "miconfigdg": DISABLED DGMGRL> add database base2 as > connect identifier is base2 > maintained as physical; Database "base2" added DGMGRL> enable configuration; Enabled. DGMGRL> show configuration; Configuration Name: Enabled: Protection Mode: Fast-Start Failover: Databases: miconfigdg YES MaxPerformance DISABLED

base1 - Primary database base2 - Physical standby database Current status for "miconfigdg": SUCCESS DGMGRL>

ANEXO 2: REFERENCIAS SETEO LOG_ARCHIVE_DEST_n:


AFFIRM | NOAFFIRM Controla si los servicios de transporte de redo usaran E/S sincrono o asincrono para operaciones en disco. ALTERNATE Especifica un destino alternativo para ser usado, si el destino original falla.

ARCH / LGWR Especifica si los servicios de transporte de redo usaran procesos de archive (ARCn) o logwriter (LGWR). por defecto es ARCH. DB_UNIQUE_NAME Especifica el nombre unico para la base de datos en su destino, DELAY Especifica el tiempo que tomara en aplicar el archive respeco de cuando se gener ste en disco. DEPENDENCY Especificar este parmeetro para un destino standby, que revibir datos a traves de un acceso compaertido de una ubicacion de archive a otro destino. El destino definido con este atributo tiene una dependencia con otro destino, el cual es especificado por el atributo DEPENDENCY. Ej:
LOG_ARCHIVE_DEST_3='SERVICE=dest3 DEPENDENCY=LOG_ARCHIVE_DEST_2 OPTIONAL' LOG_ARCHIVE_DEST_STATE_3=ENABLE

LOCATION / SERVICE Cada destino, debe especificar atributo LOCATION o SERVICE, para identificar si servicios de transporte de redo transmitirn a un directorio en disco local o un destino de base de datos remoto. MANDATORY / OPTIONAL Especifica la poltica para reusar archivos de online redo log. MANDATORY, especifica que redo logfiles deben ser satisfactoriamente archivados en el destino antes de ser reusados. OPTIONAL, especifica que archivado exitoso en el destino, no es requerido antes que archivos de redo log sean puestos disponibles para reuso.

MAX_CONNECTIONS Especifica mximo numero de conexiones de red que sern usadas para realizar archivado remoto. Si MAX_CONNECTIONS >1, se utilizarn multiples conexiones de red para realizar archivado remoto. Cada conexin usar un proceso de archive (ARCn) separado. MAX_FAILURE Controla el numero consecutivo de veces que los servicios de transporte de redo intentarn reestablecer la comunicacin y transmitir datos de redo. Controls the consecutive number of times redo transport services attempt to reestablish communication and transmit redo data. NET_TIMEOUT Especifica el numero de segundos que el proceso log writer en la base de datos primaria, esperarr por un status desde el proceso (LNSn) antes de terminar la conexion de red. NOREGISTER Indica que la ubicacin para archive no deber ser registrada en el correspondiente destino. REOPEN Especifica el minimo numero de segundos antes que el servicio de transporte de redo intente re-abrir un destino fallido. SYNC and ASYNC Especifica que operaciones de E/S en la red sern hechas sincronas (SYNC) o asincronas (ASYNC), cuando proceso de archivado se realice por el proceso log writer (LGWR). TEMPLATE Define especificacion de directorio y formato de template para nombres de archivos de redo log en el destino. El template es usado para generar nombre de archivos que son diferentes del nombre por defecto definido por el parametro STANDBY_ARCHIVE_DEST y LOG_ARCHIVE_FORMAT, del destino standby. VALID_FOR Especifica cuando los servicios de transporte de redo transmitiran datos al destino, basado en los siguientes factores: * Cuando la base de datos esta corriendo en rol primario o standby. * Cuando online redo log, standby redo log, o ambos estan actualmente siendo archivados en la base de datos en ese destino.

VERIFY Indica si un proceso de archive (ARCn) debe o no escanear y verificar el contenido de un redo log archivado, local o remoto, una vez completada la operacion de archivado. Ejemplo uso algunos parmetros.
LOG_ARCHIVE_DEST_1 DB_UNIQUE_NAME=chicago' LOG_ARCHIVE_DEST_2 DB_UNIQUE_NAME=boston' = 'LOCATION=/arch1/chicago/ = 'SERVICE=boston LGWR ASYNC VALID_FOR=(ALL_LOGFILES,ALL_ROLES) VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)

ANEXO 3: PROCEDIMIENTOS STANDBY CPT.

Observaciones:
Antes de proceder con la implementacin de un ambiente standby Oracle existe una serie de aspectos que deben ser revisados para as poder asegurar un buen avance en las actividades requeridas, dichos aspectos a considerar contemplan cosas como las siguientes:

La versin del RDBMS de Oracle deben exactamente la misma en ambos nodos (Primario y Secundario), lo cual por cierto tambin incluye la puesta de parches puntuales que no aumenten explcitamente el nmero de la versin. La versin del Sistema Operativo debe ser tambin equivalente para ambos servidores tanto en versin, como en nivel de parches y modo de compilacin (32 o 64 bytes). El espacio fsico requerido a nivel de filesystem debe ser equivalente en ambos nodos, siendo el escenario ideal cuando en ambos nodos existan los mismos nombres de file systems con igual volumen disponible, en caso que esto no pueda ser factible, por lo menos deben existir otros file system con el espacio equivalente a los existentes en el nodo primario. Se debe realizar una prueba de transmisin bsica va FTP entre los nodos participantes para verificar el nivel eficiencia en la transmisin de archivos, con lo cual es posible descartar problemas a nivel de Red. En caso de que esta prueba no contemple tiempos aceptables de transmisin, entonces de inmediato es posible declarar que no ser factible armar una esquema standby Oracle, ya que este motor es estrictamente sensible ante el tiempo de transmisin. La disponibilidad de recursos tales como CPU y Memoria RAM deben ser equivalentes entre si para poder brindar el mismo nivel de servicio que se da en el nodo primario. La configuracin de parmetros de instancia bsicos debe ser equivalente entre ambas bases. La creacin de los standby redolog es un requisito para la habilitacin de los modos de proteccin Maximum Availability y Maximum Protection, bsicamente porque el proceso background lgwr escribe tanto en los redolog locales como en los standby redolog de la base standby las transacciones confirmadas. Los standby redolog deben generarse en tanto en la BD primaria como en la BD standby, la creacin en la BD primaria tiene como objeto mejorar el tiempo en el proceso de switchover.

Resolucin de Archive Gaps


Un Gap de Archive lo constituye un grupo de archivos de archivelogs generados en la base primaria, los cuales aun no han sido transmitidos hacia el nodo secundario, y por lo cual constituyen una brecha de sincronizacin de transacciones, la cual debe ser resuelta para que as la base Standby pueda reflejar inmediatamente el estado actual de la base primaria. La aparicin de estos Gaps puede tener mltiples fuentes entre las que se cuentan: problemas de redes de trabajo, problemas de operatividad del nodo secundario, ineficiente configuracin de parmetros en la base primaria, inexistencia de un listener operativo en el nodo secundario, por nombrar algunos. Una vez que los problemas que ocasionaron la generacin de gaps han sido resueltos y una vez que la base Standby ha sido restablecida a su modo de recuperacin natural (managed), dicha brecha es automticamente cubierta mediante a una sincronizacin y retransmisin de los archivos faltantes desde el nodo primario al secundario. Para que esta particularidad brinde la funcionalidad descrita es necesario que exista en el nodo secundario las siguientes definiciones, a nivel del archivo de parmetros de la base standby se deben registrar dos parmetros: Fal_Server y Fal_Client. Fal_Server: representa una entrada en el tnsnames local a travs del cual se apunta a un listener habilitado y operativo en el nodo primario, con el cual es posible establecer una conexin directa con la base primaria. Fal_Client: representa una conexin hacia la base standby local para lo cual por cierto tambin debe existir un listener habilitado y cuyo puerto de configuracin coincida con el puerto utilizado por la base primaria para conectarse remotamente hacia el nodo secundario. Ambas entradas mencionadas deben ser configuradas para operar solamente a travs del protocolo TCP de forma que se posible brindar la funcionalidad descrita. Una vez que estos parmetros estn correctamente configurados se debe levantar la base standby y finalmente activar el recover managed, a travs de lo cual comenzar a producirse la sincronizacin mencionada. En el caso de que existan problemas en este proceso se deber proceder a realizar la transmisin de los archivos manualmente, para tener una idea exacta de cuantos archivos se deben transmitir, es necesario consultar la vista v$archive_gap.

Resumen Orden subida y bajada bases de datos primaria y standby.

SUBIDA

BASE DE DATOS 2 Primaria 1 Standby

BAJADA 1 2

Subida standby en modo de recuperacin automtico.


Como usuario oracle
export ORALCE_SID=<sid_standby> sqlplus [SERVER_STDBY]$ sqlplus Enter user-name: / as sysdba Connected to an idle instance. SQL> startup nomount; SQL> alter database mount standby database; SQL> alter database recover managed standby database disconnect from session;

Bajada standby en modo de recuperacin automtico.


Como usuario oracle
export ORALCE_SID=<sid_standby> sqlplus [SERVER_STDBY]$ sqlplus Enter user-name: / as sysdba Connected. SQL> alter database recover managed standby database cancel; SQL> shutdown immediate;

Operacin de switchover manual:


1 BD Standby Cancelar el recover managed en caso de que este activo:
alter database recover managed standby database cancel;

2 BD Primaria Verificar que el nodo primario este listo para realizar un switchover:
select switchover_status from v$database;

el resultado debera entregar TO STANDBY o SESSIONS ACTIVE Cambio del rol de la base de datos primaria a standby:
alter database commit to switchover to physical standby with session shutdown; shutdown immediate startup nomount alter system set fal_server = <NetAliasPrimaria> scope=both; alter system fal_client = <NetAliasStandby> scope=both; alter system set log_archive_dest_state_2=defer scope=both; alter system set standby_archive_dest='<RutaOriginalArchivelogServidorPrimario>' scope=spfile; alter system set standby_file_management=auto scope=spfile; shutdown immediate; startup nomount; alter database mount standby database;

3 BD Standby Verificar si la base standby est lista para convertirse en primaria:


select switchover_status from v$database;

Debera entregar TO PRIMARY Si retorn SWITCHOVER PENDING se debe aplicar las transacciones que estn pendientes:
alter database recover managed standby database disconnect from session through last switchover;

Posteriormente se debe volver a ejecutar la consulta inicial de este paso.


alter database commit to switchover to primary; shutdown immediate

4 BD Primaria
alter database recover managed standby database disconnect from session;

5 BD Standby
Startup nomount alter system set log_archive_dest_2=service=NetAliasStandby lgwr scope=both; alter system set log_archive_dest_state_2=enable scope=both; shutdown immediate; startup alter system archive log current;

ANEXO 4: PRUEBA CONFIGURACION DG (broker).


Primera prueba realizada sobre mquita virtual linux redHat 4 con Oracle RAC 10.2.0.1 Instancia de base de datos RAC: RACDB Instancia de base de datos dataguard: DGRACDB

Parmetros instancia RAC: (primaria)


RACDB2.__db_cache_size=58720256 RACDB1.__db_cache_size=50331648 RACDB1.__java_pool_size=12582912 RACDB2.__java_pool_size=4194304 RACDB1.__large_pool_size=4194304 RACDB2.__large_pool_size=4194304 RACDB2.__shared_pool_size=96468992 RACDB1.__shared_pool_size=96468992 RACDB1.__streams_pool_size=0 RACDB2.__streams_pool_size=0 *.archive_lag_target=0 *.audit_file_dest='/u01/app/oracle/admin/RACDB/adump' *.background_dump_dest='/u01/app/oracle/admin/RACDB/bdump' *.cluster_database=true *.cluster_database_instances=2 *.compatible='10.2.0.1.0' *.control_files='+MY_DG2/racdb/controlfile/current.260.562151423' *.core_dump_dest='/u01/app/oracle/admin/RACDB/cdump' *.db_block_size=8192 *.db_create_file_dest='+MY_DG2' *.db_domain='' *.db_file_multiblock_read_count=16 *.db_name='RACDB' *.dg_broker_config_file1='/u02/ocfs/oradata/dg_broken/dgBrok1_racdb.dat' *.dg_broker_config_file2='/u02/ocfs/oradata/dg_broken/dgBrok2_racdb.dat' *.dg_broker_start=FALSE *.dispatchers='(PROTOCOL=TCP) (SERVICE=RACDBXDB)' *.fal_client='' *.fal_server='' RACDB1.instance_number=1 RACDB2.instance_number=2 *.job_queue_processes=10 RACDB1.local_listener='LISTENER_RACDB1' RACDB2.local_listener='LISTENER_RACDB2' *.log_archive_config='DG_CONFIG=(RACDB,DGRACDB)'#Agregado por AEA para crear Dataguard *.log_archive_dest_1='location=/u02/flash_recovery_area/RACDB' *.log_archive_dest_2='service="DBCPT1_STANDBY", ARCH SYNC NOAFFIRM db_unique_name="DGRACDB"' *.log_archive_dest_state_1='ENABLE' *.log_archive_dest_state_2='ENABLE' *.log_archive_format='%t_%s_%r.dbf' *.log_archive_max_processes=2 *.log_archive_min_succeed_dest=1 *.log_archive_trace=0 *.open_cursors=300 *.pga_aggregate_target=33554432 *.processes=150 RACDB1.remote_listener='LISTENER_RACDB2' RACDB2.remote_listener='LISTENER_RACDB1' *.remote_login_passwordfile='exclusive' *.service_names='RACDB'#Agregado por AEA para crear Dataguard *.sga_target=167772160 *.standby_archive_dest='location=/u02/flash_recovery_area/DGRACDB' *.standby_file_management='auto' RACDB1.thread=1 RACDB2.thread=2 *.undo_management='AUTO' RACDB1.undo_tablespace='UNDOTBS1' RACDB2.undo_tablespace='UNDOTBS2' *.user_dump_dest='/u01/app/oracle/admin/RACDB/udump'

Parmetros instancia DG: (standby)


DGRACDB.__db_cache_size=104857600 DGRACDB.__java_pool_size=4194304 DGRACDB.__large_pool_size=4194304 DGRACDB.__shared_pool_size=50331648 DGRACDB.__streams_pool_size=0 *.archive_lag_target=0 *.audit_file_dest='/u01/app/oracle/admin/DGRACDB/adump' *.background_dump_dest='/u01/app/oracle/admin/DGRACDB/bdump' *.compatible='10.2.0.1.0' *.control_files='+MY_DG1/dgracdb/controlfile/ctl_dtdby.ctl' *.core_dump_dest='/u01/app/oracle/admin/DGRACDB/cdump' *.db_create_file_dest='+MY_DG1' *.db_file_name_convert='+MY_DG2/RACDB/','+MY_DG1/DGRACDB/','/u02/flash_recovery_area/RACDB','/u02/flash _recovery_area/DGRACDB' *.db_name='RACDB' *.db_unique_name='DGRACDB' *.dg_broker_config_file1='/u02/ocfs/oradata/dg_broken/dgBrok1_dgracdb.dat' *.dg_broker_config_file2='/u02/ocfs/oradata/dg_broken/dgBrok2_dgracdb.dat' *.dg_broker_start=FALSE *.fal_client='DG_DBCPT1' *.fal_server='DBCPT1' *.local_listener='LISTENER_CPT' *.log_archive_config='DG_CONFIG=(RACDB,DGRACDB)' *.log_archive_dest_1='location=/u02/flash_recovery_area/DGRACDB' *.log_archive_dest_2='service=DBCPT1 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=RACDB LGWR ASYNC NOAFFIRM REOPEN=10' *.log_archive_dest_3='' *.log_archive_dest_state_1='ENABLE' *.log_archive_dest_state_2='ENABLE' *.log_archive_format='%t_%s_%r.dbf' *.log_archive_max_processes=2 *.log_archive_min_succeed_dest=1 *.log_archive_trace=0 *.log_file_name_convert='+MY_DG2/RACDB/','+MY_DG1/DGRACDB/','/u02/flash_recovery_area/RACDB','/u02/flas h_recovery_area/DGRACDB' *.pga_aggregate_target=32M *.remote_login_passwordfile='EXCLUSIVE' *.service_names='DGRACDB' *.sga_target=160M *.standby_archive_dest='location=/u02/flash_recovery_area/DGRACDB' *.standby_file_management='auto' *.undo_management='AUTO' *.undo_tablespace='UNDOTBS1' *.user_dump_dest='/u01/app/oracle/admin/DGRACDB/udump'

Configuracion listener.ora
[oracle@raclinux1 admin]$ cat listener.ora # listener.ora Network Configuration File: /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora # Generated by Oracle configuration tools. SID_LIST_LISTENER_CPT_RACLINUX1 = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1) (PROGRAM = extproc) ) ) LISTENER2_RACLINUX1 = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = raclinux1-vip.us.oracle.com)(PORT = 1522)) ) (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.203.11)(PORT = 1522)) ) ) ) LISTENER_CPT_RACLINUX1 = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = raclinux1-vip.us.oracle.com)(PORT = 1530)(IP = FIRST)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.167.130)(PORT = 1530)(IP = FIRST)) ) ) SID_LIST_LISTENER_RACLINUX1 = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc)(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)(PROGRAM = extproc)) (SID_DESC = (SID_NAME=RACDB1)(GLOBAL_DBNAME=RACDB_DGMGRL) (ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1)) (SID_DESC = (SID_NAME=DGRACDB)(GLOBAL_DBNAME=DGRACDB_DGMGRL) (ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1)) ) SID_LIST_LISTENER2_RACLINUX1 = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc)(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)(PROGRAM = extproc)) (SID_DESC = (SID_NAME=RACDB1)(GLOBAL_DBNAME=RACDB_DGMGRL) (ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1)) (SID_DESC = (SID_NAME=DGRACDB)(GLOBAL_DBNAME=DGRACDB_DGMGRL) (ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1)) ) LISTENER_RACLINUX1 = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = raclinux1-vip.us.oracle.com)(PORT = 1521)) ) (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.203.11)(PORT = 1521)) ) ) )

Configuracin tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora # Generated by Oracle configuration tools. RACDB1 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = raclinux1-vip.us.oracle.com)(PORT = 1522)) (ADDRESS = (PROTOCOL = TCP)(HOST = raclinux1-vip.us.oracle.com)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = RACDB) (INSTANCE_NAME = RACDB1) ) ) RACDB2 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = raclinux1-vip.us.oracle.com)(PORT = 1522)) (ADDRESS = (PROTOCOL = TCP)(HOST = raclinux1-vip.us.oracle.com)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = RACDB) (INSTANCE_NAME = RACDB2) ) ) RACDB-NOTAF = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = raclinux1-vip.us.oracle.com)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = raclinux1-vip.us.oracle.com)(PORT = 1522)) (LOAD_BALANCE = yes) (FAILOVER = false) (ENABLE = broken) (CONNECT_DATA = (SERVICE_NAME = RACDB) ) ) RACDB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = raclinux1-vip.us.oracle.com)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = raclinux1-vip.us.oracle.com)(PORT = 1522)) (LOAD_BALANCE = yes) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = RACDB) ) ) #Same as above just NO TAF #Configure a single clusterwide service with load-balancing # failover and TAF (Transparent Application Failover) enabled. # RETRIES is a count and DELAY is in seconds #Used for LOCAL_LISTENER & REMOTE_LISTENER configuration in init.ora # # Lets redirect to .11 not to .111 (vip ip) since remote clients may get # redirected to to IP and if port forwarding is used only .11 needs to be mapped. # also usage of IP means clients don't need to add entry to their hosts file. # # Since two instances on one node we diffrentiate by port#, first listener # on 1521, second on 1522. In real life both would be on 1521 and host would # be different.

LISTENER_RACDB2 =

(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = raclinux1-vip.us.oracle.com)(PORT = 1522)) (ADDRESS = (PROTOCOL = TCP)(HOST = raclinux1-vip.us.oracle.com)(PORT = 1521)) ) LISTENER_RACDB1 = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = raclinux1-vip.us.oracle.com)(PORT = 1522)) (ADDRESS = (PROTOCOL = TCP)(HOST = raclinux1-vip.us.oracle.com)(PORT = 1521)) ) LISTENERS_RACDB = (ADDRESS_LIST = (ADDRESS = (PROTOCOL (ADDRESS = (PROTOCOL (ADDRESS = (PROTOCOL (ADDRESS = (PROTOCOL )

= = = =

TCP)(HOST TCP)(HOST TCP)(HOST TCP)(HOST

= = = =

192.168.203.11)(PORT = 1521)) 192.168.203.11)(PORT = 1522)) raclinux1-vip.us.oracle.com)(PORT = 1522)) raclinux1-vip.us.oracle.com)(PORT = 1521))

RACDB-TAF = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = raclinux1-vip.us.oracle.com)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = raclinux1-vip.us.oracle.com)(PORT = 1522)) (LOAD_BALANCE = yes) (ENABLE = broken) (CONNECT_DATA = (SERVICE_NAME = RACDB) (FAILOVER_MODE = (TYPE = SELECT) (METHOD = BASIC) (RETRIES = 80) (DELAY = 5) ) ) ) LISTENER_+ASM1 = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.203.11)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.203.11)(PORT = 1522)) ) DBCPT1 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = raclinux1-vip.us.oracle.com)(PORT = 1522)) (ADDRESS = (PROTOCOL = TCP)(HOST = raclinux1-vip.us.oracle.com)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = RACDB) ) ) DBCPT1_STANDBY = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = raclinux1-vip.us.oracle.com)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = DGRACDB) ) )

DG_DBCPT1 =

(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = raclinux1-vip.us.oracle.com)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = DGRACDB) ) ) RACDB1 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = raclinux1-vip.us.oracle.com)(PORT = 1522)) (ADDRESS = (PROTOCOL = TCP)(HOST = raclinux1-vip.us.oracle.com)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = RACDB) (INSTANCE_NAME = RACDB1) ) ) RACDB2 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = raclinux1-vip.us.oracle.com)(PORT = 1522)) (ADDRESS = (PROTOCOL = TCP)(HOST = raclinux1-vip.us.oracle.com)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = RACDB) (INSTANCE_NAME = RACDB2) ) ) LISTENER_CPT = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = raclinux1-vip.us.oracle.com)(PORT = 1521)) )

Configuracin realizada para DG.


Archivos de configuracin para DG, necesitan estar accesible por ambas instancias de la primaria en un storage compartido (RAC).
alter system set dg_broker_start=true scope=both sid='*'; dgmgrl DGMGRL> connect sys/oracle@DBCPT1 DGMGRL> CREATE CONFIGURATION BRK_RACDB_CONFIG AS PRIMARY DATABASE IS RACDB CONNECT IDENTIFIER IS DBCPT1; DGMGRL> show configuration Configuration Name: BRK_RACDB_CONFIG Enabled: NO Protection Mode: MaxPerformance Fast-Start Failover: DISABLED Databases: RACDB - Primary database Current status for "BRK_RACDB_CONFIG": DISABLED DGMGRL> SHOW DATABASE 'RACDB'; Database Name: RACDB Role: PRIMARY Enabled: NO Intended State: OFFLINE Instance(s): RACDB1 RACDB2 Current status for "RACDB": DISABLED DGMGRL> ADD DATABASE DGRACDB AS CONNECT IDENTIFIER IS DBCPT1_STANDBY MAINTAINED AS PHYSICAL; DGMGRL> show configuration Configuration Name: BRK_RACDB_CONFIG Enabled: NO Protection Mode: MaxPerformance Fast-Start Failover: DISABLED Databases: RACDB - Primary database dgracdb - Physical standby database Current status for "BRK_RACDB_CONFIG": DISABLED DGMGRL> ENABLE CONFIGURATION; Enabled. DGMGRL> show configuration Configuration Name: brk_racdb_config Enabled: YES Protection Mode: MaxPerformance Fast-Start Failover: DISABLED Databases: racdb - Primary database dgracdb - Physical standby database

Current status for "brk_racdb_config": SUCCESS DGMGRL> Solo si la primaria y el dataguard estan en la misma mquina, agregar al tns LISTENER_CPT = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = raclinux1-vip.us.oracle.com)(PORT = 1521)) ) luego agregar al init del DG *.local_listener=LISTENER_CPT

ANEXO 5: PROCEDIMIENTOS OPERADORES CPT (check standby).

*.- Identificar archivos de archivelog no transferidos a base standby.


Ejecutar el siguiente SQL en base de datos primaria, para cada una de las instancias del RAC..
SELECT local.thread#, local.sequence# FROM (SELECT thread#, sequence# FROM v$archived_log WHERE dest_id=1) local WHERE local.sequence# NOT IN (SELECT FROM WHERE AND /

sequence# v$archived_log dest_id=2 thread# = local.thread#)

OBS: Si la query no retorna datos => Todo bien.

*.- Si la query retorna datos, se deben identificar los nombres de archivelogs faltantes:
Ejecutar el siguiente SQL en la base de datos primaria, para cada una de las instancias del RAC (Este SQL recibe los numeros de secuencia inicial y final, reportados en el SQL anteriror).
SELECT FROM WHERE AND AND / NAME V$ARCHIVED_LOG THREAD#=1 DEST_ID=1 SEQUENCE# BETWEEN &SEC_INICIAL AND &SEC_FINAL

*.- Validar si archivelogs se encuentran en la ubicacion reportada por la base de datos (resultado SQL anterior), ya sea ne filesystem o en ASM.
La causa ms probable de esta situacin es que archivos de archivelog, pueden haberse borrado y no alcanzaron a enviarse a la base standby. Este borrado puede haber sido producto de los respaldos periodicos de la base de datos. Para resolver esta situacin, vastar identificar respaldo de archivelogs y restaurarlos la ubicacin reportada. Automaticamente la base standby identificar los correspondientes archivos de archivelog y los aplicar solucionandose automaticamente el gap. De no corresponde a esta situacin, se deber notificar al DBA, para que este realice en anlisis de situacin correspondiente y ejecute las acciones correctivas necesarias.

*.- Validar GAPS en base standby.


Ejecutar el siguiente SQL en la base de datos standby.
alter session set nls_date_format='DD/MM/YYYY HH24:MI:SS'; select TIMESTAMP||'|'||MESSAGE from V$DATAGUARD_STATUS where message like '%GAP%' /

Este SQL retornar los mensajes de GAP, detectados por el dataguard y cu correspondiente fecha de reporte. Identificar archivelogs no aplicados en la standby:
SELECT completion_time,thread#,sequence#, applied FROM v$archived_log where applied='NO' order by completion_time,thread#,sequence# /

Este SQL reportar el listado de los archivelogs que la base standby no ha aplicado, estos datos deben corroborarse con los datos del SQL anterior para establecer si se trata de un GAP. Identificar archivelogs aplicados en la standby:
SELECT completion_time,thread#,sequence#, applied FROM v$archived_log where applied='YES' order by completion_time,thread#,sequence# /

S-ar putea să vă placă și