Está en la página 1de 14

Gerencia de Sistemas y Tecnologa Ttulo: Creacion Physical Standby Database Oracle Data Guard Autor: Pablo Rubino Fecha:

: 10/08/2010

INFORME DE CREACION DE PHYSICAL STANDABY (SALVIUS) DATABASE ORACLE DATA GUARD

Gerencia de Sistemas y Tecnologa Ttulo: Creacion Physical Standby Database Oracle Data Guard Autor: Pablo Rubino Fecha: 10/08/2010

ndice
Objetivo: ............................................................................................................................................................... 3 Informacin: ........................................................................................................................................................... 3 Formas de implementacin: ........................................................................................................................................ 3 Pasos de la implementacin ....................................................................................................................................... 4 1. 1. 2. 3. 4. 5. 6. 7. 8. 9. Creacion de directorio de backup temporal: ........................................................................................................ 4 Generar Backup con RMAN:........................................................................................................................... 4 Copia del backup generado al servidor donde se creara la base Standby: ................................................................. 5 Generacion de directorios para Base standby: ..................................................................................................... 5 Configuracin de tnsnames.ora en ambos ambientes: ............................................................................................ 5 Configuracin de archivos de parmetros(initXXXX.ora) de ambas instancias:.............................................................. 7 Levantar la base standby en modo nomount: ................................................................................................... 9 Bajar la base de datos primaria y levantar con el nuevo archivo de parmetros: ......................................................... 9 Creacion de standby database con RMAN(asumiendo que la estructura fsica de las 2 bases de datos son idnticas): ...... 10 Inicio de la base de datos standby en nomount: ............................................................................................... 11

10. Montar la base de datos en modo standby: ..................................................................................................... 11 11. 12. Generar switches de Redo log: ..................................................................................................................... 11 Verificacion de funcionamiento de Oracle Data Guard: ......................................................................................... 12

Gerencia de Sistemas y Tecnologa Ttulo: Creacion Physical Standby Database Oracle Data Guard Autor: Pablo Rubino Fecha: 10/08/2010

Objetivo:
Documentar la creacin de una base de datos standby (fsica) con la solucin de Oracle Data-Guard.

Informacin:
Oracle Data Guard es una solucin de alta disponibilidad de las bases de datos que provee la creacin de una o mas bases en forma standby para proteger los datos ante fallas, desastres o corrupcin de datos.- Esta solucin permite configurar uno o mas ambientes de replicacin que sirvan como contingencia en caso de que el servidor de produccin(primario) pierda la capacidad de brindar servicio.- La solucin de Oracle Data Guard se encuentra disponible y sin costo con la versin de Oracle Database Enterprise edition.-

Formas de implementacin:
Hay 2 formas de implementar una base de datos standby fsica: Manual Utilizando la herramienta RMAN(recovery manager) En este informe se detallan las tareas realizadas con RMAN

Gerencia de Sistemas y Tecnologa Ttulo: Creacion Physical Standby Database Oracle Data Guard Autor: Pablo Rubino Fecha: 10/08/2010

Pasos de la implementacin
1. Creacion de directorio de backup temporal: Se utilizara para guardar los archivos de backup que se utilizaran para crear la base de datos standby. De aca en mas la base de datos primaria=CRIXUS la base de datos standby=SALVIUS. CRIXUS, CRIXUS SALVIUS. Entonces en el servidor primario (Itanium): oracle@itanium:~>mkdir -p /backups/temporales en este directorio se guardaran los archivos de backup de la base de datos. Este mismo directorio se debe crear en el servidor en donde se creara la base de datos Standby (ItaniumCPA): oracle@ItaniumCPA:~>mkdir -p backups/temporales 1. Generar Backup con RMAN: Si bien se han generado scripts automaticos para la realizacin de un hot Backup, para este caso se hace un backup manual a los fines de crear la Physical Standby database. La conexin se realiza en el servidor primario.Conexin a RMAN(base de datos primaria):

oracle@itanium:~>rman target / Recovery Manager: Release 10.2.0.4.0 - Production on Tue Aug 10 13:42:18 2010 Copyright (c) 1982, 2007, Oracle. All rights reserved. connected to target database: CRIXUS (DBID=2532321402) RMAN> Configuracion del canal de backup:
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/home/oracle/backups/temporales/backupH_%d_set%s_piece%c_%T.rma';

