Monday, July 8, 2013

ERROR OGG-00868 : (12514) ORA-12514: TNS:listener does not currently know of service requested in connect descriptor

ERROR   OGG-00868  Attaching to ASM server +ASM1: (12514) ORA-12514: TNS:listener does not currently know of service requested in connect descriptor

When we are connecting to the Golden gate's Source database as RAC and with ASM then you nedd to create the ASM services in the Listener .. the asm Services will be blocked always science it is not allowed to connect remotely.. follow the steps to create the entry  in the listener.ora file and tnsnames.ora files for the asm instance and create the service's and the remote connection 

Step 1

Add the entries for the  ASM instance in the listener.ora file  check the listener has the services for the ASM

oracle@db01[PROD]:$  lsnrctl services LISTENER_db01 |grep ASM
oracle@db02[PROD]:$  lsnrctl services LISTENER_db02 |grep ASM

IF there is no services for asm then it will not return any rows we need to create the new services for the ASM .. to create the new services for ASM edit the listener.ora and tnsnames.ora file 
 Here we have assumed the paractice for two node cluster if you have n number of nodes then you shoud   create the respective ASM Instance's entry in each Node's

In Node 1 Listener make an entry for the ASM 1 Instance

SID_LIST_LISTENER_db01 =
  (SID_LIST =
    (SID_DESC = (ORACLE_HOME = /prod01/app/oracle/db/10.2.0)(SID_NAME = PROD1))
     (SID_DESC =(GLOBAL_DBNAME  = +ASM)(SID_NAME = +ASM1)(ORACLE_HOME =/prod01/app/oracle/asm/10.2.0 ))
        (SID_DESC = (SID_NAME = PLSExtProc)(ORACLE_HOME = /prod01/app/oracle/db/10.2.0)(PROGRAM = extproc))
)
 
IN Node two Listener Make the entry of ASM2 instance

SID_LIST_LISTENER_db02 =
  (SID_LIST =
    (SID_DESC = (ORACLE_HOME = /prod01/app/oracle/db/10.2.0)(SID_NAME = PROD2))
     (SID_DESC =(GLOBAL_DBNAME  = +ASM) (SID_NAME = +ASM2)(ORACLE_HOME =/prod01/app/oracle/asm/10.2.0 ))
       (SID_DESC = (SID_NAME = PLSExtProc)(ORACLE_HOME = /prod01/app/oracle/db/10.2.0)(PROGRAM = extproc))
  )
Once the listener files had been edited then edit the tnsnames.ora file for adding the entries for the 

In Node 1 add the entries to the tnsnames.ora file  for asm instance

ASM
+ASM1 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = <host name>)(PORT = <port number>))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = +ASM)
        (UR=A)
 ))
In Node 2 add the entries to the  tnsnames.ora file for asm instance
 
+ASM2 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = <host name>)(PORT = <port number>))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = +ASM)
       (UR=A)

Step 2
Check the Local_Listener parameter in the ASM instnace's

IN ASM Instance 1
SQL> show parameter LOCAL
NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ------------------------------
local_listener                       string                           

IN ASM Instance 2

SQL> show parameter LOCAL

NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ------------------------------
local_listener                       string                           
Add the listener value for the parameter in the respective instance's
IN ASM 1 instance

SQL>alter system set local_listener=LISTENER_DB01

SQL> show parameter LOCAL
NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ------------------------------
local_listener                       string                            LISTENER_DB01
 IN ASM2 Instance

SQL>alter system set local_listener=LISTENER_DB02

SQL> show parameter local
NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ------------------------------
local_listener                       string                            LISTENER_DB02

The Listener LISTENER_db01 and LISTENER_db02 are two listener which we have in the rac environment but according to your environment you can set the listener names 
Step 3
Reload the Listener for the changes to take effect

IN Node 1

oracle@db01[PROD]:$ lsnrctl reload LISTENER_DB01
LSNRCTL for HPUX: Version 10.2.0.3.0 - Production on 08-JUL-2013 16:34:44
Copyright (c) 1991, 2006, Oracle.  All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<hostname>)(PORT=<portnumber>)(IP=FIRST)))
The command completed successfully

In Node 2
 
oracle@db02[PROD]:$ lsnrctl reload LISTENER_DB02
LSNRCTL for HPUX: Version 10.2.0.3.0 - Production on 08-JUL-2013 16:36:35
Copyright (c) 1991, 2006, Oracle.  All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<hostname>)(PORT=<portnumber>)(IP=FIRST)))
The command completed successfully

Step 4

check the listener for the new services in both the nodes you will get the services it will be blocked by default and if you want to connect remotely then you need to add the (UR=A) parameter in the tnsnames .ora file

oracle@db01[+ASM1]:$ lsnrctl services LISTENER_DB01|grep ASM
Service "+ASM" has 1 instance(s).
  Instance "+ASM1", status BLOCKED, has 1 handler(s) for this service...
Service "+ASM_XPT" has 1 instance(s).
  Instance "+ASM1", status BLOCKED, has 1 handler(s) for this service...

oracle@db02[+ASM2]:$ lsnrctl services LISTENER_DB02|grep ASM
Service "+ASM" has 1 instance(s).
  Instance "+ASM2", status BLOCKED, has 1 handler(s) for this service...
Service "+ASM_XPT" has 1 instance(s).
  Instance "+ASM2", status BLOCKED, has 1 handler(s) for this service...

Step 5
Connect the ASM instance remotely and check whether it is able to connect the instance
oracle @db01[+ASM1]:$ sqlplus "sys<password>@+asm1 as sysdba"
SQL*Plus: Release 10.2.0.3.0 - Production on Mon Jul 8 16:40:29 2013
Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options

Step 6

Check the parameter to use the TRANLOGOPTIONS for the extract 
 Add the TRANLOGOPTIONS parameter with the below syntax

Syntax  for the parameter 
TRANLOGOPTIONS ASMUSER <username>@<instnace_name> , ASMPASSWORD<password>

Now start the extract to read the data from the ASM
 




 




























No comments:

Post a Comment