2009-01-08 188 views
85

我試圖用SQL Developer連接到一個oracle數據庫。向SQL Developer添加新連接時未顯示Oracle TNS名稱

我已經安裝了甲骨文的.Net驅動程序和放置tnsnames.ora文件在
C:\Oracle\product\11.1.0\client_1\Network\Admin

我使用tnsnames.ora中的格式如下:

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

在SQL Developer中,當我嘗試創建一個新的連接,沒有TNS名稱顯示爲選項。

有什麼我失蹤了嗎?

回答

160

SQL Developer將看在以下位置順序爲tnsnames.ora文件

  1. $ HOME/.tnsnames.ora
  2. $ TNS_ADMIN/tnsnames.ora中
  3. TNS_ADMIN查找鍵註冊表
  4. /etc/tnsnames.ora(非Windows)
  5. $ ORACLE_HOME /網絡/ admin/tnsnames.ora中
  6. LOCALMACHINE \ SOFTWARE \ ORACLE \ OR ACLE_HOME_KEY
  7. LOCALMACHINE \ SOFTWARE \ ORACLE \ ORACLE_HOME

,看看哪一個SQL Developer是在工作表中使用,發出命令show tns

如果tnsnames.ora文件沒有得到認可,使用以下程序:

  1. 定義一個名爲TNS_ADMIN環境變量指向包含您的tnsnames.ora F中的文件夾ILE。

    在Windows中,這是通過導航到控制面板>系統>高級系統設置>環境變量...

    在Linux下完成的,在定義TNS_ADMIN變量.profile文件在您的主目錄中。

  2. 確認操作系統是否認識這個環境變量

    從Windows命令行: 回聲%TNS_ADMIN%

    從Linux: 回聲$ TNS_ADMIN

  3. 重新啓動SQL Developer的

  4. 現在在SQL Developer中右擊連接並選擇新連接...。在下拉框中選擇TNS作爲連接類型。您現在應該顯示來自tnsnames.ora的條目。
+0

完美,謝謝! – Americus 2009-01-08 17:43:16

+0

我差不多問了同樣的問題。謝謝。 – 2009-06-19 18:34:40

+11

定義一個名爲TNS_ADMIN的環境變量,指向包含您的tnsnames.ora文件的FOLDER – detroitpro 2009-12-16 15:29:42

12

你總是可以找到tnsnames.ora文件的位置正在使用的運行TNSPING檢查連接(9I或更高版本):

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

有時,問題是你作出的記項在tnsnames.ora中,不是系統找不到它。也就是說,我同意使用tns_admin環境變量集是一件好事,因爲它避免了在確定具有多個oracle家庭的系統中使用哪個tnsnames文件時出現的不可避免的問題。

2

賈森提到的步驟非常好,應該工作。儘管如此,SQL Developer有一點點變化。它在第一次讀取tnsnames.ora文件時緩存連接規範(主機,服務名稱,端口)。然後,當從tnsname.ora文件中刪除原始條目時,它不會使規格無效。即使在SQL Developer終止並重新啓動後,緩存仍然存在。這不是處理這種情況的不合邏輯的方式。即使tnsnames.ora文件暫時不可用,只要原始規範仍然正確,SQL Developer仍然可以建立連接。這個問題伴隨着他們的下一個轉折點。 SQL Developer在解析連接時將tnsnames.ora文件中的服務名稱視爲區分大小寫的值。因此,如果您曾經在文件中輸入了名稱ABCD.world,並且您將其替換爲名爲abcd.world的新條目,SQL Developer將不會更新其針對ABCD.world的連接規範 - 它會將abcd.world視爲不同的連接在一起。 爲什麼我不驚訝Oracle產品會將區分大小寫的Oracle開發文件格式的內容視爲區分大小寫?

29

打開SQL Developer。 進入工具 - >首選項 - >數據庫 - >高級 然後明確設置TNSNAMES目錄

我TNSNAMES是正確設置,我可以連接到蟾蜍的SQL * Plus等,但我需要這樣做是爲了得到SQL Developer工作。也許這是一個Win 7的問題,因爲安裝也很痛苦。

1

在SQL開發,navidate到工具 - >首選項 - > Datababae- - >高級>設置TNSNAME目錄包含的tnsnames.ora

11

的SQLDeveloper瀏覽Tools --> Preferences,如示於下面的圖像的目錄。

enter image description here

偏好選項expand Database --> select Advanced --> under "Tnsnames Directory" --> Browse the directory其中的tnsnames.ora本。
然後點擊Ok
如下圖所示。

enter image description here

你做了!現在

你可以通過TNSNAMES選擇連接。

0

上述變化在我的情況下沒有任何區別。我可以在命令窗口中運行TNS_PING,但SQL Developer無法確定tnsnames.ora的位置。

在我的情況(Windows 7 - 64位 - 企業版)的問題是,Oracle安裝程序指向錯誤版本的SQL Developer的開始菜單快捷方式。似乎有三個隨同安裝程序的SQL Developer實例。一個在%ORACLE_HOME%\ client_1 \ sqldeveloper \中,另外兩個在%ORACLE_HOME%\ client_1 \ sqldeveloper \ bin \中。

安裝程序安裝了一個開始菜單快捷方式,該快捷方式指向bin目錄中的一個版本,該版本根本無法運行。每次我啓動SQL Developer時它都會要求輸入密碼,當我選擇TNS作爲連接機制時,不記得我做出的選擇,並顯示一個空白列表。它在其他帖子中引用的數據庫高級設置中也沒有TNS目錄字段。

我扔了舊的開始快捷方式並安裝了%ORACLE_HOME%\ client_1 \ sqldeveloper \ sqldeveloper.exe的快捷方式。這個改變解決了我的問題。

相關問題