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

Cara Memperbaiki ORA-12505, TNS:pendengar saat ini tidak mengetahui SID yang diberikan di deskriptor koneksi

Untuk mengatasi kesalahan ini dengan benar dan menghubungkan ke database Oracle yang sesuai, kita perlu menjelaskan sedikit tentang bagaimana Oracle berperilaku dan, oleh karena itu, apa yang menyebabkan masalah ini.

SID vs SERVICE_NAMES

Penting untuk memahami perbedaan (sedikit) antara apa yang didefinisikan Oracle sebagai SID dibandingkan dengan SERVICE_NAME , karena kami akan menggunakan informasi ini untuk membuat string koneksi yang tepat nanti.

Di Oracle, pengenal sistem (atau SID ) adalah pengidentifikasi lokal dengan panjang hingga delapan karakter yang digunakan untuk mengidentifikasi database tertentu dan membedakannya dari database lain pada sistem.

Seringkali SID adalah kata awalan atau DB_UNIQUE_NAME yang mendahului DB_DOMAIN . Misalnya, SID dari bookstore kami database, seperti yang terlihat pada global database name full dari bookstore.company.com .

SERVICE_NAMES , di sisi lain, mewakili nama yang dengannya instance database dapat dihubungkan. Sebuah SERVICE_NAME biasanya akan mengikuti format SID diikuti oleh domain database, seperti:DB_UNIQUE_NAME.DB_DOMAIN

Pendengar TNS

Ketika klien mencoba untuk terhubung ke database Oracle, daripada menghubungkan ke database langsung , ada layanan broker yang mengintervensi dan menangani permintaan koneksi untuk klien.

Aplikasi broker ini dikenal sebagai listener dan melakukan tugas mendengarkan untuk permintaan klien yang masuk. Ketika permintaan diterima, listener memproses dan meneruskan permintaan tersebut ke server database Oracle yang sesuai menggunakan service handler , yang hanya bertindak sebagai koneksi antara listener dan server basis data.

Nama dan Konfigurasi TNS

Saat menghubungkan ke database Oracle, biasanya server database Anda akan memiliki tnsnames.ora , yang merupakan file konfigurasi yang menginformasikan server tentang NET_SERVICE_NAMES yang merupakan koneksi database yang valid. Secara default, file ini terletak di ORACLE_HOME/network/admin .

Misalnya, NET_SERVICE_NAME deskriptor di tnsnames.ora dapat diformat seperti ini:

myDatabaseNetService =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = tcp)(HOST = localhost)(PORT = 1521)(QUEUESIZE = 100))
    (CONNECT_DATA =
      (SERVICE_NAME = bookstore.company.com)
    )
  )

Ini akan mendefinisikan NET_SERVICE_NAME menggunakan SERVICE_NAME kita bahas sebelumnya (bookstore.company.com ) dan menghubungkan ke localhost melalui port 1521 .

String Koneksi

Dengan sedikit lebih banyak pengetahuan tentang bagaimana Oracle benar-benar terhubung ke database, sekarang kita dapat melihat bagaimana connection strings diformat.

Hubungkan melalui Nama TNS/NET_SERVICE_NAME

Saat menghubungkan melalui NET_SERVICE_NAME seperti yang ditentukan dalam tnsnames.ora . Anda config, Anda harus menggunakan username , password , lalu tambahkan NET_SERVICE_NAME dengan @ simbol, seperti:

username/password@NET_SERVICE_NAME

Jadi, untuk NET_SERVICE_NAME kami sebelumnya deskriptor di atas, NET_SERVICE_NAME yang sebenarnya yang kami definisikan adalah myDatabaseNetService , jadi string koneksi kita mungkin terlihat seperti ini:

john/Hunter2@myDatabaseNetService

Hubungkan melalui SERVICE_NAME

Saat menghubungkan melalui SERVICE_NAME , Anda juga harus menambahkan host dan port , bersama dengan / simbol sebelum SERVICE_NAME sendiri:

username/password@host:port/SERVICE_NAME

Hubungkan melalui SID

Terakhir, jika menghubungkan tanpa NET_SERVICE_NAME yang dikonfigurasi atau bahkan SERVICE_NAME , Anda dapat melakukannya langsung melalui SID dengan menggunakan : simbol alih-alih / simbol seperti pada SERVICE_NAME string koneksi:

username/password@host:port:SID

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Masalah Halloween – Bagian 2

  2. SQL Antar Operator

  3. 19 Sumber Daya Online untuk Mempelajari Kesalahan Desain Basis Data

  4. Pengantar IRI Voracity (Manajemen Data Total) [video]

  5. Prisma, cara membalik urutan