解決ORA-12154 TNS無法解析指定的連接標識符問題
ORA-12154:TNS:無法解析指定的連接標識符
1問題的描述
Oracle11g server 64bit服務器端安裝在Windows Server2008 Enterprise上,安裝Oracle11g client 32bit,通過SQL Plus以sysdba身份可以連接數(shù)據(jù)庫,并且創(chuàng)建表空間、用戶、授權成功,如下圖所示。
但是在連接數(shù)據(jù)庫時出現(xiàn)了一些問題:
(1)在客戶端配置服務,通過PLSQL連接數(shù)據(jù)庫,出現(xiàn)錯誤“ora-12154: TNS:無法解析指定的連接標識符”;
(2)通過PLSQL能夠正確連接Oracle11g,但是同樣的用戶名密碼在VS2010中卻無法連接,報錯“ORA-12154: TNS:無法解析指定的連接標識符”;
(3)在VS2010中能夠正確訪問Oracle11g,但是網(wǎng)站發(fā)布之后數(shù)據(jù)無法訪問,報錯“ORA -12154: TNS:無法解析指定的連接標識符”。
2問題的解決
2.1在客戶端配置服務,通過PLSQL連接數(shù)據(jù)庫,出現(xiàn)錯誤“ORA-12154: TNS:無法解析指定的連接標識符”
(1)解決本問題需要給系統(tǒng)添加環(huán)境變量TNS_ADMIN并且將oracle服務器端和客戶端“….NETWORK\ADMIN”路徑復制給該環(huán)境變量,并且將oracle客戶端的路徑放在前面,如下圖所示。
(2)然后在PLSQL中(點擊“取消”,在沒有成功登陸的情況下也可以設置連接屬性),點擊“tools”->“preferences”,在對話框中設置oralce home和OCI library,其中Oracle home選擇所安裝的oracle服務器端,oci library設置oracle 32位客戶端的“****product\11.2.0\client_1\bin\oci.dll”路徑。
2.2通過PLSQL能夠正確連接Oracle11g,但是同樣的用戶名密碼在VS2010中卻無法連接,報錯“ora-12154: TNS:無法解析指定的連接標識符”
這個問題的出現(xiàn)實在讓人無語,正常情況下在VS2010中選擇“Server Explorer”->Data Connection->Add Connection輸入數(shù)據(jù)庫連接的信息,是可以成功連接oracle數(shù)據(jù)庫的,但是讓人不解的是同樣的用戶名/密碼在PLSQL中可以正常登陸,但是在這里卻會顯示上圖所示的錯誤。這樣在運行VS程序時,顯示上述錯誤。
更莫名其妙的事情是,我們在客戶端重新配置了一個新的服務,并用新的服務去連接的時候,居然成功了。至此,我們反思,只有一種原因,那就是之前我們用的服務是在設置環(huán)境變量“TNS_ADMIN”之前配置的,由于編輯了環(huán)境變量,導致Oracle無法獲取之前的服務名稱。
2.3在VS2010中能夠正確訪問Oracle11g,但是網(wǎng)站發(fā)布之后數(shù)據(jù)無法訪問,報錯“ORA-12154: TNS:無法解析指定的連接標識符”
當你解決了遇到的問題,覺得自己已經(jīng)取得成功的時候,往往還會有新的問題出現(xiàn),現(xiàn)實就是這樣無情,它會迫使你將一個問題徹底搞清楚。
在VS程序中能正確訪問的Oracle數(shù)據(jù)庫,當網(wǎng)站在IIS中被發(fā)布以后,數(shù)據(jù)庫仍舊不能訪問,該死的“ORA-12154: TNS:無法解析指定的連接標識符”。
出現(xiàn)本問題是因為Oracle的訪問權限問題,第一種情況是Oracle目錄缺乏Authenticated Users用戶權限,第二種情況是缺乏interner來賓用戶權限。
Authenticated Users權限設置參考博客——
Asp.Net 應用程序在IIS發(fā)布后無法連接oracle數(shù)據(jù)庫問題的解決方法 見文末補充介紹。
具體方法是在oracle安裝目錄(d:"oracle")上右鍵,屬性->安全,選中Authenticated Users將權限的讀取和運行項的勾去掉,再打上,然后點擊應用,再點擊高級,選中“用在此顯示的可以應用到子對象的項目替代子對象的權限項目”,點擊確定,然后重新啟動機器 。
需要注意地方是設置完權限后,一定要重啟電腦才會權限設置才會生效。
添加internet來賓用戶
(1)在Oracle目錄上右擊選擇“屬性”,顯示如下對話框。
?。?)點擊“編輯”進入權限編輯對話框,如下圖所示。
?。?)點擊“添加”顯示如下對話框。
?。?)點擊“高級”進入用戶和組選擇對話框。選擇internet來賓用戶“IIS_IUSRS”,然后一路確定即完成該用戶權限的設置。操作完成后請牢記一定要重啟電腦,設置才能生效。
關于添加aspnet用戶
網(wǎng)上有博主說這個問題是由于Oracle目錄沒有aspnet用戶訪問權限所致,而有些情況下電腦上雖然安裝了vs但是還是會沒有aspnet用戶,本人按照博客上的方法——下圖所示添加aspnet用戶,但是該操作雖然能夠成功完成,但是系統(tǒng)用戶和組中還是不會出現(xiàn)aspnet用戶。奇怪是不去管它,只進行Authenticated Users權限設置和添加internet來賓用戶也可以在發(fā)布后的網(wǎng)站內成功訪問Oracle數(shù)據(jù)庫。
3參考文獻
[1] ORA-12514 TNS 監(jiān)聽程序當前無法識別連接描述符中請求服務 的解決方法
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 應用程序在IIS發(fā)布后無法連接oracle數(shù)據(jù)庫問題的解決方法
asp.net程序編寫完成后,發(fā)布到IIS,經(jīng)常出現(xiàn)的一個問題是連接不上Oracle數(shù)據(jù)庫,具體表現(xiàn)為Oracle的本地NET服務配置成功;用pl/sql 等工具也可以連接上數(shù)據(jù)庫,但是通過瀏覽器中運行程序,就是報連接不上數(shù)據(jù)庫的錯誤。這時可以嘗試下面的解決方法:
1 在oracle安裝目錄(d:"oracle"ora92)上右鍵,屬性->安全,選中Authenticated Users將權限的讀取和運行項的勾去掉,再打上,然后點擊應用,再點擊高級,選中“用在此顯示的可以應用到子對象的項目替代子對象的權限項目”,點擊確定,然后重新啟動機器 。這時一般可以解決問題,如果不能解決問題,則嘗試第2步和第3步。
2 把用戶Aspnet和Internet 來賓用戶IUSR_COMPUTERNAME加入Ora92的安全權限里。
3 在ISS中選擇“應用程序池”,選中你的應用程序所屬的應用程序池,右鍵屬性,點“標識”標簽,在預定義帳戶項選“本地系統(tǒng)”,然后重啟ISS。
到此這篇關于ORA-12154:TNS:無法解析指定的連接標識符的文章就介紹到這了,更多相關ORA-12154無法解析指定的連接標識符內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
如何使用GDAL庫的ogr2ogr將GeoJSON數(shù)據(jù)導入到PostgreSql中
本文主要介紹了PyTorch中的masked_fill函數(shù)的基本知識和使用方法,masked_fill函數(shù)接受一個輸入張量和一個布爾掩碼作為主要參數(shù),掩碼的形狀必須與輸入張量相同,掩碼操作根據(jù)掩碼中的布爾值在輸出張量中填充指定的值或保留輸入張量中的值2024-10-10解決Oracle?查詢時報錯ORA-00923:?FROM?keyword?not?found?where?
這篇文章主要介紹了解決Oracle?查詢時報錯ORA-00923:?FROM?keyword?not?found?where?expected的問題,主要給大家介紹可能發(fā)生報錯的幾種情況,感興趣的朋友跟隨小編一起看看吧2023-03-03