Guia definitiva de instalacion de un Oracle DataGuard para la version 10g 10.2.0.1.

Aqui les dejo un paso a paso hecho por mis propias manitas:

Oracle 10g – Creando manualmente un Dataguard Físico-Standby

Oracle 10g Data Guard es una excelente herramienta para asegurar la alta disponibilidad, protección de datos y restauración ante desastres que viene integrado con la Oracle 10g Enterprise Edition. Este ejemplo es para la versión 10.2.0.1. La base de datos Primaria y secundaria se encuentran en dos ordenadores diferentes llamado el primario ORCLA y el secundario ORCLB, se utilizara Flash Recovery Area, y OMF.
I. Antes de empezar:
1. Nos aseguraremos de que el sistema operativo y las características del hardware son idénticas en ambos nodos.
Debemos instalar el software de ORACLE en los dos NODOS con los siguientes datos:
BBDD PRIMARIA SID=ORCLA
BBDD STANDBY SID=ORCLB
También asegurarnos de que los directorios en ambos ordenadores son idénticos, es decir el ORACLE_HOME.
3. Comprobaremos que la base de datos Standby funciona correctamente.
II. Bien, en la base de datos Primaria:
1. Habilitaremos el forced logging en nuestra base de datos Primaria:
SQL> ALTER DATABASE FORCE LOGGING;
2. Crearemos un archive de contraseñas en:
$cd %ORACLE_HOME%\database
$orapwd file=pwdORCLA.ora password=sys force=y
(Nota: sys es la contraseña por defecto que ponemos siempre en la instalación)
3. Configurando los Standby Redo log.
1) El tamaño de todos los Standby redo log deben ser idénticos a los que hay en la bbdd Primaria. Podemos comprobarlo con el siguiente comando:
SQL> select bytes from v$log;
BYTES
----------
52428800
52428800
52428800

3) Creando los grupos de Standby Redo log.
La base de datos Primaria por defecto siempre trae 3 redologs así que crearemos otros 3 para el Standby, utilizaremos el siguiente comando:
SQL>ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 SIZE 50M;
SQL>ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 SIZE 50M;
SQL>ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 SIZE 50M;
4) Para verificar que se han creado correctamente podemos lanzar el siguiente comando:
SQL>select * from v$Standby_log;
4. Habilitando el archivelog en la bbdd Primaria.
Si la base de datos no esta en modo Archive log, con los siguientes comandos la habilitaremos para dicha opción:
SQL>shutdown immediate;
SQL>startup mount;
SQL>alter database archivelog;
SQL>alter database open;
SQL>archive log list;
5. Creando y configurando el pfile:
Crearemos una copia del spfile a un archive pfile para ello lanzaremos el siguiente comando:
SQL>create pfile=’c:\orcla.ora’ from spfile;

