Nama Oracle TNS tidak muncul saat menambahkan koneksi baru ke SQL Developer

93

Saya mencoba untuk menyambung ke database oracle dengan SQL Developer.

Saya telah menginstal driver oracle .Net dan menempatkan tnsnames.orafile di
C:\Oracle\product\11.1.0\client_1\Network\Admin

Saya menggunakan format berikut di tnsnames.ora:

dev =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.XXX.XXX)(PORT = XXXX))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = idpdev2)
    )
  )

Di SQL Developer, ketika saya mencoba membuat koneksi baru, tidak ada nama TNS yang muncul sebagai opsi.

Apakah ada sesuatu yang saya lewatkan?

Americus
sumber

Jawaban:

176

Pengembang SQL akan mencari di lokasi berikut dalam urutan ini untuk file tnsnames.ora

  1. $ HOME / .tnsnames.ora
  2. $ TNS_ADMIN / tnsnames.ora
  3. Kunci pencarian TNS_ADMIN di registri
  4. /etc/tnsnames.ora (non-windows)
  5. $ ORACLE_HOME / network / admin / tnsnames.ora
  6. LocalMachine \ SOFTWARE \ ORACLE \ ORACLE_HOME_KEY
  7. LocalMachine \ SOFTWARE \ ORACLE \ ORACLE_HOME

Untuk melihat pengembang SQL mana yang menggunakan, berikan perintah show tnsdi lembar kerja

Jika file tnsnames.ora Anda tidak dikenali, gunakan prosedur berikut:

  1. Tentukan variabel lingkungan yang disebut TNS_ADMIN untuk diarahkan ke folder yang berisi file tnsnames.ora Anda.

    Di Windows, ini dilakukan dengan menavigasi ke Panel Kontrol > Sistem > Pengaturan sistem lanjutan > Variabel Lingkungan ...

    Di Linux, tentukan variabel TNS_ADMIN di file .profile di direktori home Anda.

  2. Pastikan os mengenali variabel lingkungan ini

    Dari baris perintah Windows: echo% TNS_ADMIN%

    Dari linux: echo $ TNS_ADMIN

  3. Mulai ulang Pengembang SQL

  4. Sekarang di SQL Developer klik kanan pada Connections dan pilih New Connection ... . Pilih TNS sebagai jenis koneksi di kotak turun bawah. Entri Anda dari tnsnames.ora sekarang akan ditampilkan di sini.
JaseAnderson
sumber
1
Bagi saya: $ HOME / .tnsnames.ora tidak berfungsi ... Saya menggunakan $ HOME / tnsnames.ora sebagai gantinya. Juga Catatan: Anda harus pergi ke Alat -> Preferensi, cari "tns" dan arahkan direktori ke $ HOME
Ryan Delucchi
Meskipun ini ada dalam catatan rilis untuk SQL developer versi 1.5, saya menemukan bahwa di Ubuntu 12.04 LTS hanya # 5 yang berfungsi . Coba langkah-langkah ini untuk memeriksa apakah itu kasus Anda: forums.oracle.com/message/2769285#2769285 . Patut dicatat : penulis memiliki masalah pada Win Vista.
LAFK mengatakan Reinstate Monica
Bekerja untuk saya di Windows. Logging selamanya FTW!
Ishak
Pengaturan TNS_ADMIN tidak berhasil untuk saya. Sebagai gantinya, saya mencari semua File TNSNAMES di komputer dan memperbarui konten semuanya. Tidak tahu mengapa Pengembang Windows 7 Sql tetap menggunakan beberapa File TNSNAMES lainnya di beberapa folder lama.
Ben
1
Catatan: $TNS_ADMINapakah DIRECTORY bukanlah .orafile sebenarnya
geneorama
30

Buka Pengembang SQL. Pergi ke Tools -> Preferences -> Databases -> Advanced Kemudian secara eksplisit mengatur Direktori Tnsnames

TNSNAMES saya telah diatur dengan benar dan saya dapat terhubung ke Toad, SQL * Plus, dll. Tetapi saya perlu melakukan ini agar SQL Developer berfungsi. Mungkin itu adalah masalah Win 7 karena sulit untuk menginstal juga.

Paul Mattey
sumber
Jawaban yang diterima tidak berfungsi untuk saya tetapi ini berhasil (Windows Server 2008R2)
Josh Werts
Memiliki masalah yang sama, tetapi Pengembang SQL juga melihat di% userprofile% \ tnsnames.ora sebelum% TNS_ADMIN% \ tnsnames.ora, dan di sanalah saya memiliki file tnsnames.ora ekstra.
MBWise
15

Dalam SQLDeveloper isi Tools --> Preferences, seperti yang ditunjukkan pada gambar di bawah.

masukkan deskripsi gambar di sini

Dalam opsi Preferensiexpand Database --> select Advanced --> under "Tnsnames Directory" --> Browse the directory tempat tnsnames.ora hadir.
Kemudian klik Ok .
seperti yang ditunjukkan pada diagram di bawah ini.

masukkan deskripsi gambar di sini

Sudah selesai!

