解決ORA-12154 TNS無法解析指定的連接標(biāo)識符問題
ORA-12154:TNS:無法解析指定的連接標(biāo)識符

1問題的描述
Oracle11g server 64bit服務(wù)器端安裝在Windows Server2008 Enterprise上,安裝Oracle11g client 32bit,通過SQL Plus以sysdba身份可以連接數(shù)據(jù)庫,并且創(chuàng)建表空間、用戶、授權(quán)成功,如下圖所示。

但是在連接數(shù)據(jù)庫時出現(xiàn)了一些問題:
(1)在客戶端配置服務(wù),通過PLSQL連接數(shù)據(jù)庫,出現(xiàn)錯誤“ora-12154: TNS:無法解析指定的連接標(biāo)識符”;
(2)通過PLSQL能夠正確連接Oracle11g,但是同樣的用戶名密碼在VS2010中卻無法連接,報錯“ORA-12154: TNS:無法解析指定的連接標(biāo)識符”;
(3)在VS2010中能夠正確訪問Oracle11g,但是網(wǎng)站發(fā)布之后數(shù)據(jù)無法訪問,報錯“ORA -12154: TNS:無法解析指定的連接標(biāo)識符”。
2問題的解決
2.1在客戶端配置服務(wù),通過PLSQL連接數(shù)據(jù)庫,出現(xiàn)錯誤“ORA-12154: TNS:無法解析指定的連接標(biāo)識符”

(1)解決本問題需要給系統(tǒng)添加環(huán)境變量TNS_ADMIN并且將oracle服務(wù)器端和客戶端“….NETWORK\ADMIN”路徑復(fù)制給該環(huán)境變量,并且將oracle客戶端的路徑放在前面,如下圖所示。

(2)然后在PLSQL中(點擊“取消”,在沒有成功登陸的情況下也可以設(shè)置連接屬性),點擊“tools”->“preferences”,在對話框中設(shè)置oralce home和OCI library,其中Oracle home選擇所安裝的oracle服務(wù)器端,oci library設(shè)置oracle 32位客戶端的“****product\11.2.0\client_1\bin\oci.dll”路徑。

2.2通過PLSQL能夠正確連接Oracle11g,但是同樣的用戶名密碼在VS2010中卻無法連接,報錯“ora-12154: TNS:無法解析指定的連接標(biāo)識符”

這個問題的出現(xiàn)實在讓人無語,正常情況下在VS2010中選擇“Server Explorer”->Data Connection->Add Connection輸入數(shù)據(jù)庫連接的信息,是可以成功連接oracle數(shù)據(jù)庫的,但是讓人不解的是同樣的用戶名/密碼在PLSQL中可以正常登陸,但是在這里卻會顯示上圖所示的錯誤。這樣在運行VS程序時,顯示上述錯誤。

更莫名其妙的事情是,我們在客戶端重新配置了一個新的服務(wù),并用新的服務(wù)去連接的時候,居然成功了。至此,我們反思,只有一種原因,那就是之前我們用的服務(wù)是在設(shè)置環(huán)境變量“TNS_ADMIN”之前配置的,由于編輯了環(huán)境變量,導(dǎo)致Oracle無法獲取之前的服務(wù)名稱。
2.3在VS2010中能夠正確訪問Oracle11g,但是網(wǎng)站發(fā)布之后數(shù)據(jù)無法訪問,報錯“ORA-12154: TNS:無法解析指定的連接標(biāo)識符”
當(dāng)你解決了遇到的問題,覺得自己已經(jīng)取得成功的時候,往往還會有新的問題出現(xiàn),現(xiàn)實就是這樣無情,它會迫使你將一個問題徹底搞清楚。
在VS程序中能正確訪問的Oracle數(shù)據(jù)庫,當(dāng)網(wǎng)站在IIS中被發(fā)布以后,數(shù)據(jù)庫仍舊不能訪問,該死的“ORA-12154: TNS:無法解析指定的連接標(biāo)識符”。

出現(xiàn)本問題是因為Oracle的訪問權(quán)限問題,第一種情況是Oracle目錄缺乏Authenticated Users用戶權(quán)限,第二種情況是缺乏interner來賓用戶權(quán)限。
Authenticated Users權(quán)限設(shè)置參考博客——
Asp.Net 應(yīng)用程序在IIS發(fā)布后無法連接oracle數(shù)據(jù)庫問題的解決方法 見文末補充介紹。
具體方法是在oracle安裝目錄(d:"oracle")上右鍵,屬性->安全,選中Authenticated Users將權(quán)限的讀取和運行項的勾去掉,再打上,然后點擊應(yīng)用,再點擊高級,選中“用在此顯示的可以應(yīng)用到子對象的項目替代子對象的權(quán)限項目”,點擊確定,然后重新啟動機(jī)器 。
需要注意地方是設(shè)置完權(quán)限后,一定要重啟電腦才會權(quán)限設(shè)置才會生效。
添加internet來賓用戶
(1)在Oracle目錄上右擊選擇“屬性”,顯示如下對話框。