2) Editamos el orcla.ora para agregar los parámetros de la bbdd Primaria y la de Standby:
orcla.__db_cache_size=83886080
orcla.__java_pool_size=4194304
orcla.__large_pool_size=4194304
orcla.__shared_pool_size=71303168
orcla.__streams_pool_size=0
*.archive_lag_target=0
*.audit_file_dest='c:\oracle\product\10.2.0/admin/orcla/adump'
*.background_dump_dest='c:\oracle\product\10.2.0/admin/orcla/bdump'
*.compatible='10.2.0.1.0'
*.control_files='c:\oracle\product\10.2.0/oradata/orcla/\control01.ctl','c:\oracle\product\10.2.0/oradata/orcla/\control02.ctl','c:\oracle\product\10.2.0/oradata/orcla/\control03.ctl'
*.core_dump_dest='c:\oracle\product\10.2.0/admin/orcla/cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='ORCLA'
*.db_recovery_file_dest='c:\oracle\product\10.2.0/flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.DB_UNIQUE_NAME='ORCLA'
*.dg_broker_start=TRUE
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclaXDB)'
*.fal_client='ORCLA'
*.fal_server='ORCLB'
*.inORCLBce_name='ORCLSID'
*.job_queue_processes=10
*.log_archive_config='dg_config=(ORCLB)'
*.log_archive_dest_1='LOCATION=C:\oracle\product\10.2.0\oradata\orcla VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=ORCLA'
orcla.log_archive_dest_1='location="C:\oracle\product\10.2.0\oradata\orcla"','valid_for=(ONLINE_LOGFILE,ALL_ROLES)'
*.log_archive_dest_2='service="(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=SRV-002)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=ORCLB_XPT)(INORCLBCE_NAME=ORCLSID)(SERVER=dedicated)))"',' ARCH SYNC NOAFFIRM delay=0 OPTIONAL max_failure=0 max_connections=1 reopen=300 db_unique_name="ORCLB" register net_timeout=180 valid_for=(online_logfile,ORCLAary_role)'
*.log_archive_dest_state_1='ENABLE'
orcla.log_archive_dest_state_1='ENABLE'
*.log_archive_dest_state_2='ENABLE'
*.log_archive_format='DBSID_%t_%s_%r.arc'
orcla.log_archive_format='DBSID_%t_%s_%r.arc'
*.log_archive_max_processes=2
*.log_archive_min_succeed_dest=1
orcla.log_archive_trace=0
*.log_checkpoint_interval=10000
*.log_checkpoint_timeout=1800
*.open_cursors=300
*.pga_aggregate_target=16777216
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=167772160
orcla.Standby_archive_dest=''
*.Standby_file_management='auto'
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='c:\oracle\product\10.2.0/admin/orcla/udump'

6. Ahora que hemos modificado el pfile le diremos a oracle que utilice a partir de ahora nuestro pfile para ello debemos convertirlo a spfile con el siguiente comando:
SQL> shutdown immediate;
SQL> startup nomount pfile=’c:\orcla.ora’;
SQL>create spfile from pfile=’c:\orcla.ora’;
SQL>shutdown immediate;
SQL>Startup;

Fin de los pasos para el servidor primario, en la página siguiente empieza las operativas para el de Standby.





III. Configurando la bbdd Standby:
1) Creamos una copia de la los datafiles y redologs de la Primaria a la de Standby (los control files de la primaria no son necesarios).
En la base de datos Primaria, pararemos la bbdd:
SQL>shutdown immediate;
En la bbdd secundaria, pararemos también la bbdd y renombraremos el directorio entero de E:\oracle\product\10.2.0\oradata\ORCLB por el E:\oracle\product\10.2.0\oradata\ORCLB_OLD.
Luego crearemos un nuevo directorio ORCLB en E:\oracle\product\10.2.0\oradata\
Y otro directorio en E:\oracle\product\10.2.0\oradata\ llamado ORCLA, es decir que el árbol de directorios debe quedar así:
E:\oracle\product\10.2.0\oradata\ORCLA
E:\oracle\product\10.2.0\oradata\ORCLB
2) Copiamos los datafiles (dbf) y los redologs desde la Primaria es decir todos los archivos que están en E:\oracle\product\10.2.0\oradata\ORCLA a E:\oracle\product\10.2.0\oradata\ORCLB.
3) Verificaremos que los directorios de a continuación existen: E:\oracle\product\10.2.0\oradata\ORCLB\ONLINELOG y E:\Oracle\flash_recovery_area\ORCLB\ONLINELOG.

