今天在windows server 2012上安裝了一個oracle 11g的數(shù)據(jù)庫,但是安裝 完成以后發(fā)現(xiàn)在我的機器上訪問數(shù)據(jù)庫出現(xiàn)錯誤,ora-12541:TNS:無監(jiān)聽程序。 后來查詢了很多資料,加上借鑒博客園師兄的博客,我知道了問題的所在,今天拿出來分享一下: 具體操作步驟如下: 1.下載plsql,安裝. 2.下載Instant Client,點擊下載,下載第一個basic就行了,下載完解壓縮,以放到主win7 d盤根目錄為例:d:\instantclient_11_2 3.在d:\instantclient_11_2新建tnsnames.ora,用記事本編輯. 4.到server 2012的oracle安裝目錄找到 …\app\admin\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora,打開,比如數(shù)據(jù)庫實例是orcl,找到如下代碼,拷貝到本機d:\instantclient_11_2\tnsnames.ora里
5.添加一個環(huán)境變量,名為TNS_ADMIN,值為tnsnames.ora文件所在路徑d:\instantclient_11_2\tnsnames.ora,plsql通過這個找到orcl連接字符串 6.添加一個環(huán)境變量NLS_LANG = SIMPLIFIED CHINESE_CHINA.ZHS16GBK 7.打開PLSQL,不用登陸,工具-首選項-ORACLE-連接: 勾選檢查連接 Oracle主目錄: d:\instantclient_11_2 OCI庫: d:\instantclient_11_2\oci.dll 經(jīng)過以上幾步之后,重啟PLSQL,問題來了,報錯:ora-12541:TNS:無監(jiān)聽程序. ping是可以ping得通的,server 的監(jiān)聽也開著.經(jīng)過不懈的努力,多次試驗終于解決了: 1網(wǎng)絡連接IPV4設(shè)置靜態(tài)IP IP地址:192.168.1.111 (111可修改成自己的 1-255) 子網(wǎng)掩碼:255.255.255.0 默認風頭:192.168.1.1 首選DNS服務器:192.168.1.1 修改完記得主win7上 ping 192.168.1.111 ping得通再繼續(xù)往后. 2.修改..\app\admin\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora SID_NAME = CLRExtProc 改為 SID_NAME = orcl orcl是實例名
3.修改..\app\admin\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora
兩處 好了,重啟oracle,監(jiān)聽,主win7上的plsql就可以遠程連接虛擬機上的數(shù)據(jù)庫了. 下面供大家參考: 排查問題:在服務端機器上 1.首先檢查監(jiān)聽程序是否能正常啟動,開始,運行 cmd--->lsnrctl start,檢查監(jiān)聽是否是在正常運行,如果正常運行,會提示:TNS-01106: 使用名稱LISTENER的監(jiān)聽程序已經(jīng)啟動。如果沒有運行,用上面的命令啟動監(jiān)聽程序。 2.還在命令提示行里用 tnsping 服務名 ,來檢查tnsnames.ora服務配置是否正確。正確的提示例如: 已使用 TNSNAMES 適配器來解析別名 Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = 192.168.0.6)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = 服務名))) OK (50 毫秒) 命令1: tnsping orcl (ping 本地的orcl,) 結(jié)果:已使用 TNSNAMES 適配器來解析別名 嘗試連接 (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 152 1)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl1))) OK (0 毫秒) 其中:(HOST = localhost) 監(jiān)聽器是這么解析的 命令2:tnsping 159.156.1.207/orcl1(加上本地ip來ping本地實例) 結(jié)果:已使用 EZCONNECT 適配器來解析別名 嘗試連接 (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=orcl1))(ADDRESS=(PROTOCOL=TCP) (HOST=159.156.1.207)(PORT=1521))) TNS-12541: TNS: 無監(jiān)聽程序 其中:(HOST=159.156.1.207)監(jiān)聽器是這么解析的 錯誤就在這里了,按常理來說,localhost和159.156.1.207(本機IP)應該是同樣可行的,但是oracle監(jiān)聽器解析時就是沒能正確通過。 解決辦法:先是嘗試修改監(jiān)聽器配置文件:tnsnames.ora中的配置,但是均告失敗 最后,打開Oracle 自己的工具:Net Configuration Assistant 將原來的監(jiān)聽器重新配置一遍,走流程不修改,直到完成。重新啟動監(jiān)聽器,測試加ip來ping實例,正常通過 結(jié)果:已使用 EZCONNECT 適配器來解析別名 嘗試連接 (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=orcl1))(ADDRESS=(PROTOCOL=TCP) (HOST=159.156.1.207)(PORT=1521))) OK (0 毫秒) 結(jié)論:成功解決了數(shù)據(jù)庫遠程連接問題,問題原因我猜想是ORACLE的監(jiān)聽器沒能正確的映射本機IP和loaclhost,導致報錯,通過重新配置監(jiān)聽器,就將IP和localhost正確的映射了 |
|