Vous êtes sur la page 1sur 14

Gerencia de Sistemas y Tecnología

Título: 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

1
Gerencia de Sistemas y Tecnología
Título: Creacion Physical Standby Database – Oracle Data Guard
Autor: Pablo Rubino
Fecha: 10/08/2010

Índice
Objetivo: ............................................................................................................................................................... 3
Información: ........................................................................................................................................................... 3
Formas de implementación: ........................................................................................................................................ 3
Pasos de la implementación ....................................................................................................................................... 4
1. Creacion de directorio de backup temporal: ........................................................................................................ 4
1. Generar Backup con RMAN:........................................................................................................................... 4
2. Copia del backup generado al servidor donde se creara la base Standby: ................................................................. 5
3. Generacion de directorios para Base standby: ..................................................................................................... 5
4. Configuración de tnsnames.ora en ambos ambientes: ............................................................................................ 5
5. Configuración de archivos de parámetros(initXXXX.ora) de ambas instancias:.............................................................. 7
6. Levantar la base standby en modo “nomount”: ................................................................................................... 9
7. Bajar la base de datos primaria y levantar con el nuevo archivo de parámetros: ......................................................... 9
8. Creacion de standby database con RMAN(asumiendo que la estructura física de las 2 bases de datos son idénticas): ...... 10
9. Inicio de la base de datos standby en nomount: ............................................................................................... 11
10. Montar la base de datos en modo standby: ..................................................................................................... 11
11. Generar switches de Redo log: ..................................................................................................................... 11
12. Verificacion de funcionamiento de Oracle Data Guard: ......................................................................................... 12

2
Gerencia de Sistemas y Tecnología
Título: Creacion Physical Standby Database – Oracle Data Guard
Autor: Pablo Rubino
Fecha: 10/08/2010

Objetivo:
Documentar la creación de una base de datos standby (física) con la solución de Oracle Data-Guard.

Información:
Oracle Data Guard es una solución de alta disponibilidad de las bases de datos que provee la creación de una o
mas bases en forma “standby” para proteger los datos ante fallas, desastres o corrupción de datos.- Esta
solución permite configurar uno o mas ambientes de replicación que sirvan como contingencia en caso de que
el servidor de producción(primario) pierda la capacidad de brindar servicio.- La solución de Oracle Data Guard
se encuentra disponible y sin costo con la versión de Oracle Database Enterprise edition.-

Formas de implementación:
Hay 2 formas de implementar una base de datos standby física:
• Manual
• Utilizando la herramienta RMAN(recovery manager)

En este informe se detallan las tareas realizadas con RMAN

3
Gerencia de Sistemas y Tecnología
Título: Creacion Physical Standby Database – Oracle Data Guard
Autor: Pablo Rubino
Fecha: 10/08/2010

Pasos de la implementación
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
CRIXUS, la base de datos standby=SALVIUS.
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 realización de un hot Backup, para este caso
se hace un backup manual a los fines de crear la Physical Standby database. La conexión se
realiza en el servidor primario.-

Conexión 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 estándar 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

4
Gerencia de Sistemas y Tecnología
Título: Creacion Physical Standby Database – Oracle Data Guard
Autor: Pablo Rubino
Fecha: 10/08/2010

2. Copia del backup generado alal servidor donde se creara la base


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

4. Configuración de tnsnames.ora
tnsnames.ora en ambos ambientes:
Para la replicación de los datos, ambas bases de datos deben “verse” a través de los servicios
de listener.
Configuración 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)
)
)
Configuración 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)
)
)

5
Gerencia de Sistemas y Tecnología
Título: Creacion Physical Standby Database – Oracle Data Guard
Autor: Pablo Rubino
Fecha: 10/08/2010

Verificación de la conexión 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)
Verificación de la conexión 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

6
Gerencia de Sistemas y Tecnología
Título: Creacion Physical Standby Database – Oracle Data Guard
Autor: Pablo Rubino
Fecha: 10/08/2010

5. Configuración de archivos de parámetros(initXXXX.ora)


parámetros(initXXXX.ora) de ambas instancias:
Este paso es sumamente importante para poder configurar, activar y administrar la base de datos
física standby y activar Data Guard.-
Configuracion de archivo de parámetros 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'

7
Gerencia de Sistemas y Tecnología
Título: Creacion Physical Standby Database – Oracle Data Guard
Autor: Pablo Rubino
Fecha: 10/08/2010

Configuracion de archivo de parámetros 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 parámetros de la base de
datos Standby.

8
Gerencia de Sistemas y Tecnología
Título: 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 parámetros 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'

7. Bajar la base de datos primaria


primaria y levantar con el nuevo archivo de parámetros:
Se hace un shutdown de la base de datos primaria para levantarla con el nuevo archivo de
parámetros
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.

9
Gerencia de Sistemas y Tecnología
Título: Creacion Physical Standby Database – Oracle Data Guard
Autor: Pablo Rubino
Fecha: 10/08/2010

Startup de base primaria y creación 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.

8. Creacion de standby database con RMAN(asumiendo


RMAN(asumiendo que la estructura física de las 2 bases de
datos son idénticas):
En el servidor primario, conectamos a RMAN.
Conexión a RMAN
Conexión 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 Tecnología
Título: 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 parámetros 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 log:


log:
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 configuración de Oracle Dataguard ya esta finalizada. Se deben ejecutar una serie de consultas
para verificar que la replicación esta funcionando correctamente.

11
Gerencia de Sistemas y Tecnología
Título: 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 están 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 aplicación del archivelog con secuencia 116, en la primer consulta se había
generado pero no se había aplicado, ya en la segunda consulta se muestra el archivelog con
secuencia 116.-

12
Gerencia de Sistemas y Tecnología
Título: 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 CLIENT_P SEQUENCE# STATUS


--------- -------- ---------- ------------
ARCH ARCH 0 CONNECTED
ARCH ARCH 0 CONNECTED
ARCH ARCH 0 CONNECTED
MRP0 N/A 118 WAIT_FOR_LOG
RFS N/A 0 IDLE
RFS UNKNOWN 0 IDLE
RFS LGWR 118 IDLE

7 filas seleccionadas.

13
Gerencia de Sistemas y Tecnología
Título: 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:
NOTA: Esta implementacion de Data Guard, fue configurada sin habilitar Real-
Real-Time apply,
apply esta
opción 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

Vous aimerez peut-être aussi