2. Crearemos un control file para la bbdd Standby (desde la Primaria):
En la bbdd Primaria lanzamos el siguiente comando:
SQL>startup mount;
SQL>alter database create Standby controlfile as ‘ORCLB.ctl;
SQL>ALTER DATABASE OPEN;
Una vez lanzado el comando para la creación del control file del Standby, lo copiaremos desde la ubicación de la bbdd Primaria C:\oracle\product\10.2.0\db_1\database\ORCLB.ctl a E:\oracle\product\10.2.0\oradata\
3. Ahora debemos crear el archivo de parámetros para la base de datos secundaria, para ello crearemos un nuevo documento de texto y copiaremos lo que viene a continuación:
orclb.__db_cache_size=100663296
orclb.__java_pool_size=4194304
orclb.__large_pool_size=4194304
orclb.__shared_pool_size=54525952
orclb.__streams_pool_size=0
*.aq_tm_processes=0
*.archive_lag_target=0
*.audit_file_dest='c:\oracle\product\10.2.0/admin/orclb/adump'
*.background_dump_dest='c:\oracle\product\10.2.0/admin/orclb/bdump'
*.compatible='10.2.0.1.0'
*.control_files='c:\oracle\product\10.2.0/oradata/orclb/\stand.ctl'
*.core_dump_dest='c:\oracle\product\10.2.0/admin/orclb/cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='ORCLA'
*.db_recovery_file_dest='c:\oracle\product\10.2.0/flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.db_unique_name='orclb'
*.dg_broker_start=TRUE
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclaXDB)'
*.fal_client='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=SRV-002)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=ORCLB_XPT)(INSTANCE_NAME=ORCLSID)(SERVER=dedicated)))'
*.fal_server='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=SRV-001)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=ORCLA_XPT)(SERVER=dedicated)))'
*.instance_name='ORCLSID'
*.job_queue_processes=0
*.log_archive_config='dg_config=(ORCLA)'
*.log_archive_dest_1='LOCATION=C:\oracle\product\10.2.0\oradata\orclb VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=ORCLB'
orclb.log_archive_dest_1='location="C:\oracle\product\10.2.0\oradata\orclb"','valid_for=(ALL_LOGFILES,ALL_ROLES)'
*.log_archive_dest_2='SERVICE=ORCLA ARCH SYNC NOAFFIRM delay=0 OPTIONAL max_failure=0 reopen=300 register VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ORCLB'
*.log_archive_dest_state_1='ENABLE'
orclb.log_archive_dest_state_1='ENABLE'
*.log_archive_dest_state_2='DEFER'
*.log_archive_format='DBSID_%t_%s_%r.arc'
orclb.log_archive_format='DBSID_%t_%s_%r.arc'
*.log_archive_max_processes=2
*.log_archive_min_succeed_dest=1
*.log_archive_start=true
*.log_archive_trace=0
orclb.log_archive_trace=0
*.log_checkpoint_interval=10000
*.log_checkpoint_timeout=1800
*.open_cursors=300
*.pga_aggregate_target=16777216
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=167772160
orclb.standby_archive_dest='C:\oracle\product\10.2.0\oradata\orclb'
*.standby_file_management='auto'
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='c:\oracle\product\10.2.0/admin/orclb/udump'

4. En la bbdd secundaria comprobaremos que los directorios adump, bdump, cdump, udump, y los destinos de los archived log para la bbdd de Standby existan.
6. Ahora copiaremos el archivo de contraseña que hemos creado que se encuentra en C:\oracle\product\10.2.0\db_1\database en la bbdd Primaria y lo a la misma ubicación en la bbdd de Standby.
7. Si el servicio ORCLB no esta creado en la bbdd Standby lo crearemos con el siguiente comando:…
$oradim –NEW –SID ORCLB –STARTMODE manual
Configuración del listener.ora y tnsnames.ora:

LISTENER.ORA DE LA BBDD PRIMARIA:
# listener.ora Network Configuration File: c:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\listener.ora
# Generated by Oracle configuration tools.

LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = SRV-001)(PORT = 1521))
)

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = )
(ORACLE_HOME = C:\oracle\product\10.2.0\db_1)
(SID_NAME = orclsid)
)
)
TNSNAMES.ORA DE LA BASE DE DATOS PRIMARIA:
# tnsnames.ora Network Configuration File: c:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora
# Generated by Oracle configuration tools.
ORCLB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = SRV-002)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ORCLB)
)
)

ORCLA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = SRV-001)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ORCLA)
)
)

ORCLSID =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = ORCLSID))
(ADDRESS = (PROTOCOL = TCP)(HOST = SRV-001)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ORCLSID)
)
)
LISTENER.ORA DE LA BBDD STANDBY:
# listener.ora Network Configuration File: c:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\listener.ora
# Generated by Oracle configuration tools.

LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = SRV-002)(PORT = 1521))
)

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = )
(ORACLE_HOME = C:\oracle\product\10.2.0\db_1)
(SID_NAME = orclsid)
)
)
TNSNAMES.ORA DE LA BBDD STANDBY:
# tnsnames.ora Network Configuration File: c:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora
# Generated by Oracle configuration tools.

