Astăzi, deoarece mașina nod ETL dorește să acceseze un nou server de bază de date, trebuie să configureze tnsnames.ora, iar după ce rezultatul este configurat, se raportează o eroare la conectarea la baza de date:
ORA-12547: TNS:lost contact
La început, am crezut că este tnsnames.ora configurat greșit, dar după comparație și verificare, această posibilitate a fost exclusă. Pentru că aceeași configurație pe alte gazde a fost verificată pentru a se conecta la acest server de baze de date.
Apoi, am căutat multe informații pe Internet conform acestei eroări "ORA-12547: TNS: lost contact", unii spuneau că lipseau pachete software, iar alții că exista o problemă cu setările de permisiuni ale fișierului de pe gazda bazei de date, dar acestea nu corespundeau situației întâlnite de data aceasta.
Mai târziu, am decis să mă uit în jurnale, am verificat listener.log jurnalului de monitorizare al bazei de date și am descoperit că erau următoarele mesaje de eroare în ea: 20-MAI-2016 15:46:03 * (CONNECT_DATA=(CID=(PROGRAM=)(HOST=db01)(USER=grid))(COMMAND=status)(ARGUMENTS=64)(SERVICE=LISTENER)(VERSION=186647552)) * status * 0 Conexiunea de sosire de la 192.168.24.1 respinsă 20-MAI-2016 15:46:06 * 12546
TNS-12546: TNS:permission denied
TNS-12560: TNS:protocol adapter error TNS-00516: Permisiunea refuzată
și a verificat configurația sqlnet.ora a serverului de baze de date și a constatat că acest lucru se datora faptului că restricția de acces la baza de date era setată, adică doar IP-ul specificat putea accesa baza de date.
Deoarece este o bază de date RAC cu două noduri, modificarea sqlnet.ora sub utilizatorul grid înseamnă adăugarea adresei IP a nodului ETL pe lista albă IP pentru a accesa baza de date. După modificare, repornește ascultarea (reîncărcare lsnrctl), altfel o eroare va fi raportată în continuare. |