Oracle ORA-12154: TNS: Tidak dapat menyelesaikan nama layanan Error?

Saya adalah pengguna SQL Server.

Saya sedang dalam proyek yang menggunakan oracle (yang jarang saya gunakan) Saya perlu membuat koneksi ODBC sehingga saya dapat mengakses beberapa data melalui MS Access Saya memiliki aplikasi di mesin saya yang disebut oraHome90. Tampaknya untuk memungkinkan konfigurasi sesuatu yang disebut pendengar dalam "utilitas konfigurasi net", saya pikir bahwa "Konfigurasi Nama Layanan Net Lokal" juga perlu dilakukan. Dukungan TI memberi saya informasi ini untuk mengatur koneksi ODBC. Saya telah mencoba setiap kombinasi yang dapat saya pikirkan. Saya bisa melewati tes yang berhasil melewati tes untuk "login" ke database server oracle. Ketika saya mencoba membuat koneksi ODBC saya mendapatkan kesalahan berikut: ORA-12154: TNS: Tidak dapat menyelesaikan nama layanan.

Dengan asumsi bahwa saya ingin memulai dari awal dan informasi berikut seharusnya memungkinkan saya untuk terhubung ke database..... Ada saran atau komentar? Catatan: pada akhirnya proyek ini akan memiliki situs web .ASP page yang meminta data, tetapi saya harus terlebih dahulu membuktikan bahwa saya dapat melihat data menggunakan koneksi ODBC melalui MS Access

Service name: SERVICENAME
HOST = HOST.XYZi.com
User Id: MYUSERID
Password: MYPASSWORD
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

'Oracle Connection
Dim ocst
Dim oconn

ocst = "Provider=OraOLEDB.Oracle;" & _ 
        "Data Source=DATASOURCE;" & _ 
        "User ID=CHIJXL;" & _ 
        "Password=password;" 

set oconn = CreateObject("ADODB.Connection")

dari http://ora-12154.ora-code.com

ORA-12154: TNS:tidak dapat menyelesaikan pengidentifikasi koneksi yang ditentukan Penyebab: Sambungan ke database atau layanan lain diminta menggunakan pengenal sambungan, dan pengenal sambungan yang ditentukan tidak dapat diselesaikan menjadi deskriptor sambungan menggunakan salah satu metode penamaan yang dikonfigurasi. Misalnya, jika jenis pengidentifikasi sambungan yang digunakan adalah nama layanan net maka nama layanan net tidak dapat ditemukan dalam repositori metode penamaan, atau repositori tidak dapat ditemukan atau dijangkau.
Tindakan:

  • Jika Anda menggunakan penamaan lokal (file TNSNAMES.ORA):

  • Pastikan bahwa "TNSNAMES &" terdaftar sebagai salah satu nilai parameter NAMES.DIRECTORY_PATH di profil Oracle Net (SQLNET.ORA)

  • Verifikasi bahwa file TNSNAMES.ORA ada dan berada di direktori yang tepat dan dapat diakses.

  • Periksa apakah nama layanan net yang digunakan sebagai pengidentifikasi koneksi ada di file TNSNAMES.ORA.

  • Pastikan tidak ada kesalahan sintaksis di mana pun di file TNSNAMES.ORA. Cari tanda kurung yang tidak cocok atau karakter yang tersesat. Kesalahan dalam file TNSNAMES.ORA dapat membuatnya tidak dapat digunakan.

  • Jika Anda menggunakan penamaan direktori:

  • Verifikasi bahwa " LDAP &" terdaftar sebagai salah satu nilai parameter NAMES.DIRETORY_PATH di profil Oracle Net (SQLNET.ORA).

  • Verifikasi bahwa server direktori LDAP sudah aktif dan dapat diakses.

  • Verifikasi bahwa nama layanan net atau nama database yang digunakan sebagai pengidentifikasi koneksi dikonfigurasi dalam direktori.

  • Verifikasi bahwa konteks default yang digunakan sudah benar dengan menentukan nama layanan net yang memenuhi syarat atau LDAP DN lengkap sebagai pengidentifikasi sambungan.

  • Jika Anda menggunakan penamaan sambungan mudah:

  • Verifikasi bahwa "EZCONNECT" terdaftar sebagai salah satu nilai parameter NAMES.DIRETORY_PATH di profil Oracle Net (SQLNET.ORA).

  • Pastikan host, port, dan nama layanan yang ditentukan sudah benar.

  • Coba tutup pengidentifikasi koneksi dalam tanda kutip. Lihat Oracle Net Services Administrators Guide atau panduan khusus sistem operasi Oracle untuk informasi lebih lanjut tentang penamaan.

Komentar (2)

Dengan asumsi Anda menggunakan penamaan TNSNAMES, berikut ini ada beberapa hal yang harus dilakukan:

  • Buat/modifikasi file tnsnames.ora di subdirektori network/admin yang terkait dengan OraHome90 untuk menyertakan entri untuk database oracle Anda:

SERVICENAME_alias = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = HOST.XYZi.com)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = SERVICENAME))

Ini dengan asumsi Anda menggunakan port standar Oracle 1521. Perhatikan bahwa servicename_alias bisa berupa nama apa pun yang ingin Anda gunakan pada sistem lokal. Anda mungkin juga menemukan bahwa Anda perlu menentukan (SID = SERVICENAME) bukannya (SERVICENAME=SERVICENAME).

  • Jalankan tnsping servicename_alias untuk memverifikasi konektivitas. Lakukan ini sebelum melangkah lebih jauh. Ini akan memberitahu Anda jika Anda telah melewati kesalahan 12154.
  • Dengan asumsi koneksi yang baik, buatlah ODBC DSN menggunakan panel kontrol, tentukan driver ODBC untuk Oracle pilihan Anda (umumnya setidaknya ada driver Microsoft ODBC, dan seharusnya berfungsi dengan baik sebagai bukti konsep). Saya akan mengasumsikan nama yang Anda berikan DATASOURCE. Gunakan servicename_alias sebagai nama Server dalam konfigurasi ODBC.
  • Pada titik ini Anda seharusnya dapat terhubung ke database Anda melalui Access. Saya bukan programmer VB, tapi saya tahu Anda seharusnya bisa pergi ke File->Get External Data->Link Tables dan terhubung ke sumber ODBC Anda. Saya akan mengasumsikan kode Anda juga akan bekerja.
Komentar (1)

@Warren dan @DCookie telah membahas solusinya, satu hal yang perlu ditekankan adalah penggunaan tnsping. Anda dapat menggunakan ini untuk membuktikan bahwa TNSNames Anda benar sebelum mencoba untuk terhubung.

Setelah Anda mengatur tnsnames dengan benar, Anda dapat menggunakan ODBC atau mencoba TOra yang akan menggunakan koneksi oracle asli Anda. TOra atau sesuatu yang serupa (TOAD, SQL*Plus dll) akan terbukti sangat berharga dalam debugging dan meningkatkan SQL Anda.

Terakhir namun tidak kalah pentingnya ketika Anda akhirnya terhubung dengan ASP.net, ingatlah bahwa Anda dapat menggunakan pustaka koneksi data Oracle. Lihat Oracle.com untuk sejumlah sumber daya.

Komentar (0)