SQL Developer'a yeni bağlantı eklerken Oracle TNS adları gösterilmiyor


93

SQL Developer ile bir oracle veritabanına bağlanmaya çalışıyorum.

.Net oracle sürücülerini yükledim ve tnsnames.oradosyayı şu adrese yerleştirdim :
C:\Oracle\product\11.1.0\client_1\Network\Admin

Tnsnames.ora'da aşağıdaki biçimi kullanıyorum:

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

SQL Developer'da yeni bir bağlantı oluşturmaya çalıştığımda, seçenek olarak TNS adları görünmüyor.

Eksik bir şey mi var?

Yanıtlar:


177

SQL Developer bir tnsnames.ora dosyası için bu sırayla aşağıdaki konuma bakacaktır.

  1. $ HOME / .tnsnames.ora
  2. $ TNS_ADMIN / tnsnames.ora
  3. Kayıt defterinde TNS_ADMIN arama anahtarı
  4. /etc/tnsnames.ora (Windows olmayanlar)
  5. $ ORACLE_HOME / ağ / admin / tnsnames.ora
  6. LocalMachine \ SOFTWARE \ ORACLE \ ORACLE_HOME_KEY
  7. LocalMachine \ SOFTWARE \ ORACLE \ ORACLE_HOME

Hangi SQL Developer'ı kullandığını görmek show tnsiçin çalışma sayfasındaki komutu çalıştırın

Tnsnames.ora dosyanız tanınmıyorsa, aşağıdaki prosedürü kullanın:

  1. Tnsnames.ora dosyanızı içeren klasöre işaret etmek için TNS_ADMIN adlı bir çevresel değişken tanımlayın .

    Windows'ta bu, Denetim Masası > Sistem > Gelişmiş sistem ayarları > Ortam Değişkenleri ... seçeneğine gidilerek yapılır.

    Linux'ta, ana dizininizdeki .profile dosyasında TNS_ADMIN değişkenini tanımlayın .

  2. İşletim sisteminin bu çevresel değişkeni tanıdığını doğrulayın

    Windows komut satırından: echo% TNS_ADMIN%

    Linux'tan: echo $ TNS_ADMIN

  3. SQL Developer'ı yeniden başlatın

  4. Şimdi SQL Developer'da Bağlantılar'a sağ tıklayın ve Yeni Bağlantı ... seçeneğini seçin . Açılır kutuda bağlantı türü olarak TNS'yi seçin . Tnsnames.ora'daki girdileriniz şimdi burada görünmelidir.

1
Benim için: $ HOME / .tnsnames.ora işe yaramadı ... Onun yerine $ HOME / tnsnames.ora kullandım. Ayrıca Not: Araçlar -> Tercihler'e gitmeniz, "tns" yi aramanız ve dizini $ HOME
Ryan Delucchi

Bu, SQL geliştirici 1.5 sürümü için sürüm notlarında olmasına rağmen, Ubuntu 12.04 LTS'de yalnızca # 5'in çalıştığını buldum . Durumunuzun bu olup olmadığını kontrol etmek için şu adımları deneyin: forums.oracle.com/message/2769285#2769285 . Dikkate değer : yazarın sorunu Win Vista'da vardı.
LAFK, Monica'yı

Windows'ta benim için çalıştı. Her şeyi sonsuza kadar kaydetmek FTW!
Isaac

TNS_ADMIN ayarı benim için çalışmadı. Bunun yerine bilgisayarda tüm TNSNAMES Dosyalarını aradım ve hepsinin içeriğini güncelledim. Windows 7 Sql Developer'ın bazı eski klasörlerde başka bir TNSNAMES Dosyasını kullanmaya neden devam ettiği hakkında hiçbir fikrim yok.
Ben

1
Not: $TNS_ADMINDIRECTORY gerçek .oradosya değil
geneorama

30

SQL Developer'ı açın. Araçlar -> Tercihler -> Veritabanları -> Gelişmiş'e gidin Ardından Tnsnames Dizinini açıkça ayarlayın

TNSNAMES'im doğru kurulmuştu ve Toad, SQL * Plus vb. İle bağlantı kurabiliyordum ancak SQL Developer'ın çalışması için bunu yapmam gerekiyordu. Belki de yüklemek bir acı olduğu için bir Win 7 sorunuydu.


Kabul edilen yanıt benim için işe yaramadı ama bu işe yaradı (Windows Server 2008R2)
Josh Werts

Aynı sorunu yaşadım, ancak SQL Developer% userprofile% \ tnsnames.ora'ya% TNS_ADMIN% \ tnsnames.ora'dan önce de baktı ve burada fazladan tnsnames.ora dosyasına sahiptim.
MBWise

16

In SQLDeveloper göz Tools --> Preferencesresmin altında gösterildiği gibi,.

görüntü açıklamasını buraya girin

In Tercihler seçenekleri expand Database --> select Advanced --> under "Tnsnames Directory" --> Browse the directorynerede tnsnames.ora mevcut.
Sonra ' Ok .
aşağıdaki diyagramda gösterildiği gibi.

