Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Menyelidiki Kesalahan ORA 02063 DG4ODBC

Baru-baru ini, seorang pelanggan yang menggunakan driver ODBC SQL Server kami untuk menghubungkan Oracle ke SQL Server, melaporkan kesalahan berikut kepada kami:

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

Kesalahan "menangkap" ini dapat terjadi jika:

  • Lingkungan tidak disetel dengan benar (misalnya LD_LIBRARY_PATH tidak menunjuk ke direktori perpustakaan unixODBC, atau ODBCSYSINI tidak menunjuk ke direktori yang berisi salinan odbc.ini tempat target ODBC DSN ditentukan.)
  • Library DG4ODBC 64-bit sedang digunakan dengan library ODBC 32-bit dan sebaliknya.
  • SID yang ditentukan dalam konfigurasi DG4ODBC Anda tidak berjalan pada host yang ditentukan di tnsnames.ora.

Namun setelah diselidiki tidak satu pun dari masalah ini diterapkan. Kami menduga penyebabnya adalah masalah kesalahan konfigurasi Oracle, karena meskipun debugging DG4ODBC diaktifkan, tidak ada file debug DG4ODBC yang dihasilkan, misalnya Oracle tidak sampai sejauh memuat pustaka DG4ODBC.

Dalam kasus seperti itu, kami meminta file konfigurasi Oracle pelanggan, sehingga kami dapat mereproduksi pengaturannya, karena sulit untuk menemukan braket yang hilang atau salah tempat dalam file .ora.

Kami tidak dapat mereproduksi kesalahan pelanggan, file konfigurasi yang disediakan bekerja dengan sempurna untuk kami.

Langkah selanjutnya adalah menggunakan strace untuk melihat "di bawah tenda" pada file konfigurasi apa yang sedang dimuat ketika pendengar Oracle sedang dimulai. Untuk melakukan ini, kami meminta pelanggan untuk:

  1. Mulai dua sesi shell sebagai pengguna Oracle.
  2. Di shell 1, hentikan pendengar Oracle.
  3. Mulai pendengar dengan perintah ini:
    strace -f -o /tmp/easysoft.log -s 512 lsnrctl start
  4. Di shell 2, mulai SQL*PLus dan jalankan pernyataan SQL terhadap link database DG4ODBC / SQL Server.
  5. Di shell 2, hentikan pendengar Oracle.

Log strace, /tmp/easysoft.log, mengungkap masalah mendasar. Awalnya, pendengar Oracle dapat memuat dan membaca 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

Namun, pengaturan Oracle pelanggan adalah:pengguna A memulai pendengar, yang menjadi pengguna B. Apa yang terungkap adalah bahwa pengguna B tidak memiliki izin akses yang memadai untuk memuat file .ora itu:

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

Pada akhirnya, inilah penyebab "ORA 02063" pelanggan.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa itu DBMS? – Panduan Komprehensif untuk Sistem Manajemen Basis Data

  2. Tabel Ubah SQL

  3. Cara memastikan bahwa database dicadangkan secara teratur

  4. Manfaat dan Keamanan di Amazon Relational Database Service

  5. Cara Menggunakan "Suka" di SQL