Error: ORA-12514: TNS:listener does not currently know of service requested in connect descriptor dgmrl

Problema

PRIMARY SITE: Dos Nodos

En la configuracion del Dataguard Broker, al habilitar los procesos DMON, cuando intenta conectar con la base STANDBY, nos arroja el siguiente error:

Errors in file /u01/oracle/PROD/db/11.2.0.4/admin/PROD_srvebsdbpa/diag/rdbms/prod/PROD/trace/PROD_ora_27714.trc:
ORA-16038: log 2 sequence# 666656 cannot be archived
ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
ORA-00312: online log 2 thread 1: '/data1/oracle/PROD/db/apps_st/redo1/PROD_redog2m1.rdo'
ORA-00312: online log 2 thread 1: '/data1/oracle/PROD/db/apps_st/redo2/PROD_redog2m2.rdo'
USER (ospid: 27714): terminating the instance due to error 16038

Solucion

Editar el archivo listener.ora en ambos nodos y agregamos la entrada para DGMGRL

Esto previene la aparicion del error ORA-12154 que podemos observar al momento de startup de la standby database luego de realizar un switchover o al momento de comenzar con la sincronizacion luego de terminar de configuarar una instancia de dataguard , utilizando el feature dataguard broker.

Asegurase de que el GLOBAL_DBNAME esta seteado bajo la siguiente nomenclatura db_unique_name_DGMGRL.db_domain

SID_LIST_LISTENER =
  (SID_LIST =
 (SID_DESC =
        (GLOBAL_DBNAME = <DB_UNIQUE_NAME>_dgmgrl)
        (ORACLE_HOME = /u01/oracle/product/11.2.0/db_1)
        (SID_NAME = PRODAT)
        )
)

how to install java manually in ubuntu

Como parte de las tareas de  instalacion de productos para la construccion de un ambiente bigdata, con versionado controlado o uso de diferentes componentes de java en diferentes versiones , realizo siempre una instalacion manual.

Comenzamos la tarea con el download del binario de java realizando la descarga desde aqui:

Free Java Download

Podriamos realizar la instalacion desde el repositorio mediante el apt-get install, en este caso yo prefiero contar con todas las herramientas por debajo de /opt/hadoop y dar un mantenimiento de versionado en general.

Finalizado el download del file, descomprimimos el archivo tar.

 hadoop@srvhadoopt4:/opt/TEMP_INST$ tar -xvf jre-8u151-linux-x64.tar.gz

Procedimiento

Ahora configuramos java en nuestro sistema operativo Ubuntu.

Error 1033 received logging on to the standby

Estuvimos armado una STANDBY en el dia de ayer, como un segundo sitio de contingencia, por que tenemos programado realizar una migracion a 12c.

Como nuestro cliente no tiene licencias de Oracle Golden Gate, la estrategia de llevar la data al nuevo servidor, fue la opcion de Oracle Dataguard.

Para ello:

Nuestro Plan fue llevar desde el PRIMARY SITE a una segunda STBY SITE por medio de la configuracion de Dataguard Broker.

Problema

En este caso y como parte de las tareas planificadas se decidio que el equipo local lleve a cabo las tareas de configuracion.

Al ejecutar el siguiente comando para habilitar la configuracion el DG_BROKER en el STBY SITE:

ALTER SYSTEM SET DG_BROKER_START = TRUE;

Notamos que habilitaron el envio de los redo, a pesar no haber terminado la configuracion del borker.

En el PRIMARY SITE , al ver que estaba habilitado el envio de los redo, se intento agregar la instancia al broker:

DGMGRL>
add database "PRODAR" as connect identifier is "PRODAR" maintained as physical;
Error: ORA-01033: ORACLE initialization or shutdown in progress

Failed.

Esto dio la orden en el sitio primario que comience con el envio de redo, pero notaron que no los enviaba y que el alert log comenzo a mostrar el error: Error 1033 received logging on to the standby

How to DROP DATABASE

Despues de haber tenido el correspondiente feedback del customer, y de luego de un periodo prudencial dentro de la planificacion,  el cliente decidio que ya no habia vuelta atras, y comenzamos con las tareas finales de liberar el ambiente viejo.

Finalizada la etapa de  migracion de 11.2.0.4 a 12.1.0.4 y del GO Live utilizando el producto Oracle Golden Gate, decidimos ejecutar uno de los comandos mas bellos y que es ocupado en pocas ocaciones, DROP DATABASE.

Procedimiento

Al usar el comando DROP DATABASE debemos tener en cuenta que el mismo realizara un delete de la base de datos.

Redirecting an Oracle Restore Using SET NEWNAME