Este canal queda configurado como estndar para los backups pero luego se puede cambiar, o bien usar otro formato en los scripts de backups. Ejecucion del backup: RMAN> backup database include current controlfile for standby plus archivelog; El backup se genera en /home/oracle/backups/temporales:
oracle@itanium:~/backups/temporales>ll total 1,4G -rw-r----- 1 oracle oinstall 331M 2010-08-10 10:36 backupH_CRIXUS_set34_piece1_20100810.rma -rw-r----- 1 oracle oinstall 1,1G 2010-08-10 10:37 backupH_CRIXUS_set35_piece1_20100810.rma -rw-r----- 1 oracle oinstall 7,0M 2010-08-10 10:37 backupH_CRIXUS_set36_piece1_20100810.rma -rw-r----- 1 oracle oinstall 9,0K 2010-08-10 10:37 backupH_CRIXUS_set37_piece1_20100810.rma

Gerencia de Sistemas y Tecnologa Ttulo: Creacion Physical Standby Database Oracle Data Guard Autor: Pablo Rubino Fecha: 10/08/2010

al base 2. Copia del backup generado al servidor donde se creara la base Standby: Se realiza la copia mediante scp al directorio generado en el punto 1.Copia de archivos de backup:
oracle@itanium:~/backups/temporales>scp * oracle@172.29.190.180:/home/oracle/backups/temporales/

3. Generacion de directorios para Base standby: Teniendo en cuenta que la base de datos standby tendr la misma estructura que la primary, se deben crear todos los directorios(en el servidor donde se iniciara la standby)afectados a una instancia: oracle@ItaniumCPA:~>mkdir -p /u02/oradata/SALVIUS/archives oracle@ItaniumCPA:~>mkdir -p /u01/app/oracle/admin/SALVIUS/udump oracle@ItaniumCPA:~> mkdir -p /u01/app/oracle/admin/SALVIUS/bdump oracle@ItaniumCPA:~> mkdir -p /u01/app/oracle/admin/SALVIUS/cdump oracle@ItaniumCPA:~> mkdir -p /u01/app/oracle/admin/SALVIUS/pfile oracle@ItaniumCPA:~> mkdir -p /u01/app/oracle/admin/SALVIUS/adump oracle@ItaniumCPA:~> mkdir -p /u01/app/oracle/admin/SALVIUS/cpdump oracle@ItaniumCPA:~> mkdir -p /u01/app/oracle/oradata/SALVIUS tnsnames.ora 4. Configuracin de tnsnames.ora en ambos ambientes: Para la replicacin de los datos, ambas bases de datos deben verse a travs de los servicios de listener. Configuracin de tnsnames.ora en servidor primario, se agrega la siguiente entrada en el archivo tnsnames.ora:
SALVIUS = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.29.190.180)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = SALVIUS)(UR=A) ) )

Configuracin de tnsnames.ora en servidor de la base de datos standby, se agrega la siguiente entrada en el archivo tnsnames.ora:
CRIXUS = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.29.190.179)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = CRIXUS) ) )

Gerencia de Sistemas y Tecnologa Ttulo: Creacion Physical Standby Database Oracle Data Guard Autor: Pablo Rubino Fecha: 10/08/2010

Verificacin de la conexin desde el servidor de base de datos Standby: oracle@ItaniumCPA:/u01/app/oracle/oradata/SALVIUS>tnsping CRIXUS TNS Ping Utility for Linux IA64: Version 10.2.0.4.0 - Production on 10-AUG-2010 15:36:29 Copyright (c) 1997, 2007, Oracle. All rights reserved. Used parameter files: Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.29.190.179)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = CRIXUS))) OK (0 msec) Verificacin de la conexin desde el servidor de base de datos Primaria: oracle@itanium:/u01/app/oracle/product/10.2.0/db_1>tnsping SALVIUS TNS Ping Utility for Linux IA64: Version 10.2.0.4.0 - Production on 10-AUG-2010 15:37:26 Copyright (c) 1997, 2007, Oracle. All rights reserved. Used parameter files: Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.29.190.180)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = SALVIUS)(UR=A))) OK (0 msec) Se agrega el modulo UR=A ya que la base de datos standby, puede al levantar en forma nomount, puede quedar con status BLOCKED generando el error ora-12528:TNS:Listener:All
Appropriate instances are blocking new connections

Gerencia de Sistemas y Tecnologa Ttulo: Creacion Physical Standby Database Oracle Data Guard Autor: Pablo Rubino Fecha: 10/08/2010