ORCLB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = SRV-002)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ORCLB)
)
)

ORCLA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = SRV-001)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ORCLA)
)
)

ORCLSID =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = ORCLSID))
(ADDRESS = (PROTOCOL = TCP)(HOST = SRV-002)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ORCLSID)
)
)
Reiniciaremos los servicios de listener en ambos ordenadores, luego debemos comprobar que las variables de entorno de ambas bbdd sean correctas.
Set ORACLE_HOME y ORACLE_SID.
11. Iniciaremos la bbdd de Standby con el parámetro nomount para cargar el parámetro de configuración pfile y utilizarlo en esta bbdd y generar un spfile.
SQL>startup nomount pfile=’c:\orclb.ora’;
SQL>create spfile from pfile=’c:\orclb.ora’;
SQL>shutdown immediate;
SQL>startup mount;
Ahora habilitaremos el envío de los redologs con los siguientes comandos “desde la primaria”:
SQL> alter system set LOG_ARCHIVE_DEST_state_2=enable scope=both;

SQL> alter system switch logfile;


Arrancando la Standby:

La instancia de standby se debe ejecutar en modo startup nomount. Esta base de datos nunca debe ser abierta ya que sino invalidaremos el estado STANDBY, en consecuencia para que los datos se recuperen en dicha STANDBY a continuación los comandos para que la bbdd quede en standby:
1. Utilizando el SQL*Plus nos conectaremos a la bbdd de standby:
SQL> CONNECT / AS SYSDBA
2. Iniciaremos la instancia de la bbdd de oracle sin montar la misma por ejemplo:
SQL> STARTUP NOMOUNT;

3. Montamos la bbdd en modo standby de la siguiente manera:
SQL> ALTER DATABASE MOUNT STANDBY DATABASE;
Lanzando recuperacion:
Modo de recuperación administrado permite automatizar la aplicación de los redologs a la bbdd de standby, para ello debemos lanzar el siguiente comando:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;
Si queremos lanzarlo de modo manual, lo podemos hacer de la siguiente manera:
SQL> RECOVER STANDBY DATABASE;
Este último comando invoca la recuperación y aplicación manual de los redologs, si al ejecutar el comando nos da un error de Oracle de que el medio no se ha recuperado es decir el siguiente error:
SQL> recover managed Standby database disconnect
ORA-01153: an incompatible media recovery is active

Lanzamos el siguiente comando:

RECOVER MANAGED STANDBY DATABASE CANCEL;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
Parada y Arranque de la bbdd:
Existe un orden del cual se debe respetar para que no se desincronizen las base de datos primaria y standby, estos son los pasos:

Iniciaremos la bbdd de standby y listeners antes que la bbdd primaria.

Pararemos primero la bbdd primaria y luego la de standby.
Posibles errores de archivado:
Si encontramos error de archivado en la bbdd de standby, debemos chequear el estado de los mismos y si detectamos problemas debemos lanzar el siguiente comando:
SQL> alter system set log_archive_dest_2='service=DBSID_DG2 ARCH SYNC NOAFFIRM delay=0 OPTIONAL max_failure=0 reopen=300 register';
Si el dataguard esta activado este paso se hace automaticamente:
Si el archivado en la bbdd primaria se ha parado, por posibles fallos de disco lleno, para reparar dicho problema debemos lanzar el siguiente comando:
SQL >archive log start


Configurando el DGMGRL (DataGuard Manager):
El dataguard manager o dgmgrl es una aplicación propia de Oracle para facilitar la transición de estados de primaria a standby y viceversa, en vez de utilizar por línea de comando varias opciones.
Desde el SQLPLUS lanzamos la sentencia para comprobar el nombre de la bbdd en la que estamos trabajando:
SQL> show parameter db_unique_name;

NAME TYPE VALUE
-------------------------- -------------------- -------------------------
db_unique_name string ORCLA
SQL>

Luego activaremos el dgmgrl con el siguiente comando, siempre desde el SQLPLUS:

SQL> alter system set dg_broker_start=true scope=both;

