ORA-12154: TNS: 沒法解析指定的鏈接標識符

      相信使用過Oracle數據庫的人必定碰到過「ORA-12154: TNS: 沒法解析指定的鏈接標識符」錯誤,我在此作一個小小的總結。sql

      在程序中鏈接Oracle數據庫的方式與其餘經常使用數據庫,如:MySql,Sql Server不一樣,這些數據庫能夠經過直接指定IP的方式鏈接,可是Oracle則須要經過Oracle客戶端配置網絡服務名的方式來鏈接。不然就會出現「ORA-12154: TNS: 沒法解析指定的鏈接標識符」。配置Oracle客戶端詳細步驟以下:
      安裝好Oracle客戶端以後,在開始菜單中依次找到「Oracle - OraClient10g_home1—>配置和移植工具—>Net Manager」並打開(Win7,Win8用戶若是沒有取得Administrator帳號登錄須要以管理員方式運行),依次展開「Oracle Net配置—>本地—>服務命名」點擊左側「加號」配置新的網絡服務數據庫

image

image

image

image

      最後,點擊「下一步」完成便可,若是不知道或者忘記Oracle服務名能夠經過查看服務得到,好比我這裏配置的主機名是我本機,在個人電腦服務中找到oracle相關的服務網絡

image

經過上面的服務名稱,能夠看出我安裝的服務名就是「ORCL」,或者在服務端經過SQL Plus使用sys帳號登錄,輸入命令
show parameter service_name查看。
OracleDBConsoleORCL是Oracle網頁端管理工具的服務,訪問地址通常爲「http://127.0.0.1:1158/em/console/logon/logon」,若是不習慣用這個來管理數據庫能夠不用啓動。
OracleJobSchedulerORCL是管理Oracle中計劃任務的,通常不用啓動。
OracleOraDb10g_home1iSQL*Plus是SQL Plus的服務,若是不習慣在命令行下面操做數據庫,能夠不用啓動。
OracleServiceORCL,OracleOraDb10g_home1TNSListener都須要開啓,前者是主服務,後者是監聽服務。oracle

     當在Oracle客戶端中配置好Net Manager中配置好服務後就能夠經過咱們配置的網絡服務名訪問Oracle數據庫了,此配置實質想D:\Oracle\product\10.2.0\client_1\NETWORK\ADMIN\tnsnames.ora中增長了一行配置(因爲個人Oracle是安裝在D盤Oracle目錄中,具體路徑根據安裝時選擇的路徑而定)。工具

# tnsnames.ora Network Configuration File: d:\Oracle\product\10.2.0\client_1\NETWORK\ADMIN\tnsnames.ora
# Generated by Oracle configuration tools.

ORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ORCL)
    )
  )

    若是在同一臺電腦上面同時安裝了Oracle客戶端和服務端,那麼在服務端的安裝目錄中也會存在一樣的配置文件D:\Oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora,在這種狀況下若是咱們配置好了客戶端Net Manager而後鏈接Oracle數據庫,可能會出現「ORA-12154: TNS: 沒法解析指定的鏈接標識符」這時,你就應該懷疑,我到底訪問的是哪一個路徑下的配置文件呢?此時可使用tnsping命令spa

image

      若是你是在客戶端Net Manager中配置的網絡服務,可是此時解析出來的使用參數文件倒是D:\Oracle\product\10.2.0\db_1\NETWORK\ADMIN\sqlnet.ora,那麼我想你應該明白了。這種狀況有兩種解決辦法:
      第一:在服務端的Net Manager也配置相同的網絡服務,或者直接拷貝D:\Oracle\product\10.2.0\client_1\NETWORK\ADMIN\tnsnames.ora中的配置到D:\Oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora,每次配置了新的網絡服務你都須要這麼作,若是不想這麼麻煩那就使用第二種解決辦法。    
      第二:修改系統環境變量Path值,將D:\Oracle\product\10.2.0\client_1\bin;路徑移至D:\Oracle\product\10.2.0\db_1\bin;前面便可一勞永逸。
      注意:形成以上這種狀況出現的緣由是:在一臺電腦上同時安裝了oracle客戶端和數據庫服務,而且是先安裝客戶端,再安裝數據庫服務形成的,若是先安裝數據庫服務,再安裝客戶端就不會出現這種狀況了。
     
根據以上方式配置完oracle後,相信在程序中就能夠正常鏈接oracle數據庫了。命令行

      當我安裝好PLSQL Developer軟件後登錄時任然出現了「ORA-12154: TNS: 沒法解析指定的鏈接標識符」,若是是Win7,Win8用戶甚至能夠會出現彈出一個白框的狀況,這時須要以管理員身份運行PLSQL Developer,而且確保你的PLSQL Developer是讀取的oracle客戶端配置,直接取消登錄,在PLSQL Developer工具欄中找到「Tools—>Preferences」,在Oracle的Connection節點中找到Oracle Home選擇OraClient10g_home1,保存後關閉PLSQL Developer就能夠正常登錄了。3d

image

     須要注意的是,在安裝PLSQL Developer時不能安裝在帶有括號的目錄中,如64bit系統的Program Files (x86)目錄,就會出現不管你怎麼設置,它依然不停的彈出「ORA-12154: TNS: 沒法解析指定的鏈接標識符」。一樣的問題也會出如今其餘Oracle數據庫管理軟件中,好比Toad for Oraclecode

     「ORA-12154: TNS: 沒法解析指定的鏈接標識符」是使用Oracle數據庫的新手遇到的比較常見的問題之一,只要咱們瞭解了它的工做方式,冷靜排查,相信很容易就可以找到問題的解決辦法的。blog

相關文章
相關標籤/搜索