parmetros(initXXXX.ora) 5. Configuracin de archivos de parmetros(initXXXX.ora) de ambas instancias: Este paso es sumamente importante para poder configurar, activar y administrar la base de datos fsica standby y activar Data Guard.Configuracion de archivo de parmetros de base primaria (initCRIXUSDG.ora) initCRIXUSDG.ora)
CRIXUS.__db_cache_size=188743680 CRIXUS.__java_pool_size=4194304 CRIXUS.__large_pool_size=4194304 CRIXUS.__shared_pool_size=88080384 CRIXUS.__streams_pool_size=0 *.audit_file_dest='/u01/app/oracle/admin/CRIXUS/adump' *.background_dump_dest='/u01/app/oracle/admin/CRIXUS/bdump' *.compatible='10.2.0.3.0' *.control_files='/u01/app/oracle/oradata/CRIXUS/control01.ctl','/u02/oradata/CRIXUS/control02.ctl','/u03/oradata/CRI XUS/control03.ctl' *.core_dump_dest='/u01/app/oracle/admin/CRIXUS/cdump' *.db_block_size=8192 *.db_domain='' *.db_file_multiblock_read_count=16 *.db_name='CRIXUS' *.dispatchers='(PROTOCOL=TCP) (SERVICE=CRIXUSXDB)' *.job_queue_processes=10 *.log_archive_config='DG_CONFIG=(CRIXUS,SALVIUS)' *.log_archive_dest_1='LOCATION=/u02/oradata/CRIXUS/archives VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=CRIXUS' *.log_archive_dest_2='SERVICE=SALVIUS LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=SALVIUS' *.log_archive_dest_state_1=ENABLE *.log_archive_dest_state_2=ENABLE *.log_archive_max_processes=3 *.standby_file_management=AUTO #*.log_archive_dest_1='LOCATION=/u02/oradata/CRIXUS/archives' *.log_archive_format='CRIXUS_%t_%s_%r.arc' *.standby_archive_dest='/u02/oradata/CRIXUS/archives' *.fal_server='SALVIUS' *.fal_client='CRIXUS' *.open_cursors=300 *.pga_aggregate_target=96468992 *.processes=150 *.remote_login_passwordfile='EXCLUSIVE' *.sga_target=290455552 *.undo_management='AUTO' *.undo_tablespace='UNDOTBS1' *.user_dump_dest='/u01/app/oracle/admin/CRIXUS/udump'

Gerencia de Sistemas y Tecnologa Ttulo: Creacion Physical Standby Database Oracle Data Guard Autor: Pablo Rubino Fecha: 10/08/2010

Configuracion de archivo de parmetros de base standby (initSALVIUSDG.ora) initSALVIUSDG.ora)


SALVIUS.__db_cache_size=188743680 SALVIUS.__java_pool_size=4194304 SALVIUS.__large_pool_size=4194304 SALVIUS.__shared_pool_size=88080384 SALVIUS.__streams_pool_size=0 *.audit_file_dest='/u01/app/oracle/admin/SALVIUS/adump' *.background_dump_dest='/u01/app/oracle/admin/SALVIUS/bdump' *.compatible='10.2.0.3.0' #*.control_files='/u01/app/oracle/oradata/SALVIUS/control01.ctl' *.core_dump_dest='/u01/app/oracle/admin/SALVIUS/cdump' *.db_block_size=8192 *.db_domain='' *.db_file_multiblock_read_count=16 *.db_name='CRIXUS' *.db_unique_name='SALVIUS' *.dispatchers='(PROTOCOL=TCP) (SERVICE=SALVIUSXDB)' *.job_queue_processes=10 *.log_archive_config='DG_CONFIG=(CRIXUS,SALVIUS)' *.log_archive_dest_1='LOCATION=/u02/oradata/SALVIUS/archives VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=SALVIUS' *.log_archive_dest_2='SERVICE=CRIXUS VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=CRIXUS' *.log_archive_dest_state_1=ENABLE *.log_archive_dest_state_2=ENABLE *.log_archive_format='CRIXUS_%t_%s_%r.arc' *.log_archive_max_processes=3 *.standby_file_management=AUTO *.standby_archive_dest='/u02/oradata/SALVIUS/archives' *.fal_server='CRIXUS' *.fal_client='SALVIUS' *.open_cursors=300 *.pga_aggregate_target=96468992 *.processes=150 *.remote_login_passwordfile='EXCLUSIVE' *.sga_target=290455552 *.undo_management='AUTO' *.undo_tablespace='UNDOTBS1' *.user_dump_dest='/u01/app/oracle/admin/SALVIUS/udump' *.DB_FILE_NAME_CONVERT='CRIXUS','SALVIUS' *.LOG_FILE_NAME_CONVERT='/u02/oradata/CRIXUS','/u02/oradata/SALVIUS'

Importante: En el caso de que los nombres de las instancias sean distintos(como es este caso) se deben agregar las 2 lineas marcadas en el cuadro en el archivo de parmetros de la base de datos Standby.