Ahora comprobaremos la configuración del dgmgrl:

SQL> show parameter dg

NAME TYPE VALUE
-------------------------- -------------------- -------------------------
dg_broker_config_file1 string
‘’
dg_broker_config_file2 string ‘’

dg_broker_start boolean TRUE

alter system set dg_broker_start = true;


Ahora lanzaremos el dgmgrl para configurarlo desde cero, desde el cmd lanzamos el comando dgmgrl:

C:\>dgmgrl

DGMGRL for Windows: Version 10.1.0.2.0 Production

Copyright (c) 2000, 2004, Oracle. All rights reserved.

Welcome to DGMGRL, type "help" for information.

Nos conectamos a la instancia:

DGMGRL> connect /
Connected.




Comprobamos si existe configuración:

DGMGRL> show configuration
Error: ORA-16532: Data Guard broker configuration does not exist.

unable to describe configuration

Si obtenemos el error anterior quiere decir que el archivo de configuración no existe y debemos crearlo como se muestra a continuación:

DGMGRL> create configuration 'DBSID_DG' AS
> primary database is 'ORCLA'
> connect identifier is ORCLA;
Configuration "DBSID_DG" created with primary database "DBSID_dg2".

Comprobamos si ahora existe configuración:

DGMGRL> show configuration

Configuration
Name: DBSID_DG
Enabled: NO
Protection Mode: MaxPerformance
Databases:
ORCLA - Primary database

Current status for "DBSID_DG":
DISABLED

Ahora agregaremos la bbdd de standbyu:

DGMGRL> add database 'ORCLB' as
> connect identifier is ORCLB
> maintained as physical;
Database "ORCLB" added.

Comprobamos si ahora existen los dos sid ORCLA y ORCLB:

DGMGRL> show configuration

Configuration
Name: DBSID_DG
Enabled: NO
Protection Mode: MaxPerformance
Databases:
ORCLA - Primary database
ORCLB - Physical standby database

Current status for "DBSID_DG":
DISABLED

Como podemos comprobar podemos ver la configuración pero todavía no esta activa, por eso el estado DISABLED.


Activamos la configuración:

DGMGRL> enable configuration;
Enabled.

Comprobamos nuevamente si ya están los dos sid ORCLA y ORCLB y si el estado ha cambiado de DISABLED a SUCCESS.

DGMGRL> show configuration

Configuration
Name: DBSID_DG
Enabled: YES
Protection Mode: MaxPerformance
Databases:
ORCLA - Primary database
ORCLB - Physical standby database

Current status for "DBSID_DG":
SUCCESS

DGMGRL>

Eso quiere decir que ya podemos en cualquier momento hacer la transición desde un nodo a otro.


Cambiando de Swithover/Failover en la bbdd de Standby:

Modo manual sin el dgmgrl:
Lanzamos el SQLPLUS con los siguientes comandos:
sqlplus / as sysdba

SQL*Plus: Release 10.1.0.5.0 - Production on Fri Mar 9 16:41:19 2007

Copyright (c) 1982, 2005, Oracle. All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.1.0.5.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options

SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

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

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;

Database altered.

SQL> shutdown immediate;
ORA-01507: database not mounted


ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.

Total System Global Area 1577058304 bytes
Fixed Size 1322520 bytes
Variable Size 400282088 bytes
Database Buffers 1174405120 bytes
Redo Buffers 1048576 bytes
Database mounted.
SQL>
Ahora la base de datos primaria ha pasado a standby fisico. Esto se utiliza para poder seguir reparar la bbdd en caso de fallo o avería y delegar el control a la otra bbdd.
Modo dgmgrl (dataguard):
Para realizar la transición de la bbdd de uno a otro debemos realizar la siguiente operación, desde el DGMGRL lanzamos el comando switchover y lo apuntamos al nodo o sid que necesitemos alternar es decir que si ahora la bbdd primaria es la ORCLA y esta tiene problemas, debemos apuntar el comando switchover a la que tengamos libre o disponible que en este caso de ejemplo es la ORCLB.
DGMGRL> switchover to "ORCLB";
Performing switchover NOW. Please wait...
Operation requires shutdown of instance "DBSID" on database "ORCLA".
Shutting down instance "DBSID"...
ORA-01017: invalid username/password; logon denied

