Database
 sql >> Baza danych >  >> RDS >> Database

Badanie błędu ORA 02063 DG4ODBC

Niedawno klient, który używał naszego sterownika ODBC SQL Server do łączenia Oracle z SQL Server, zgłosił nam następujący błąd:

ORA-28545: error diagnosed by Net8 when connecting to an agent
Unable to retrieve text of NETWORK/NCR message 65535
	ORA-02063: preceding 2 lines from SQLSERVERLINK

Ten błąd „catchall” może wystąpić, jeśli:

  • Środowisko nie jest ustawione poprawnie (np. LD_LIBRARY_PATH nie wskazuje na katalogi bibliotek unixODBC lub ODBCSYSINI nie wskazuje na katalog zawierający kopię odbc.ini, gdzie zdefiniowano docelowe DSN ODBC.)
  • 64-bitowa biblioteka DG4ODBC jest używana z 32-bitowymi bibliotekami ODBC i na odwrót.
  • SID określony w konfiguracji DG4ODBC nie działa na hoście określonym w tnsnames.ora.

Jednak po zbadaniu żadna z tych kwestii nie miała zastosowania. Podejrzewaliśmy, że przyczyną był problem z błędną konfiguracją Oracle, ponieważ chociaż debugowanie DG4ODBC było włączone, żadne pliki debugowania DG4ODBC nie były generowane, tj. Oracle nie dotarło do załadowania biblioteki DG4ODBC.

W takich przypadkach prosimy o pliki konfiguracyjne Oracle klienta, abyśmy mogli odtworzyć ich konfigurację, ponieważ może być trudno zauważyć brakujący lub niewłaściwie umieszczony nawias w pliku .ora.

Nie byliśmy w stanie odtworzyć błędu klienta, dostarczone pliki konfiguracyjne działały dla nas idealnie.

Następnym krokiem było użycie strace aby spojrzeć „pod maską”, jakie pliki konfiguracyjne były ładowane podczas uruchamiania programu nasłuchującego Oracle. W tym celu poprosiliśmy klienta o:

  1. Rozpocznij dwie sesje powłoki jako użytkownik Oracle.
  2. W powłoce 1 zatrzymaj program nasłuchujący Oracle.
  3. Uruchom odbiornik za pomocą tego polecenia:
    strace -f -o /tmp/easysoft.log -s 512 lsnrctl start
  4. W powłoce 2 uruchom SQL*PLus i uruchom instrukcję SQL względem łącza bazy danych DG4ODBC / SQL Server.
  5. W powłoce 2 zatrzymaj nasłuchiwanie Oracle.

Dziennik strace, /tmp/easysoft.log, ujawnił podstawowy problem. Początkowo program nasłuchujący Oracle był w stanie załadować i odczytać plik listener.ora:

53049 open("/u01/app/oracle/product/11.2.0/xe/network/admin/listener.ora", O_RDONLY) = 3
53049 read(3, "#/u01/app/oracle/product/11.2.0/xe/network/admin/listener.ora Network Configuration File:
\n# Generated by Oracle configuration tools.\n\nLISTENER =\n (DESCRIPTION_LIST =\n (DESCRIPTION =\n (ADDRESS
= (PROTOCOL = TCP)..., 4096) = 577

Jednak konfiguracja Oracle klienta była następująca:użytkownik A uruchomił program nasłuchujący, który stał się użytkownikiem B. Śledzenie ujawniło, że użytkownik B nie miał wystarczających uprawnień dostępu, aby załadować ten plik .ora:

53051 open("/u01/app/oracle/product/11.2.0/xe/network/admin/listener.ora", O_RDONLY) = -1
EACCES (Permission denied)

Ostatecznie było to przyczyną „ORA 02063” klienta.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy jesteś posortowany? Wskazówki dotyczące zamawiania okien T-SQL

  2. Jak obliczyć współczynnik retencji w SQL?

  3. Optymalizacja bazy danych:indeksy

  4. Zarządzanie rolami i statusami w systemie

  5. Pierwsze kroki z kanałami Django