Gerencia de Sistemas y Tecnologa Ttulo: Creacion Physical Standby Database Oracle Data Guard Autor: Pablo Rubino Fecha: 10/08/2010

6. Levantar la base standby en modo nomount: Se debe levantar la instancia, solo se levantan los procesos oracle ya que la base de datos aun no esta creada. Se levanta con el archivo de parmetros generado en el punto 6(en este caso el de la base standby) oracle@ItaniumCPA:/u01/app/oracle/oradata/SALVIUS>export ORACLE_SID=SALVIUS oracle@ItaniumCPA:/u01/app/oracle/oradata/SALVIUS>sqlplus /as sysdba SQL*Plus: Release 10.2.0.4.0 - Production on Tue Aug 10 15:59:14 2010 Copyright (c) 1982, 2007, Oracle. All Rights Reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> startup nomount pfile='$ORACLE_HOME/dbs/initSALVIUSDG.ora' primaria 7. Bajar la base de datos primaria y levantar con el nuevo archivo de parmetros: Se hace un shutdown de la base de datos primaria para levantarla con el nuevo archivo de parmetros oracle@ItaniumCPA:/u01/app/oracle/oradata/SALVIUS>export ORACLE_SID=CRIXUS oracle@ItaniumCPA:/u01/app/oracle/oradata/SALVIUS>sqlplus /as sysdba SQL*Plus: Release 10.2.0.4.0 - Production on Tue Aug 10 15:59:14 2010 Copyright (c) 1982, 2007, Oracle. All Rights Reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> shut immediate Database closed Database dismounted ORACLE instance shut down.

Gerencia de Sistemas y Tecnologa Ttulo: Creacion Physical Standby Database Oracle Data Guard Autor: Pablo Rubino Fecha: 10/08/2010

