Hoy vamos a ver un a entrada rápida de como eliminamos un DR de una configuración de dataguard.
Tenemos un entorno donde tenemos 2 Physycal standby y queremos eliminar la primera de ellas TEST_STBY1
Comprobemos la configuración de nuestro entorno, nos conectamos a la primaria y ejecutamos:
-bash-4.2$ . oraenv
ORACLE_SID = [oracle] ? TEST
The Oracle base has been set to /opt/app/oracle
-bash-4.2$ export ORACLE_SID=TEST
-bash-4.2$ dgmgrl /
DGMGRL> show configuration verbose;
Configuration - DR_TWO_STANDBY
Protection Mode: MaxPerformance
Databases:
TEST - Primary database
TEST_STBY1 - Physical standby database
TEST_STBY2 - Physical standby database
Properties:
FastStartFailoverThreshold = '30'
OperationTimeout = '30'
FastStartFailoverLagLimit = '30'
CommunicationTimeout = '180'
FastStartFailoverAutoReinstate = 'TRUE'
FastStartFailoverPmyShutdown = 'TRUE'
BystandersFollowRoleChange = 'ALL'
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS
DGMGRL> show database 'TEST_STBY1';
Database - TEST_STBY1
Role: PHYSICAL STANDBY
Intended State: APPLY-ON
Transport Lag: 14 hours 4 minutes 14 seconds
Apply Lag: 14 hours 4 minutes 14 seconds
Real Time Query: OFF
Instance(s):
TEST
Database Status:
SUCCESS
Tenemos claro que es la que queremos eliminar , de echo, podemos ver como lleva 14 horas. de retraso .
Para eliminarla ejecutaremos el comando Remove Database , si vemos el ejemplo, poderes ver como siempre ponemos el nombre de la base de datos entre comillas simples, en caso de no hacerlo, el dataguard lo tomará como minúsculas
DGMGRL> disable database 'TEST_STBY1';
Disabled.
DGMGRL> remove database 'TEST_STBY1';
Removed database "TEST_STBY1" from the configuration
DGMGRL> show configuration verbose;
Configuration - MyTEST_STBY1
Protection Mode: MaxPerformance
Databases:
TEST - Primary database
TEST_STBY2 - Physical standby database
Properties:
FastStartFailoverThreshold = '30'
OperationTimeout = '30'
FastStartFailoverLagLimit = '30'
CommunicationTimeout = '180'
FastStartFailoverAutoReinstate = 'TRUE'
FastStartFailoverPmyShutdown = 'TRUE'
BystandersFollowRoleChange = 'ALL'
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS
DGMGRL> quit
Ya lo hemos eliminado, pero , deberemos de comprobar en nuestra base de datos primaria que no hemos dejado restos, para ello, buscaremos que los servicios y los destinos de archivado estén limpios de nuestra configuración anterior.
-bash-4.2$ sqlplus "/as sysdba"
SQL> set linesize 800;
SQL> show parameter log_archive_dest_
NAME TYPE VALUE
log_archive_dest_1 string location=USE_DB_RECOVERY_FILE_
DEST, valid_for=(ALL_LOGFILES,
ALL_ROLES)
log_archive_dest_2 string service="TEST_STBY1", LGWR ASYNC NOAFFIRM
log_archive_dest_3 string service="TEST_STBY2", LGWR ASYNC NOAFFIRM
SQL> show parameter log_archive_config;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_config string dg_config=(TEST,TEST_STBY1,TEST_STBY2)
Podemos ver como el broker no ha limpiado la configuración, por lo que lo haremos nosotros a mano
SQL> alter system set log_archive_dest_2='' scope=both;
SQL> alter system set log_archive_config='dg_config=(TEST,TEST_STBY2)' scope=both;
SQL> show parameter log_archive_config;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_config string dg_config=(TEST,TEST_STBY)
SQL> show parameter log_archive_dest_
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_1 string location=USE_DB_RECOVERY_FILE_
DEST, valid_for=(ALL_LOGFILES,
ALL_ROLES)
log_archive_dest_2 string
log_archive_dest_3 string service="TEST_STBY2", LGWR ASYNC NOAFFIRM
SQL>
Con esto, podremos afirmar que nuestra configuración está limpia