Sekarang Anda dapat terhubung melalui opsi TNSnames .

Chandra Sekhar
sumber
Tidak dapat menemukan "Databse: Advanced" ==> versi saya adalah 1.5.5
Tarek El-Mallah
1
Untuk versi yang lebih rendah dari 2.1 atau jika Anda belum menentukan direktori Tnsnames pada 2.1 atau lebih tinggi, harap kosong seperti yang ditentukan dalam jawaban @JasonAnderson .
Chandra Sekhar
Saya tidak memiliki opsi Direktori Tnsnames di menu Alat-> Preferensi-> Data-> Parameter Lanjutan. Saya menggunakan SqlDeveloper v1.1.3
Ahmedov
14

Anda selalu dapat mengetahui lokasi file tnsnames.ora yang digunakan dengan menjalankan TNSPING untuk memeriksa konektivitas (9i atau lebih baru):

C:\>tnsping dev

TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 08-JAN-2009 12:48:38

Copyright (c) 1997, 2005, Oracle.  All rights reserved.

Used parameter files:
C:\oracle\product\10.2.0\client_1\NETWORK\ADMIN\sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = XXX)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = DEV)))
OK (30 msec)

C:\>

Terkadang, masalahnya ada pada entri yang Anda buat di tnsnames.ora, bukan karena sistem tidak dapat menemukannya. Yang mengatakan, saya setuju bahwa memiliki set variabel lingkungan tns_admin adalah Hal yang Baik, karena ini menghindari masalah tak terelakkan yang muncul dengan menentukan dengan tepat file tnsnames mana yang digunakan dalam sistem dengan beberapa rumah oracle.

DCookie
sumber
bagaimana cara menginstal alat tnsping ??
Kiquenet
Di instalasi klien ada kotak centang untuk Alat Database atau semacamnya.
DCookie
2

Langkah-langkah yang disebutkan oleh Jason sangat bagus dan seharusnya berhasil. Ada sedikit perbedaan dengan SQL Developer. Itu cache spesifikasi koneksi (host, nama layanan, port) saat pertama kali membaca file tnsnames.ora. Kemudian, itu tidak membatalkan spesifikasi ketika entri asli dihapus dari file tnsname.ora. Cache tetap ada bahkan setelah Pengembang SQL dihentikan dan dimulai ulang. Ini bukanlah cara yang tidak logis untuk menangani situasi. Meskipun file tnsnames.ora untuk sementara tidak tersedia, SQL Developer masih dapat membuat koneksi selama spesifikasi aslinya masih benar. Masalahnya datang dengan perubahan kecil berikutnya. Pengembang SQL memperlakukan nama layanan di file tnsnames.ora sebagai nilai peka huruf besar kecil saat menyelesaikan koneksi. Jadi kalau dulu punya entry name ABCD. dunia dalam file dan Anda menggantinya dengan entri baru bernama abcd.world, Pengembang SQL TIDAK akan memperbarui spesifikasi koneksinya untuk ABCD.world - ia akan memperlakukan abcd.world sebagai koneksi yang berbeda sama sekali. Mengapa saya tidak terkejut bahwa produk Oracle akan memperlakukan konten format file yang dikembangkan oracle sebagai peka huruf besar kecil yang secara tegas tidak peka huruf besar / kecil?

Allan Stewart
sumber
@allen: apakah Anda tahu cara memaksa untuk menghapus daftar ini? Jika demikian, harap balas stackoverflow.com/q/6412559/168646
David Oneill
1

Dalam Pengembang Sql, pilih Alat-> preferensi-> Datababae-> lanjutan-> Setel direktori Tnsname ke direktori yang berisi tnsnames.ora

B Chowdhary
sumber
0

Tak satu pun dari perubahan di atas membuat perbedaan apa pun dalam kasus saya. Saya bisa menjalankan TNS_PING di jendela perintah tetapi Pengembang SQL tidak tahu di mana tnsnames.ora berada.

Masalah dalam kasus saya (Windows 7 - 64 bit - Enterprise) adalah bahwa penginstal Oracle mengarahkan pintasan menu Start ke versi SQL Developer yang salah. Tampaknya ada tiga contoh Pengembang SQL yang menyertai penginstal. Satu di% ORACLE_HOME% \ client_1 \ sqldeveloper \ dan dua di% ORACLE_HOME% \ client_1 \ sqldeveloper \ bin \.

Penginstal memasang pintasan menu mulai yang menunjuk ke versi di direktori bin yang sama sekali tidak berfungsi. Itu akan meminta kata sandi setiap kali saya memulai SQL Developer, tidak ingat pilihan yang telah saya buat dan menampilkan daftar kosong ketika saya memilih TNS sebagai mekanisme koneksi. Itu juga tidak memiliki bidang Direktori TNS di pengaturan lanjutan Database yang dirujuk di posting lain.

Saya membuang pintasan Mulai yang lama dan menginstal pintasan ke% ORACLE_HOME% \ client_1 \ sqldeveloper \ sqldeveloper.exe. Perubahan itu memperbaiki masalah dalam kasus saya.

Michael
sumber