görüntü açıklamasını buraya girin

Yaptın!

Artık TNSnames seçenekleri üzerinden bağlanabilirsiniz .


"Databse: Advanced" bulunamıyor ==> sürümüm 1.5.5
Tarek El-Mallah

1
2.1'den daha düşük sürümler için veya 2.1 veya daha yüksek bir Tnsnames dizini belirtmediyseniz, lütfen @JasonAnderson yanıtında belirtildiği gibi ekleyiniz .
Chandra Sekhar

Tools-> Preferences-> Databaes-> Advanced Parameters menüsünde Tnsnames Directory seçeneğim yok. SqlDeveloper v1.1.3 kullanıyorum
Ahmedov

14

Bağlantıyı kontrol etmek için TNSPING'i çalıştırarak (9i veya sonrası) kullanılan tnsnames.ora dosyasının konumunu her zaman öğrenebilirsiniz:

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:\>

Bazen sorun, tnsnames.ora'da yaptığınız girişle ilgilidir, sistemin onu bulamaması değil. Bununla birlikte, bir tns_admin ortam değişkeni kümesine sahip olmanın iyi bir şey olduğuna katılıyorum, çünkü birden fazla oracle evleri olan sistemlerde tam olarak hangi tnsnames dosyasının kullanıldığını belirlemede ortaya çıkan kaçınılmaz sorunları önler.


tnsping aracını nasıl kurabilirim?
Kiquenet

İstemci kurulumunda Veritabanı Araçları veya benzeri için bir onay kutusu vardır.
DCookie

2

Jason'ın bahsettiği adımlar çok iyi ve işe yaramalı. Yine de SQL Developer'da küçük bir değişiklik var. Tnsnames.ora dosyasını ilk okuduğunda bağlantı özelliklerini (ana bilgisayar, hizmet adı, bağlantı noktası) önbelleğe alır. Daha sonra, orijinal girdi tnsname.ora dosyasından kaldırıldığında özellikleri geçersiz kılmaz. Önbellek, SQL Developer sonlandırılıp yeniden başlatıldıktan sonra bile devam eder. Bu, durumu ele almanın o kadar mantıksız bir yolu değil. Bir tnsnames.ora dosyası geçici olarak kullanılamasa bile, SQL Developer, özgün belirtimler hala geçerli olduğu sürece bağlantıyı yine de yapabilir. Sorun, bir sonraki küçük bükülmeleriyle birlikte geliyor. SQL Developer, bağlantıyı çözerken tnsnames.ora dosyasındaki hizmet adlarını büyük / küçük harfe duyarlı değerler olarak değerlendirir. Öyleyse, ABCD giriş adınız varsa. dosyada dünya ve onu abcd.world adlı yeni bir girişle değiştirdiyseniz, SQL Developer ABCD.world için bağlantı özelliklerini GÜNCELLEMEZ - abcd.world'ü tamamen farklı bir bağlantı olarak ele alır. Bir Oracle ürününün, oracle tarafından geliştirilmiş, açıkça büyük / küçük harfe duyarlı olmayan bir dosya biçiminin içeriğini büyük / küçük harfe duyarlı olarak değerlendirmesine neden şaşırmıyorum?


@allen: Bu listeyi temizlemeye nasıl zorlayacağınızı biliyor musunuz? Öyleyse, lütfen stackoverflow.com/q/6412559/168646
David Oneill

1

Sql Developer'da, Araçlar-> tercihler-> Datababae-> gelişmiş-> Tnsname dizinini tnsnames.ora içeren dizine ayarlayın


0

Yukarıdaki değişikliklerin hiçbiri benim durumumda herhangi bir fark yaratmadı. Komut penceresinde TNS_PING'i çalıştırabilirdim, ancak SQL Developer tnsnames.ora'nın nerede olduğunu anlayamadı.

Benim durumumdaki sorun (Windows 7 - 64 bit - Enterprise), Oracle yükleyicisinin Başlat menüsü kısayolunu SQL Developer'ın yanlış sürümüne yönlendirmesiydi. Yükleyiciye eşlik eden üç SQL Developer örneği var gibi görünüyor. Biri% ORACLE_HOME% \ client_1 \ sqldeveloper \ içinde ve ikisi% ORACLE_HOME% \ client_1 \ sqldeveloper \ bin \ içinde.

Yükleyici, bin dizinindeki basitçe çalışmayan bir sürüme işaret eden bir başlangıç ​​menüsü kısayolu kurdu. SQL Developer'ı her başlattığımda bir şifre soruyor, yaptığım seçimleri hatırlamıyor ve bağlantı mekanizması olarak TNS'yi seçtiğimde boş bir liste görüntülüyordu. Ayrıca diğer gönderilerde atıfta bulunulan Veritabanı gelişmiş ayarlarında TNS Dizini alanına sahip değildir.

Eski Başlat kısayolunu attım ve% ORACLE_HOME% \ client_1 \ sqldeveloper \ sqldeveloper.exe'ye bir kısayol yükledim. Bu değişiklik benim durumumdaki sorunu çözdü.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.