Hello,
I successfully created a RAC standby database, replicated from a primary in RAC too.
We're in 11gR2.
A few minutes after the last step in dgmgrl utility:
DGMGRL> enable configuration
a 'show configuration' showed errors, tailing the alert.log of an instance of the primary DB
would show (ABC01AS is my standby database):
Fatal NI connect error 12545, connecting to:
(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=scanserver-scan)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=ABC01AS)(CID=(PROGRAM=oracle)(HOST=stby_host01)(USER=oracle))))
VERSION INFORMATION:
TNS for Linux: Version 11.2.0.4.0 - Production
TCP/IP NT Protocol Adapter for Linux: Version 11.2.0.4.0 - Production
Time: 01-SEP-2014 11:32:32
Tracing not turned on.
Tns error struct:
ns main err code: 12545
...
Yet when connecting (thru sqlplus for instance) to the standby using the connect string shown in the alert.log
it worked fine:
[oracle@prim_host01 ]$ sqlplus system/pwd@"(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=scanserver-scan)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=ABC01AS)(CID=(PROGRAM=oracle)(HOST=stby_host01)(USER=oracle))))"
I had a look on Metalink note 553328.1, and in dgmgrl I checked the value of the StaticConnectIdentifier attribute:
DGMGRL> show instance 'ABC01AS1' 'StaticConnectIdentifier'
StaticConnectIdentifier = '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=scannode01)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ABC01AS_DGMGRL)(INSTANCE_NAME=ABC01AS1)(SERVER=DEDICATED)))'
DGMGRL> show instance 'ABC01AS2' 'StaticConnectIdentifier'
StaticConnectIdentifier = '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=scannode02)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ABC01AS_DGMGRL)(INSTANCE_NAME=DWH01AS2)(SERVER=DEDICATED)))'
I did a connection test using the connect strings shown in this case (that differ from that shown in the alert.log):
[oracle@prim_host01 ]$ sqlplus -s system/pwd@"(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=scannode01)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ABC01AS_DGMGRL)(INSTANCE_NAME=ABC01AS1)(SERVER=DEDICATED)))" @instance_name
INSTANCE_NAME
----------------
ABC01AS1
[oracle@prim_host01 ]$ sqlplus -s system/pwd@"(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=scannode02)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ABC01AS_DGMGRL)(INSTANCE_NAME=ABC01AS2)(SERVER=DEDICATED)))" @instance_name
INSTANCE_NAME
----------------
ABC01AS2
(using SYS AS SYSDBA too) and it worked perfectly.
I had to do a 'disable configuration' and then enable it again right away to have my replication resume.
This morning it happened again - as long as I didn't disable/re-enable my dgmgrl configuration, my standby
was in error, dgmgrl kept showing:
Error: ORA-16810: multiple errors or warnings detected for the database
Error: ORA-16737: the redo transport service for standby database "dwh01as" has an error
So when you encounter ORA-12545: Connect failed because target host or object does not exist
and still can succesfully connect to your standby from the primary server through all would-be failing
connect strings, what are you supposed to do ?
Do you have any idea why DataGuard replication could start failing and displaying these errors, when
you can always connect to your target standby without the slightest problem ?? Have yuo seen this
behaviour before ?
Thanks a lot in advance...
Kind regards,
Seb