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

Menggunakan strace sebagai Alat Debugging DG40DBC di Linux

Baru-baru ini, seorang pelanggan yang menggunakan driver ODBC SQL Server kami untuk menghubungkan Oracle ke SQL Server, mengalami masalah yang terbukti sulit untuk diselesaikan.

Pelanggan mendapatkan log ODBC Driver Manager setiap kali DG4ODBC digunakan, dengan hambatan yang dihasilkan pada kinerja — mencatat panggilan ODBC memiliki biaya kinerja. Pelanggan telah memeriksa file odbcinst.ini untuk entri yang mengaktifkan pencatatan; entri ini tidak ada.

Untuk membantu mengatasi masalah ini, kami menggunakan alat strace untuk menemukan apa yang terjadi "di balik layar" saat DG4ODBC digunakan.

Karena DG4ODBC adalah perpustakaan daripada aplikasi, kami harus melampirkan strace ke proses pendengar Oracle (aplikasi "induk" DG4ODBC) untuk melacak operasi yang terkait dengan DG4ODBC.

File jejak menunjukkan salinan odbcinst.ini mana yang mengaktifkan logging.

Ini adalah langkah-langkah yang kami ambil untuk melampirkan strace ke pendengar Oracle:

$ ps -aef | grep tns*
oracle   16242     1  0 15:02 ?        00:00:00 /u01/app/oracle/product/11.2.0/xe/bin/tnslsnr LISTENER -inherit

$ sudo strace -p 16242 -f -o /tmp/mytracefile

(Di jendela terminal terpisah):

$ ./sqlplus / as sysdba

$ select * from mytable@mylink;

Apa yang telah dilakukan Oracle "di bawah tenda" sekarang ditangkap di /tmp/mytracefile. Kami kemudian menggunakan ctrl-c untuk menghentikan strace dan mencari sql.log (file log ODBC Driver Manager) di /tmp/mytracefile. Dalam kasus kami, ini menunjukkan:

16436 open("/etc/odbcinst.ini", O_RDONLY) = 7
16436 fstat(7, {st_mode=S_IFREG|0644, st_size=1365, ...}) = 0
16436 read(7, "[ODBC]\nTrace=Yes\nTraceFile=/tmp/"..., 4096) = 1365
16436 read(7, "", 4096)                 = 0
16436 close(7)                          = 0
16436 open("/u01/app/oracle/.odbcinst.ini", O_RDONLY) = -1 ENOENT (No such file or directory)
16436 open("/tmp/sql.log", O_WRONLY|O_CREAT|O_APPEND, 0666) = 7 

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menggunakan Pola Alur Kerja untuk Mengelola Status Entitas Apa Pun

  2. Menggunakan Docker di Azure Container Service dengan Swarm Cluster

  3. Model Basis Data untuk Survei Online. Bagian 1

  4. Bahasa Kontrol Data SQL

  5. SQL Lanjutan:Sisipkan output dari fungsi bernilai tabel berparameter dalam tabel SQL