Oracle 11g ORA-12514:TNS:監聽程序當前無法識別連接描述符中請求的服務


Oracle 11g ORA-12514:TNS:監聽程序當前無法識別連接描述符中請求的服務

解決過程:

1. 找到listener.ora監聽文件,具體位置:D:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora

2. 在lisener.ora文件中找到

    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = D:\app\Administrator\product\11.2.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:D:\app\Administrator\product\11.2.0\dbhome_1\bin\oraclr11.dll")
    )


    將下面的一段內容copy進去,並適當修改。(紅字部分爲你的SID,其中GLOBAL_DBNAME爲全局數據庫名,可以與SID不同)

   (SID_DESC =
      (GLOBAL_DBNAME = ORAC11)
      (ORACLE_HOME = D:\app\Administrator\product\11.2.0\dbhome_1)
      (SID_NAME = ORAC11)
    )

3. 保存listener.ora文件,關閉並重新啓動監聽程序。

    lsnrctl stop   // 關閉

    lsnrctl start  // 啓動


4. 此時,用正常的用戶去連接雙出現新的錯誤。

   
   ORA-27101: shared memory realm does not exist
5. 啓動打開目錄:D:\app\Administrator\admin\orac11\pfile,會發現裏面有一個文件:init.ora.1052011103553,這是Oracle最後一次成功啓動時備份的啓動文件。
6. sqlplus /nolog,
    create spfile from pfile='D:\app\Administrator\admin\orac11\pfile\init.ora.1052011103553'
    startup  // 啓動數據庫。
7. 一切恢復正常。




ora-12514的錯誤的原因有很多。但無外乎這幾種:
1)、 ORA-12541: TNS: 沒有監聽器
顯而易見,服務器端的監聽器沒有啓動,另外檢查客戶端IP地址或端口填寫是否正確。啓動監聽器:
$ lsnrctl start或
C:lsnrctl start
2)、 ORA-12154: TNS: 無法處理服務名
檢查輸入的服務名與配置的服務名是否一致。另外注意生成的本地服務名文件(Windows下如D:oracleora92networkadmin tnsnames.ora,Linux/Unix下/network/admin/tnsnames.ora)裏每項服務的首 行服務名稱前不能有空格。
3)、 ORA-12514: TNS: 監聽進程不能解析在連接描述符中給出的SERVICE_NAME
打開Net Manager,選中服務名稱,檢查服務標識欄裏的服務名輸入是否正確。該服務名必須與服務器端監聽器配置的全局數據庫名一致。同時檢查sqlnet.ora,例如如果想要採用簡便連接方式連接就需要在NAMES.DIRECTORY_PATH參數中添加EZCONNECT。
4)、Ora-12514:TNS:監聽程序當前無法識別鏈接描述符中請求的服務
該問題是由於缺少監聽器的SID_LIST描述項引起的,採用netca進行配置的時候經常會遇到該問題,listener.ora示例如下
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /opt/oracle/product/9.2.0.4)
(PROGRAM = extproc))
(SID_DESC =
(GLOBAL_DBNAME = SAMPLE.COM)
(ORACLE_HOME = /opt/oracle/product/9.2.0.4)
(SID_NAME = SAMPLE)))LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = tcy.com)(PORT = 1521)))








// 解決辦法
1.cmd  進入 sqlplus / as sysdba
2.增加 process 和session 重啓服務
3.修改LISTENER.OAR   文件添加
(SID_DESC =
      (GLOBAL_DBNAME = orcl)
      (ORACLE_HOME = f:\app\MY\product\11.2.0\dbhome_1)
      (SID_NAME = orcl)
    )
    
4.修改tnsnames.ora
 (CONNECT_DATA =
      (SERVER = dedicate)
      (SERVICE_NAME = orcl)
    )
    
dedicate    
   

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章