?。?)點擊“編輯”進(jìn)入權(quán)限編輯對話框,如下圖所示。

?。?)點擊“添加”顯示如下對話框。

?。?)點擊“高級”進(jìn)入用戶和組選擇對話框。選擇internet來賓用戶“IIS_IUSRS”,然后一路確定即完成該用戶權(quán)限的設(shè)置。操作完成后請牢記一定要重啟電腦,設(shè)置才能生效。

關(guān)于添加aspnet用戶
網(wǎng)上有博主說這個問題是由于Oracle目錄沒有aspnet用戶訪問權(quán)限所致,而有些情況下電腦上雖然安裝了vs但是還是會沒有aspnet用戶,本人按照博客上的方法——下圖所示添加aspnet用戶,但是該操作雖然能夠成功完成,但是系統(tǒng)用戶和組中還是不會出現(xiàn)aspnet用戶。奇怪是不去管它,只進(jìn)行Authenticated Users權(quán)限設(shè)置和添加internet來賓用戶也可以在發(fā)布后的網(wǎng)站內(nèi)成功訪問Oracle數(shù)據(jù)庫。

3參考文獻(xiàn)
[1] ORA-12514 TNS 監(jiān)聽程序當(dāng)前無法識別連接描述符中請求服務(wù) 的解決方法
http://www.blogjava.net/freeman1984/archive/2011/04/15/348350.html
[2] http://bbs.csdn.net/topics/390312212
[3] Oracle 10g ORA-12154: TNS: could not resolve the connect identifier specified 問題解決!
http://www.blogjava.net/wahahacj/archive/2007/11/19/161689.html
補充:
Asp.Net 應(yīng)用程序在IIS發(fā)布后無法連接oracle數(shù)據(jù)庫問題的解決方法
asp.net程序編寫完成后,發(fā)布到IIS,經(jīng)常出現(xiàn)的一個問題是連接不上Oracle數(shù)據(jù)庫,具體表現(xiàn)為Oracle的本地NET服務(wù)配置成功;用pl/sql 等工具也可以連接上數(shù)據(jù)庫,但是通過瀏覽器中運行程序,就是報連接不上數(shù)據(jù)庫的錯誤。這時可以嘗試下面的解決方法:
1 在oracle安裝目錄(d:"oracle"ora92)上右鍵,屬性->安全,選中Authenticated Users將權(quán)限的讀取和運行項的勾去掉,再打上,然后點擊應(yīng)用,再點擊高級,選中“用在此顯示的可以應(yīng)用到子對象的項目替代子對象的權(quán)限項目”,點擊確定,然后重新啟動機(jī)器 。這時一般可以解決問題,如果不能解決問題,則嘗試第2步和第3步。
2 把用戶Aspnet和Internet 來賓用戶IUSR_COMPUTERNAME加入Ora92的安全權(quán)限里。
3 在ISS中選擇“應(yīng)用程序池”,選中你的應(yīng)用程序所屬的應(yīng)用程序池,右鍵屬性,點“標(biāo)識”標(biāo)簽,在預(yù)定義帳戶項選“本地系統(tǒng)”,然后重啟ISS。
到此這篇關(guān)于ORA-12154:TNS:無法解析指定的連接標(biāo)識符的文章就介紹到這了,更多相關(guān)ORA-12154無法解析指定的連接標(biāo)識符內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Oracle數(shù)據(jù)庫密碼文件的使用和維護(hù)
Oracle數(shù)據(jù)庫密碼文件的使用和維護(hù)...2007-03-03
Oracle使用range分區(qū)并根據(jù)時間列自動創(chuàng)建分區(qū)
這篇文章主要介紹了Oracle使用range分區(qū)并根據(jù)時間列自動創(chuàng)建分區(qū),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-04-04
Linux下安裝Oracle 11g出現(xiàn)prvf-0002錯誤解決辦法
這篇文章主要介紹了Linux下安裝Oracle 11g出現(xiàn)prvf-0002錯誤解決辦法的相關(guān)資料,需要的朋友可以參考下2016-12-12
Oracle根據(jù)逗號拆分字段內(nèi)容轉(zhuǎn)成多行的函數(shù)說明
在做系統(tǒng)時經(jīng)常會遇到在一個字段中,用逗號或其他符號分隔存儲多個信息,下面這篇文章主要給大家介紹了關(guān)于Oracle根據(jù)逗號拆分字段內(nèi)容轉(zhuǎn)成多行的函數(shù)說明,需要的朋友可以參考下2023-04-04

