說明
環境(參考):
Oracle 12c
SQL Developer/Navicat Premium(64位)連接數據庫
后續出現的錯誤代碼:
ORA-12541: no listener
TNS-12560:協議適配器錯誤
TNS-00530:協議適配器錯誤
ORA-12518
ORA-12514
ORA-28040:沒有匹配的驗證協議
ORA-01017:用戶名:/口令無效
注冊表或服務沒有TNS監聽器項目
錯誤
原因
找不到監聽器
net 卻說有監聽器
Windows服務中也找不到TNS服務
於是查閱資料說要找到安裝目錄下的bin/lsnrctl.exe
輸入start,報告協議適配器錯誤
再次查閱,發現可能是bin/tnslsnr.exe文件不存在或者路徑配置問題,首先檢查注冊表
發現沒有TNS的服務
又在bin目錄下找到該文件
運行tnslsnr.exe
報告說沒有配置OracleHome環境變量,筆者打開環境變量后發現只配了path,所以再次配置環境變量
ORACLE_HOME
D:\app\lenovo\virtual\product\12.2.0\dbhome_1
TNS_ADMIN
D:\app\lenovo\virtual\product\12.2.0\dbhome_1\network\admin
重啟! 然而沒什么卵用,注冊表和服務依然沒有TNS
start lsnrctl.exe,依然報錯
筆者只好絕望的再去打開tnslsnr.exe,令我茫然的是如下界面:
一片空白!之后突然反應過來,這是不是啟動成功了?!
然后我再次運行lsnrctl.exe
監聽程序已啟動!
筆者又檢查了服務和注冊表,依然沒有變化,但我打算用Navicat Premium連接了
很遺憾,連接失敗
百度得知這個錯誤叫監聽器無法分發客戶機連接
查詢后感覺沒問題啊
關閉tnslsnr.exe窗口和,又出現了沒有監聽器的錯誤。。。。
啟動tnslsnr.exe,連接
啟動lsnrctl.exe
又出現無法分發!!
很明顯,問題出在tnslsnr.exe上,沒有人來啟動它,本來應該是注冊表啟動,但我竟然整個TNS目錄都沒有,別人都是ImagePath改改就好。
所以我仿照MNS的格式手寫了注冊表。
重啟,發現服務里面有TNS這一項了,但是啟動時會報錯!說帳號密碼錯誤,筆者也不知道什么東東,直接不要帳號了,改本地登錄。
啟動后是這樣
我先嘗試了SQL Deveploper,哈哈,終於登上了!!!
但是!!Navicat依舊不行!!!
繼續百度!!
原因是用weblogic去連Oracle12c的數據庫,創建連接池的時候報的這個錯誤。
此錯誤是用了Oracle11g的驅動連12c的數據庫,需要在$ORACLE_HOME\NETWORK\ADMIN\sqlnet.ora中配置:
SQLNET.ALLOWED_LOGON_VERSION=8
注意的是:
1.如果沒有這個文件,則需要建立這個文件。
2.如果是RAC,多個節點都需要加。
3.不需要重啟數據庫。
然而。。。。
新的問題出現,多次連接失敗(10次)后,System帳戶被鎖定!!解鎖
SQL Deveploper成功連接,Navicat還是不行,后來有看到大小寫的問題,可是當我把我的Oracle 12c 去除大小寫之后,連SQL Deveploper都登不上,只好改回去
目前基本上確定 ORA-01017 的問題出在編碼上或者大小寫,可能是軟件轉化大小寫的原因。
從注冊表得知我的編碼是GBK,暫時不動他,把system 密碼改成123456,哈哈,這樣不會有大小寫了吧!
哦,對了,我還設置了一樣東西,不知道有沒有用,菜鳥一個,啥都不懂哈哈, 我勾了兼容。
終於搞定了,不喜歡重裝,所以一直折騰,TNS注冊表那塊是我手寫的,有安全隱患,所以像這種建議重裝
很感謝您能看到最后,當出現監聽器時,我就感覺到這是一場硬戰,於是一邊調試一邊記錄,希望能給朋友提供參考意見。前前后后花了我8個小時,也去掉了一些嘗試過但沒有用的方法,思路不是很清晰,見諒。