Estamos en proceso de migracion de bases de datos a nuevas versiones, y como parte del proceso, en los clientes donde no tienen licencia para OGG, procedemos con la opcion de generar un Dataguars y luego realizar el UPGRADE.

Como las versiones de las cuales migramos hacia 12.2 son 11gR2, o 12c1, de bases que no estaban bajo la tecnologia de ASM, y si en filesystem procedemos a utilizar las opciones en el restore el set de comandos:

  • SET NEWNAME FOR DATABASE
  • SET NEWNAME FOR TABLESPACE

Con estos comandos es importante espcificar las varibles de paths de discos, para evitar problemas y que las piezas se restoreen donde es indicado:

Problema

En este caso en particular, el inconveniente que nos encontramos fue:

El TABLESPACE SYSTEM, contenia datafiles con el mismo nombre en el path /data01/datafiles y el path /data02/datafiles , provenientes del SOURCE y no teniendo habilitada la caracteristica OMF:

channel ORA_DISK_16: restoring datafile 00073 to +DATA_EXA2A/undotbs1.002.dbf
channel ORA_DISK_16: restoring datafile 00086 to +DATA_EXA2A/a_txn_data23.dbf
channel ORA_DISK_16: reading from backup piece /backup/EBSPROD/full_backup_diario_dbf_PROD_20180118_t965701613_p1_s92352.bkp
channel ORA_DISK_12: ORA-19870: error while restoring backup piece /backup/EBSPROD/full_backup_diario_dbf_PROD_20180118_t965698895_p1_s92347.bkp
ORA-19504: failed to create file "+DATA_EXA2A/system12.dbf"
ORA-17502: ksfdcre:4 Failed to create file +DATA_EXA2A/system12.dbf
ORA-15005: name "system12.dbf" is already used by an existing alias

Procedimiento

Para evitar colicionamiento de nombres, hay que especificas al menos una de las varibles, donde sustituiremos el nombre de los datafiles repetidos provenientes de diferentes filesystems.

1 comment on “Oracle Redirected Restore File Name Variables”

Oracle Redirected Restore File Name Variables

En la siguiente tabla podemos encontrar el listado de las variables que podemos especificar al momento de redireccionar nuestras piezas (Pieces from a backupset pieces on restore.)

Estas nos ayudaran a trabajar en el redireccionamiento de almacenamiento en nuestros nuevos TARGETS:

Variable Description
%U Note: This variable covers most cases.This variable specifies a system-generated unique file name with the following format:

data-D-%d_id-%I_TS-%N_FNO-%f.

The %d variable specifies the database name. For example, data-D-prod_id-22398754_TS-users_FNO-7.

%b This variable specifies the file name without the fully qualified directory path. For example, the data file name /oradata/prod/financial.dbf becomes financial.dbf.This variable preserves the names of the data files while you move them to different directory. You can use this variable when you create an image copies. The variable cannot be used for OMF data files or backup sets.
%f Specifies the absolute file number of the data file for which the new name is generated. For example, if data file 2 is duplicated, then %f generates the value 2.
%I This variable is optional and specifies the database ID (DBID).
%N This variable is optional and specifies the tablespace name.

ORA-15124: ASM file name contains an invalid alias name

El error aparece en el momento de realizar cualesquieras de las siguientes tareas:

  • startup mount
  • startup nomount

En nuestro caso en particular ocurre en el momento de montaje luego de realizar el restore del controlfile.

RMAN> sql 'alter database mount standby database';
ORA-15124: ASM file name '+DATA_EXA2A/ebsprod/controlfile/current.695.965565833' contains an invalid alias name

La solucion ofrecida:

  • Cambiar los db_file_name_conver de forma prolija
  • Verificar que tenga commilas simple y que esten debidamente separadas.
SQL> alter system set log_file_name_convert='/data1/oracle/PROD/db/apps_st/data','+DATA_EXA2A','/data2/oracle/PROD/db/apps_st/data','+DATA_EXA2A','/data1/oracle/PROD/db/apps_st/archives','+RECO_EXA2A' scope=spfile sid='*';

Entendiendo las diferencias:

Antes
-----
'/data1/oracle/PROD/db/apps_st/data,+DATA_EXA2A','/data2/oracle/PROD/db/apps_st/data,+DATA_EXA2A','/data1/oracle/PROD/db/apps_st/archives,+RECO_EXA2A'

Despues
-------
'/data1/oracle/PROD/db/apps_st/data','+DATA_EXA2A','/data2/oracle/PROD/db/apps_st/data','+DATA_EXA2A','/data1/oracle/PROD/db/apps_st/archives','+RECO_EXA2A'