You are no longer connected to ORACLE
Please connect again.
Unable to shut down instance "DBSID".
You must shut down instance "DBSID" manually.
Operation requires shutdown of instance "DBSID" on database "ORCLA".
You must shut down instance "DBSID" manually.
Operation requires startup of instance "DBSID" on database "ORCLB".
You must start instance "DBSID" manually.
Operation requires startup of instance "DBSID" on database "ORCLA".
You must start instance "DBSID" manually.
Switchover succeeded. New primary is "ORCLB"
DGMGRL>

Como podemos comprobar ya se ha efectuado la transición y ahora ya tenemos conexión con la base de datos.

Si queremos volver a dejar como primaria la base de datos original después de reparar el error debemos lanzar el comando switchover apuntando a la ORCLA nuevamente.
Posibles errores:

Error ORA-16607 al lanzar el comando SHOW CONFIGURATION en el dgmgrl:

Debemos chequear que ambas bbdd esten utilizando el spfile creado, si no es así crearlo, otro error relacionado es que nos hemos olvidado de copiar el archivo de password que creamos al principio de este tutorial.

Error ORA-16608 al lanzar el SWITCHOVER en el dgmgrl:

Posiblemente sea por el mismo error anterior y su solución, lo que pasa es que cambia el código de error por que el comando es diferente.

Error ORA-16675 durante el SWITCHOVER en el dgmgrl:

Debemos asegurarnos de que la base de datos de standby esta montada y que esta en modo recovery, sino lo esta lanzamos un STARTUP MOUNT y luego ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT; , esperaremos un par de segundo s y volvemos a lanzar el comando switchover.
Error ORA-12514 durante el SWITCHOVER en el dgmgrl:
ORA-12514: TNS:listener does not currently know of service requested in connect, este error se debe a que el dgmgrl esta solicitando al listener un parámetro y este no lo tiene configurado o no es el mismo.
Fin del documento.
Share on Google Plus
    Blogger Comment

2 comentarios:

Luis dijo...

Buenas
gracias por tu step by step...Lo he aplicado, pero me sale un error, esper que me puedas explicar porque me sale esto:

veras en el alert log de la primary (orcla en tu caso) tengo esto:

ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
PING[ARC0]: Heartbeat failed to connect to standby 'stndby'. Error is 12514.
Fri Jun 18 12:58:07 2010
Error 12514 received logging on to the standby
Fri Jun 18 12:58:07 2010
Errors in file /exlibris/app/oracle/admin/primary/bdump/primary_arc0_30214.trc:
ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
PING[ARC0]: Heartbeat failed to connect to standby 'stndby'. Error is 12514.


Si hago un ping si que funciona:

$tnsping stndby

TNS Ping Utility for Linux: Version 10.2.0.4.0 - Production on 18-JUN-2010 13:00:04

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 = eole.greendata.es)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = stndby)))

y en el init.ora tengo esto:

*.log_archive_dest_2='SERVICE=stndby LGWR ASYNC ....

Entonces no entiendo este error.
esto es el listener de la primary:

LISTENER_PRIMARY =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = verde.greendata.es)(PORT = 1521)(IP = FIRST))
)
)
sid_list_listener_test=(sid_list=
(sid_desc=
(global_name=primary)
(sid_name=primary)
(oracle_home=/exlibris/app/oracle/product/102)
)
(sid_desc=
(global_name=stndby)
(sid_name=stndby)
(oracle_home=/exlibris/app/oracle/product/102)
)
)

y aqui el TNSNAMES:
LISTENER_TEST =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = verde.greendata.es)(PORT = 1521)(IP = FIRST))
)
)
STNDBY =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = eole.greendata.es)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = stndby)
)
)

PRIMARY =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = verde.greendata.es)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = primary)
)
)

Gracias si puedes ayudar

darz dijo...

cual es el tiempo promedio para lograr dejar habilitado el dataguard. Entiendo que con 4 horas de trabajo se puede llegar a configurar perfectamnente por un DBA senior
Saludos,