瘋狂

          STANDING ON THE SHOULDERS OF GIANTS
          posts - 481, comments - 486, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          早上同事用PL/SQL連接虛擬機(jī)中的Oracle數(shù)據(jù)庫,發(fā)現(xiàn)又報(bào)了“ORA-12514 TNS 監(jiān)聽程序當(dāng)前無法識(shí)別連接描述符中請(qǐng)求服務(wù)”錯(cuò)誤,幫其解決后,發(fā)現(xiàn)很多人遇到過這樣的問題,因此寫著這里。

          也許你沒有遇到過,原因如下:

          你oracle安裝成功后,一直未停止數(shù)據(jù)庫(即數(shù)據(jù)庫是啟動(dòng)的),客戶端配置成功后,應(yīng)該一直不會(huì)有什么問題。

          而一旦你和我同事一樣,有時(shí)把Oracle安裝在虛擬機(jī)中,而且Oracle安裝完畢后,沒在進(jìn)行任何監(jiān)聽的配置,則虛擬機(jī)再啟動(dòng),則就會(huì)出現(xiàn)ORA-12514的問題。如下圖

          TNS 監(jiān)聽程序當(dāng)前無法識(shí)別連接描述符中請(qǐng)求服務(wù) 的解決方法" name=image_operate_32961295504739984 alt="ORA-12514 TNS 監(jiān)聽程序當(dāng)前無法識(shí)別連接描述符中請(qǐng)求服務(wù) 的解決方法" src="http://s7.sinaimg.cn/middle/5007d1b1g9a40c1c8ebf6&690" width=378 height=106>

          如下是解決思路:

          根據(jù)出錯(cuò)信息判斷出客戶端未監(jiān)聽到實(shí)例服務(wù)名

          1、通過重啟服務(wù)的方式啟動(dòng)數(shù)據(jù)庫,再次連接仍無法連接服務(wù)器。

          2、既然第一種方法不能解決問題,那就第二種方法。考慮監(jiān)聽listener.ora

             監(jiān)聽配置文件listener.ora中可以不必指定監(jiān)聽的服務(wù)名(安裝Oracle10g后也是沒有指定的)。正常情況下一般只要數(shù)據(jù)庫啟動(dòng),客戶端連接數(shù)據(jù)庫也沒有什么問題,但是有時(shí)重復(fù)啟動(dòng)關(guān)閉也會(huì)出現(xiàn)ORA-12514錯(cuò)誤。

             既然listener.ora中沒有指定監(jiān)聽,我們可以在listener.ora文件中指定監(jiān)聽的實(shí)例名,這樣該問題應(yīng)該可以連接。

          步驟如下:

          • 在oracle服務(wù)器Oracle安裝目錄(我的在E:\Oracle10g下,每個(gè)人的不一樣,根據(jù)自己的情況查找)Network/admin目錄下找到listener.ora 我的如下圖所示

          # listener.ora Network Configuration File: E:\Oracle10g\network\admin\listener.ora
          # Generated by Oracle configuration tools.

          SID_LIST_LISTENER =
            (SID_LIST =
              (SID_DESC =
                (SID_NAME = PLSExtProc)
                (ORACLE_HOME = E:\Oracle10g)
                (PROGRAM = extproc)
              )
             (SID_DESC =
              (GLOBAL_DBNAME = ORCL)
              (ORACLE_HOME = E:\Oracle10g)
              (SID_NAME = ORCL)
              )

           )

          LISTENER =
            (DESCRIPTION_LIST =
              (DESCRIPTION =
                (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
                (ADDRESS = (PROTOCOL = TCP)(HOST = onest)(PORT = 1521))
              )
            )

          標(biāo)紅的為我添加的部分,ORCL為監(jiān)聽的實(shí)例名。

          • 然后在Oracle服務(wù)器的服務(wù)中重新啟動(dòng)監(jiān)聽服務(wù)TNS 監(jiān)聽程序當(dāng)前無法識(shí)別連接描述符中請(qǐng)求服務(wù) 的解決方法" name=image_operate_641295504618796 alt="ORA-12514 TNS 監(jiān)聽程序當(dāng)前無法識(shí)別連接描述符中請(qǐng)求服務(wù) 的解決方法" src="http://s16.sinaimg.cn/middle/5007d1b1g9a4102276c5f&690" real_src="http://s16.sinaimg.cn/middle/5007d1b1g9a4102276c5f&690">,然后在oracle客戶端通過再次配置對(duì)Orcl實(shí)例的監(jiān)聽,如下圖所示TNS 監(jiān)聽程序當(dāng)前無法識(shí)別連接描述符中請(qǐng)求服務(wù) 的解決方法" name=image_operate_40861295504642796 alt="ORA-12514 TNS 監(jiān)聽程序當(dāng)前無法識(shí)別連接描述符中請(qǐng)求服務(wù) 的解決方法" src="http://s6.sinaimg.cn/middle/5007d1b1g9a410a2805c5&690" width=476 height=86 real_src="http://s6.sinaimg.cn/middle/5007d1b1g9a410a2805c5&690">
          • 結(jié)果出現(xiàn)如下圖的提示。
            TNS 監(jiān)聽程序當(dāng)前無法識(shí)別連接描述符中請(qǐng)求服務(wù) 的解決方法" name=image_operate_14831295504695718 alt="ORA-12514 TNS 監(jiān)聽程序當(dāng)前無法識(shí)別連接描述符中請(qǐng)求服務(wù) 的解決方法" src="http://s13.sinaimg.cn/middle/5007d1b1g9a40c26294dc&690" width=598 height=401 real_src="http://s13.sinaimg.cn/middle/5007d1b1g9a40c26294dc&690">
          • 這時(shí)我們不要著急,只需要oracle服務(wù)器重新啟動(dòng)一下,再次連接即成功。這也是我們配置完listener.ora 監(jiān)聽后,經(jīng)常忘記的。再次嘗試,可以看到客戶端可以連接上oracle服務(wù)器了,而且PL/SQL再次連接也沒有問題了。

          而有些朋友在配置客戶端時(shí),連接數(shù)據(jù)庫成功,而使用PL/SQL時(shí),又出現(xiàn)了如下圖所示的問題。這又如何解決呢?為什么oracle客戶端已經(jīng)連接成功了,而PL/SQL確不行呢?

          TNS 監(jiān)聽程序當(dāng)前無法識(shí)別連接描述符中請(qǐng)求服務(wù) 的解決方法" name=image_operate_78131295504727281 alt="ORA-12514 TNS 監(jiān)聽程序當(dāng)前無法識(shí)別連接描述符中請(qǐng)求服務(wù) 的解決方法" src="http://s3.sinaimg.cn/middle/5007d1b1g9a40c320fad2&690" width=436 height=288 real_src="http://s3.sinaimg.cn/middle/5007d1b1g9a40c320fad2&690">


          出現(xiàn)如上的原因是,可能是大家再配置oracle客戶端時(shí),雖然鏈接成功了,步驟上可能有些錯(cuò)誤。大家使用Net Cofiguration Assistant客戶端時(shí)重新配置了Orcl,而不是添加,我們應(yīng)該如下步驟處理,就不會(huì)出問題了。

          1、如果Net Cofiguration Assistant中已經(jīng)有了Orcl。我們可以重新配置

          2、如果Net Cofiguration Assistant中沒有Orcl,我們應(yīng)該添加  具體界面如下圖所示。

          TNS 監(jiān)聽程序當(dāng)前無法識(shí)別連接描述符中請(qǐng)求服務(wù) 的解決方法" name=image_operate_52121295504778234 alt="ORA-12514 TNS 監(jiān)聽程序當(dāng)前無法識(shí)別連接描述符中請(qǐng)求服務(wù) 的解決方法" src="http://s5.sinaimg.cn/middle/5007d1b1g9a412cc6e6d4&690" width=594 height=397 real_src="http://s5.sinaimg.cn/middle/5007d1b1g9a412cc6e6d4&690">

          如果大家該步處理也沒有問題了,listener.ora 修改成功,并且重新啟動(dòng)了oracle服務(wù)器,無論oracle客戶端還是PL/SQL都能夠成功連接數(shù)據(jù)庫了。

          總結(jié)一下。當(dāng)大家遇到“ORA-12514 TNS 監(jiān)聽程序當(dāng)前無法識(shí)別連接描述符中請(qǐng)求服務(wù)”錯(cuò)誤的解決步驟:

          1、通過重啟服務(wù)的方式啟動(dòng)數(shù)據(jù)庫,再次連接嘗試。

          2、如果第一種方法不可行,我們采用第二種方法

          • 正確添加listener.ora;
          • 重新啟動(dòng)了oracle服務(wù)器,并檢查oracle所有服務(wù)是否啟動(dòng);
          • oracle客戶端Net Cofiguration Assistant正確添加或重新配置實(shí)例名 
          轉(zhuǎn)載自:http://blog.sina.com.cn/s/blog_5007d1b10100oqo8.html

          評(píng)論

          # re: ORA-12514 TNS 監(jiān)聽程序當(dāng)前無法識(shí)別連接描述符中請(qǐng)求服務(wù) 的解決方法  回復(fù)  更多評(píng)論   

          2012-08-18 10:23 by 韓鵬翔
          一下是我的tnsnames.ora
          # tnsnames.ora Network Configuration File: D:\oracle\product\10.2.0\db_1\network\admin\tnsnames.ora
          # Generated by Oracle configuration tools.

          ORCL =
          (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = PC-201208020841)(PORT = 1521))
          (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = orcl)
          )
          )

          EXTPROC_CONNECTION_DATA =
          (DESCRIPTION =
          (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
          )
          (CONNECT_DATA =
          (SID = PLSExtProc)
          (PRESENTATION = RO)
          )
          )
          PTDB_70 =
          (DESCRIPTION =
          (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.89)(PORT = 1521))
          )
          (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = ptdb)
          )
          )

          PTDB =
          (DESCRIPTION =
          (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.82)(PORT = 1521))
          )
          (CONNECT_DATA =
          (SERVICE_NAME = ptdb)
          )
          )

          SFLJDB1 =
          (DESCRIPTION =
          (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = MICROSOF-186022)(PORT = 1521))
          )
          (CONNECT_DATA =
          (SERVICE_NAME = SFLJDB1)
          )
          )

          OA =
          (DESCRIPTION =
          (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.48)(PORT = 1521))
          )
          (CONNECT_DATA =
          (SERVICE_NAME = OA)
          )
          )

          INST1_HTTP =
          (DESCRIPTION =
          (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = MICROSOF-186022)(PORT = 1521))
          )
          怎么配置我的listener.ora文件

          # re: ORA-12514 TNS 監(jiān)聽程序當(dāng)前無法識(shí)別連接描述符中請(qǐng)求服務(wù) 的解決方法  回復(fù)  更多評(píng)論   

          2012-09-06 13:31 by llq_swbl
          fsdf

          # re: ORA-12514 TNS 監(jiān)聽程序當(dāng)前無法識(shí)別連接描述符中請(qǐng)求服務(wù) 的解決方法  回復(fù)  更多評(píng)論   

          2012-10-09 15:26 by cl
          當(dāng)Oracle的參數(shù)等配置不當(dāng)或丟失,也會(huì)導(dǎo)致該錯(cuò)誤發(fā)生。
          這時(shí)就不是監(jiān)聽的問題。

          # re: ORA-12514 TNS 監(jiān)聽程序當(dāng)前無法識(shí)別連接描述符中請(qǐng)求服務(wù) 的解決方法  回復(fù)  更多評(píng)論   

          2013-04-10 10:08 by fds
          滾你丫 我操

          # re: ORA-12514 TNS 監(jiān)聽程序當(dāng)前無法識(shí)別連接描述符中請(qǐng)求服務(wù) 的解決方法  回復(fù)  更多評(píng)論   

          2013-09-01 14:18 by 勁松
          樓主正解,通過你的方法,我成功解決了問題

          # re: ORA-12514 TNS 監(jiān)聽程序當(dāng)前無法識(shí)別連接描述符中請(qǐng)求服務(wù) 的解決方法[未登錄]  回復(fù)  更多評(píng)論   

          2013-11-30 11:02 by 呵呵
          你能不能說的全面一點(diǎn),你那都是簡(jiǎn)單的問題,是個(gè)人都會(huì)處理的.

          # re: ORA-12514 TNS 監(jiān)聽程序當(dāng)前無法識(shí)別連接描述符中請(qǐng)求服務(wù) 的解決方法[未登錄]  回復(fù)  更多評(píng)論   

          2014-02-25 23:22 by 清風(fēng)
          頂LZ
          加了這行話就OK了
          (SID_DESC =
          (GLOBAL_DBNAME = ORCL)
          (ORACLE_HOME = E:\Oracle10g)
          (SID_NAME = ORCL)
          )
          當(dāng)然那 ORACLE_HOME 要和上面一個(gè)一樣喲 別硬搬過去了

          # re: ORA-12514 TNS 監(jiān)聽程序當(dāng)前無法識(shí)別連接描述符中請(qǐng)求服務(wù) 的解決方法  回復(fù)  更多評(píng)論   

          2015-03-06 21:28 by IT小菜鳥
          多謝樓主,問題已解決

          # re: ORA-12514 TNS 監(jiān)聽程序當(dāng)前無法識(shí)別連接描述符中請(qǐng)求服務(wù) 的解決方法  回復(fù)  更多評(píng)論   

          2015-04-01 11:10 by 水楓巨
          我謝樓主,問題解決了。
          我也是在虛擬機(jī)里安裝oracle,剛安裝上是好的可以連接上,后回因?yàn)閾Q機(jī)器,虛擬機(jī)復(fù)制到新機(jī)器上,IP地址變了,就出錯(cuò),連接不上了。現(xiàn)用你的方法,總算解決問題。

          # re: ORA-12514 TNS 監(jiān)聽程序當(dāng)前無法識(shí)別連接描述符中請(qǐng)求服務(wù) 的解決方法[未登錄]  回復(fù)  更多評(píng)論   

          2015-05-12 20:27 by Ian
          樓主正解

          # re: ORA-12514 TNS 監(jiān)聽程序當(dāng)前無法識(shí)別連接描述符中請(qǐng)求服務(wù) 的解決方法  回復(fù)  更多評(píng)論   

          2015-07-22 22:58 by 開元
          這招果然厲害
          主站蜘蛛池模板: 外汇| 汽车| 伊通| 曲阜市| 乐清市| 龙胜| 乐安县| 定日县| 玉门市| 溧水县| 科技| 松潘县| 平凉市| 府谷县| 澄江县| 益阳市| 沂源县| 涟水县| 健康| 府谷县| 金寨县| 湘潭县| 五台县| 剑河县| 乌拉特后旗| 会昌县| 会宁县| 宁明县| 甘南县| 梨树县| 沧源| 凤凰县| 阿荣旗| 卢氏县| 翁牛特旗| 南漳县| 台湾省| 辽阳县| 齐河县| 雷波县| 雷州市|