在伺服器配置好python開發環境,進行資料庫連線測試時發現,程式執行報錯:
cx_oracle.databaseerror:ora-12154:tns:無法解析指定的連線識別符號
分析:在我本機電腦測試資料庫連線正常,伺服器有問題,伺服器的資料庫使用正常,任務計畫也正常執行
進行tnsping
oracle net 工具(命令)tnsping,是乙個osi會話層的工具,它用來:
1)驗證名字解析(nameresolution,當然是oracle自己的網路服務名)
2)遠端的listener是否啟動
1.tnsping需要使用tcp,所以需要3次握手建立連線,而ping只使用ip,所以不需要3次握手,這也就解釋了為什麼有的機器不能ping通,但是用tnsping確能測試通。
2.tnsping通,並不能說明客戶端能與資料庫建立連線。因為ping通只能說明客戶端能解析listener的機器名,而且listener也已經啟動,但是並不能說明資料庫已經開啟,而且tsnping的過程與真正客戶端連線的過程也不一致。
但是如果不能用tnsping通,則肯定連線不到資料庫。
命令格式:
tnsping 網路服務名 [count]
比如:tnsping localhost:1521/study
發現tns連線異常,可以看到對應tns連線的配置檔案目錄
找到對應目錄sqlnet.ora,發現為空並沒有對應的tns配置,有另乙個tns配置檔案tnsnames.ora,有對應的tns配置
檔案內容形如:
studydb =
(description =
(address_list =
(address =(protocol = tcp)(host = localhost)(port = 1521))
(connect_data =
(service_name= study)
將tnsnames.ora tns配置複製到sqlnet.ora,tnsping ok,python測試ok,問題解決。
注:一般的tns無法解析首先檢視對應.ora檔案配置是否正常。
徹底解決ora-12545錯誤,需要:
1) 配置乙個網域名稱伺服器,並正確的設定客戶端機器的網域名稱伺服器
2) 將伺服器的機器名與ip配置在客戶端的hosts檔案中.
3) 將客戶端tnsnames.ora和listener.ora中的位址部分都改為ip位址,而不是用機器名
4) 將客戶端的連線改為專用連線,這樣會避免redirect現象。(適用與客戶端tnsnames.ora中為伺服器的ip位址的情況下)
學習鏈結
Oracle TNS 異常問題處理
今天下午快下班時同事找我說自己的效能測試oracle資料庫 連不上了。然後自己連上去簡單看了一下。因為已經是事後了,所以沒有截圖,只通過文字說明。環境說明 win2012r2 oracle12.2.0.1 1.伺服器報tns無法鏈結。第一反應是tns的服務沒啟動好 cmd services.msc ...
無法解析外部符號
先檢視專案屬性裡附加目錄庫包不包含該檔案 資料夾屬性是不是唯讀 最後可能除錯的配置系統位數不對 函式未宣告或未實現等。最近又碰到了新的無法解析外部符號的問題。我在乙個dll專案中引用了另乙個dll專案的某個類成員函式,但該類並沒有匯出,於是出現無法解析的外部符號問題,載入dll專案只能呼叫其匯出的類...
如果APACHE無法解析CSS
系統出現了問題。於是乎就重灌了系統 重新配置了 apache php mysql 碰到幾個煩人的問題。由於我沒有刪掉原來系統保留的apache 和 php。直接安裝覆蓋了原有目錄。這樣造成了n個問題。刪掉apache 目錄和php 重新安裝。沒有問題。重新配置虛擬機器。原來犯懶。都會把虛擬機器配置寫...