Database
 sql >> база данни >  >> RDS >> Database

Проучване на грешка ORA 02063 DG4ODBC

Наскоро клиент, който използваше нашия SQL Server ODBC драйвер за свързване на Oracle към SQL Server, ни съобщи следната грешка:

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

Тази грешка може да възникне, ако:

  • Обкръжението не е зададено правилно (например LD_LIBRARY_PATH не сочи към директориите на библиотеката unixODBC или ODBCSYSINI не сочи към директорията, съдържаща копието на odbc.ini, където е дефиниран целевият ODBC DSN.)
  • Използва се 64-битова библиотека DG4ODBC с 32-битови ODBC библиотеки и обратно.
  • SID, посочен във вашата DG4ODBC конфигурация, не се изпълнява на хоста, посочен в tnsnames.ora.

При разследването обаче нито един от тези въпроси не се прилага. Подозирахме, че причината е проблем с неправилна конфигурация на Oracle, тъй като въпреки че отстраняването на грешки в DG4ODBC беше активирано, не се генерираха файлове за отстраняване на грешки в DG4ODBC, т.е. Oracle не стигаше до зареждането на библиотеката DG4ODBC.

В такива случаи ние изискваме конфигурационните файлове на Oracle на клиента, за да можем да възпроизведем тяхната настройка, тъй като може да е трудно да се забележи липсваща или неправилно поставена скоба във файл .ora.

Не успяхме да възпроизведем грешката на клиента, предоставените конфигурационни файлове работеха перфектно за нас.

Следващата стъпка беше да използвате strace да погледнете "под капака" какви конфигурационни файлове се зареждат, когато се стартира слушателят на Oracle. За да направим това, помолихме клиента да:

  1. Стартирайте две сесии на обвивката като потребител на Oracle.
  2. В обвивка 1 спрете слушателя на Oracle.
  3. Стартирайте слушателя с тази команда:
    strace -f -o /tmp/easysoft.log -s 512 lsnrctl start
  4. В обвивка 2 стартирайте SQL*PLus и изпълнете SQL оператор срещу връзката към базата данни DG4ODBC/SQL Server.
  5. В обвивка 2 спрете слушателя на Oracle.

Дневникът на strace, /tmp/easysoft.log, разкри основния проблем. Първоначално слушателят на Oracle можеше да зареди и чете 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

Въпреки това, настройката на Oracle на клиента беше:потребител A стартира слушателя, който стана потребител B. Това, което разкри, че потребител B няма достатъчно разрешения за достъп, за да зареди този .ora файл:

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

В крайна сметка това беше причината за „ORA 02063“ на клиента.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Урок за SSIS за начинаещи:Защо, какво и как?

  2. Извличане на XMLA за анализиране на структурата на куба

  3. Моделът на референтните данни:разширяем и гъвкав

  4. Основи на табличните изрази, част 8 – CTEs, съображенията за оптимизация продължават

  5. Съпоставяне на локални контроли за сигурност спрямо основни доставчици на облак – версия 4.0