Dnes, protože ETL uzelový stroj chce přistupovat k novému databázovému serveru, musí konfigurovat tnsnames.ora a po nastavení výsledku je při připojení k databázi hlášena chyba:
ORA-12547: TNS:lost contact
Nejdřív jsem si myslel, že je to špatně nastavené tnsnames.ora, ale po porovnání a ověření byla tato možnost vyloučena. Protože stejná konfigurace na ostatních hostitelích byla ověřena pro připojení k tomuto databázovému serveru.
Dále jsem na internetu hledal spoustu informací podle této chyby "ORA-12547: TNS: ztracený kontakt", někteří tvrdili, že chybí softwarové balíčky, jiní zase tvrdili, že je problém s nastavením oprávnění souborů na databázovém hostiteli, ale tyto informace neodpovídaly situaci, kterou jsme zažili tentokrát.
Později jsem se rozhodl prohlédnout záznamy, zkontroloval monitorovací záznam listener.log databáze a zjistil jsem, že se v něm objevují následující chybové zprávy: 20. KVĚTNA 2016 15:46:03 * (CONNECT_DATA=(CID=(PROGRAM=)(HOST=db01)(USER=grid))(COMMAND=status)(ARGUMENTS=64)(SERVICE=LISTENER)(VERSION=186647552)) * stav * 0 Příchozí spojení z 192.168.24.1 zamítnuto 20. KVĚTNA 2016 15:46:06 * 12546
TNS-12546: TNS:permission denied
TNS-12560: TNS:protocol adapter error TNS-00516: Povolení zamítnuto
a zkontroloval konfiguraci serveru databáze sqlnet.ora a zjistil, že je to kvůli omezení přístupu k IP databázi nastaveno, tedy pouze specifikovaná IP adresa mohla přistupovat k databázi.
Protože jde o dvouuzlovou RAC databázi, úprava sqlnet.ora pod uživatelem gridu znamená přidání IP adresy ETL uzlu do IP whitelistu pro přístup k databázi. Po úpravě znovu spusťte naslouchání (lsnrctl reload), jinak bude chyba stále hlášena. |