Tegenwoordig, omdat de ETL-knoopmachine toegang wil krijgen tot een nieuwe databaseserver, moet hij tnsnames.ora configureren, en nadat het resultaat is geconfigureerd, wordt een foutmelding gemeld bij het verbinden met de database:
ORA-12547: TNS:lost contact
In eerste instantie dacht ik dat tnsnames.ora verkeerd was geconfigureerd, maar na vergelijking en verificatie werd deze mogelijkheid uitgesloten. Omdat dezelfde configuratie op andere hosts is geverifieerd om verbinding te maken met deze databaseserver.
Vervolgens heb ik veel informatie op internet doorzocht op basis van deze foutmelding "ORA-12547: TNS: lost contact", sommigen zeiden dat er een gebrek aan softwarepakketten waren, en anderen zeiden dat er een probleem was met de bestandsmachtigingsinstellingen op de databasehost, maar die waren niet in lijn met de situatie die deze keer was tegengekomen.
Later besloot ik de logs te bekijken, controleerde het monitoringlogboek listener.log van de database, en ontdekte dat er de volgende foutmeldingen in stonden: 20-MEI-2016 15:46:03 * (CONNECT_DATA=(CID=(PROGRAM=)(HOST=db01)(USER=grid))(COMMAND=status)(ARGUMENTS=64)(SERVICE=LISTENER)(VERSIE=186647552)) * status * 0 Binnenkomende verbinding van 192.168.24.1 afgewezen 20-MEI-2016 15:46:06 * 12546
TNS-12546: TNS:permission denied
TNS-12560: TNS:protocol adapter error TNS-00516: Toestemming geweigerd
en controleerde de sqlnet.ora-configuratie van de databaseserver, en ontdekte dat dit kwam doordat de limiet van databasetoegang tot IP's was ingesteld, dat wil zeggen dat alleen het opgegeven IP toegang had tot de database.
Omdat het een twee-knooppunten RAC-database is, betekent het aanpassen van sqlnet.ora onder de grid-gebruiker het IP-adres van de ETL-knoop aan de IP-whitelist om toegang te krijgen tot de database. Na aanpassing herstart je het luisteren opnieuw (lsnrctl herladen), anders wordt er nog steeds een foutmelding gemeld. |