Startup de base primaria y creacin del nuevo spfile (hacer un resguardo del actual antes de generar uno nuevo) oracle@ItaniumCPA:/u01/app/oracle/oradata/SALVIUS>sqlplus /as sysdba SQL*Plus: Release 10.2.0.4.0 - Production on Tue Aug 10 15:59:14 2010 Copyright (c) 1982, 2007, Oracle. All Rights Reserved. Connected to an idle instance. SQL> startup pfile='$ORACLE_HOME/dbs/initCRIXUSDG.ora' Oracle instance started Total System Global Area 2276634624 bytes Fixed Size 1300068 bytes Variable Size 570427804 bytes Database Buffers 1694498816 bytes Redo Buffers 10407936 bytes Database mounted. Database opened. SQL> create spfile from pfile. File created. RMAN(asumiendo 8. Creacion de standby database con RMAN(asumiendo que la estructura fsica de las 2 bases de datos son idnticas): En el servidor primario, conectamos a RMAN. Conexin a RMAN Conexin a RMAN a las 2 instancias, primary y auxiliary oracle@itanium:~>rman target / auxiliary sys/managed@SALVIUS Recovery Manager: Release 10.2.0.4.0 - Production on Tue Aug 10 16:25:28 2010 Copyright (c) 1982, 2007, Oracle. All rights reserved. connected to target database: CRIXUS (DBID=2532321402) connected to auxiliary database: SALVIUS (DBID=2532321402) RMAN>duplicate target database for standby nofilenamecheck dorecover; Esto realiza un restore de los archivos de la base primaria al servidor de la base de datos standby y luego realiza un recover.

10

Gerencia de Sistemas y Tecnologa Ttulo: Creacion Physical Standby Database Oracle Data Guard Autor: Pablo Rubino Fecha: 10/08/2010

9. Inicio de la base de datos standby en nomount: Si la base de datos esta ya levantada en estado nomount, se realiza un shutdown immediate para levantarla nuevamente con el archivo de parmetros para Standby. En el servidor de la base de datos Standby: SQL> startup nomount pfile='$ORACLE_HOME/dbs/initSALVIUSDG.ora' ORACLE instance started. Total System Global Area 293601280 bytes Fixed Size 2056008 bytes Variable Size 96477368 bytes Database Buffers 188743680 bytes Redo Buffers 6324224 bytes SQL> SQL> SQL> 10. Montar la base de datos en modo standby: Se cambia el estado de la base de datos para que la misma se monte en modo standby SQL> alter database mount standby database; Database altered. SQL> alter database recover managed standby database disconnect; Database altered. 11. Generar switches de Redo llog: og: Se realizan para verificar que se aplican los mismos en la base de datos standby SQL> alter system switch logfile; System altered. SQL> / System altered. La configuracin de Oracle Dataguard ya esta finalizada. Se deben ejecutar una serie de consultas para verificar que la replicacin esta funcionando correctamente.

11

Gerencia de Sistemas y Tecnologa Ttulo: Creacion Physical Standby Database Oracle Data Guard Autor: Pablo Rubino Fecha: 10/08/2010

12. Verificacion de funcionamiento de Oracle Data Guard: Se ejecutan las siguientes consultas para verificar que los archivelogs se estn aplicando de forma correcta: Verifica archiveslogs replicados y copiados
SQL> select sequence#, first_time,next_time 2 from v$ARCHIVED_LOG order by sequence#; SEQUENCE# FIRST_TIM NEXT_TIME ---------- --------- --------111 10-AUG-10 10-AUG-10 112 10-AUG-10 10-AUG-10 113 10-AUG-10 10-AUG-10 114 10-AUG-10 10-AUG-10 115 10-AUG-10 10-AUG-10 116 10-AUG-10 10-AUG-10 6 rows selected. SQL> select sequence#,applied from v$archived_log order by sequence#; SEQUENCE# APP ---------- --111 YES 112 YES 113 YES 114 YES 115 YES 116 NO 6 rows selected. SQL> / SEQUENCE# APP ---------- --111 YES 112 YES 113 YES 114 YES 115 YES 116 YES 6 rows selected.

Se observa la aplicacin del archivelog con secuencia 116, en la primer consulta se haba generado pero no se haba aplicado, ya en la segunda consulta se muestra el archivelog con secuencia 116.-

12

Gerencia de Sistemas y Tecnologa Ttulo: Creacion Physical Standby Database Oracle Data Guard Autor: Pablo Rubino Fecha: 10/08/2010

Determina la ubicacion y el proceso creador de los archives redo log files SQL>SELECT NAME, CREATOR, SEQUENCE#, APPLIED, COMPLETION_TIME FROM V$ARCHIVED_LOG
NAME CREATOR SEQ# APP COMPLETIO ------------------------------------------------------------------------------------------/u02/oradata/SALVIUS/archives/CRIXUS_1_111_722957245.arc ARCH 111 YES 10-AGO-10 /u02/oradata/SALVIUS/archives/CRIXUS_1_112_722957245.arc ARCH 112 YES 10-AGO-10 /u02/oradata/SALVIUS/archives/CRIXUS_1_113_722957245.arc ARCH 113 YES 10-AGO-10 /u02/oradata/SALVIUS/archives/CRIXUS_1_114_722957245.arc LGWR 114 YES 10-AGO-10 /u02/oradata/SALVIUS/archives/CRIXUS_1_115_722957245.arc LGWR 115 YES 10-AGO-10 /u02/oradata/SALVIUS/archives/CRIXUS_1_116_722957245.arc ARCH 116 YES 10-AGO-10

Monitoreo de los procesos activos


sys@salvius> SELECT PROCESS, CLIENT_PROCESS, SEQUENCE#, STATUS FROM V$MANAGED_STANDBY; PROCESS --------ARCH ARCH ARCH MRP0 RFS RFS RFS CLIENT_P SEQUENCE# STATUS -------- ---------- -----------ARCH 0 CONNECTED ARCH 0 CONNECTED ARCH 0 CONNECTED N/A 118 WAIT_FOR_LOG N/A 0 IDLE UNKNOWN 0 IDLE LGWR 118 IDLE

7 filas seleccionadas.

13

Gerencia de Sistemas y Tecnologa Ttulo: Creacion Physical Standby Database Oracle Data Guard Autor: Pablo Rubino Fecha: 10/08/2010

Determinar que log files no fueron aplicados en la base de datos standby(se ejecuta en la primary)
sys@CRIXUS> SELECT LOCAL.THREAD#, LOCAL.SEQUENCE# FROM 2 (SELECT THREAD#, SEQUENCE# FROM V$ARCHIVED_LOG WHERE DEST_ID=1) LOCAL 3 WHERE LOCAL.SEQUENCE# NOT IN 4 (SELECT SEQUENCE# FROM V$ARCHIVED_LOG WHERE DEST_ID=2 AND 5 THREAD# = LOCAL.THREAD#) THREAD# SEQUENCE# ---------- ---------1 93 1 94 1 95 1 96 1 97 1 98 1 99 1 100 1 101 1 102 1 103 1 104 1 105 1 106 1 107 1 108 1 109 1 110

18 filas seleccionadas. NOTA: Realapply, NOTA: Esta implementacion de Data Guard, fue configurada sin habilitar Real-Time apply esta opcin se puede habilitar y permite aplicar los datos de redo logs online en la base de datos standby a medida que son recibidos sin esperar que se archive el current standby redolog.

14

También podría gustarte