tns:監聽服務Transparance Network Substrate,透明網絡底層。一般是用它提供的監聽服務。
連接標識符:在安裝oracle10g client 時,提示設定命名連接,連接標識符即client設定的命令連接的名稱。即service_name(網絡別名、網絡服務名、主機連接字符串、主機名)
tnsping<service_name> 是用來執行oracle 網絡別名service_name的解析工作。會解析出ORACLE client中設定的服務器IP與監聽端口,並列明所讀取的ORACLE client監聽服務設置文件所在的目錄。這個文件一般是 X(盤符):\oracle\product\10.2.0\client_1\NETWORK\ADMIN\tnsnames.ora
pl/sql 每當oracle client中service name發生變化,都會按照client安裝目錄下最新的tnsnames.ora,去作為它的讀取文件;如果該文件在卸載oracle client后被手工刪除或手工改動過后,未在oracle client中修改;則會報“ORA-12514:tns:無法解析指定的連接標識符”錯誤。
解決方法:
1、用tnsping <service_name>檢測 plSQL登陸時database(數據庫)別名是否可正確解析,如報“TNS-03505:無法解析名稱”,則此database別名有沖突,需更改。
2、手工改動tnsnames.ora后,在oracle client中修改主機名(“對象”--“將數據庫添加到樹”--“從本地的……”,然后把錯誤主機名刪除或從樹中移除)
3、重新打開plSQL,用正確的database別名登陸,即恢復正常
4、如仍有問題,不登陸進入plSQL界面,進入"tools”--"Preferences"--"Oracle"--"Connection",把"home”(oracle主目錄名)里的數據清空,應用后,重新啟動plSQL即可。
附 錄:在做以上更改后oracle自帶的sqlPLUS,可能會出現不能正常登陸遠程服務器的情況;因為其訪問的是database下的 tnsnames.ora文件,目錄與client的不一樣,默認為 X(盤符):\oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora
解決方法:只需將client下tnsnames.ora中定義的主機字符串(service_name)的命令行復制到database 下的tnsnames.ora內,然后保存就可以了。