Oracle錯誤 ora-12514 解決方法


成功連到數據庫上之后,查看listener狀態:lsnrctl status

status READY 狀態,需要由非歸檔轉為歸檔模式,故操作如下:

1.關閉數據庫shutdown immediate 正常關閉;

2.啟動數據庫到mount狀態,startup mount,發生報錯:

3.此時查看listener狀態: lsnrctl status

為status BLOCKED狀態,網上搜索解決方法http://zhidao.baidu.com/question/278798900.html

4.重寫listener.ora文件(藍色為增加部分)

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc) 

      (ORACLE_HOME = f:\oracle\product\10.1.0\Db_1)
      (PROGRAM = extproc) 

    )

 (SID_DESC =
      (GLOBAL_DBNAME = orcl)
      (ORACLE_HOME = f:\oracle\product\10.1.0\Db_1)
      (SID_NAME = orcl)
    )
)

5.重啟監聽:lsnrctl start;查看狀態lsnrctl status:

為status UNKNOWN狀態。

6.連到實例,關閉數據庫,啟動數據庫到mount狀態,均正常!

查看某服務是動態注冊或是靜態注冊。

可以使用命令lsnrctl status 來查看數據庫是動態注冊還是靜態注冊。

實例狀態為UNKNOWN時,表示此服務是靜態注冊的設置,監聽器表明他不知道關於該實例的任何信息,只有當用戶發出連接請求時,他才檢查該實例是否存在。

而動態注冊的數據庫通過狀態信息中的狀態為READY或BLOCKED來指明。不管何時關閉數據庫,動態注冊的數據庫都會動態的從監聽器中注銷掉,而與之相關的信息將會從狀態列表消失,這樣不管數據庫是在運行還是已經關閉,監聽器都知道他的狀態。

待補充。。。

************************************************************

ORACLE XE 修改方法

解決辦法:

  修改目錄E:\Oracle10gXEUniv\app\oracle\product\10.2.0\server\NETWORK\ADMIN下的文件tnsnames.ora、listener.ora將這兩個文件中HOST后面的主機都修改為127.0.0.1然后重啟OracleServiceXE、OracleXETNSListener服務
這時pl/sql developer連接oracle時報出“ORA-12514: TNS: 監聽程序當前無法識別連接描述符中請求的服務”的錯誤,再次修改listener.ora文件,修改前該文件內容為
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = E:\Oracle10gXEUniv\app\oracle\product\10.2.0\server)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = E:\Oracle10gXEUniv\app\oracle\product\10.2.0\server)
      (PROGRAM = extproc)
    )
  )
 
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    )
  )
 
DEFAULT_SERVICE_LISTENER = (XE)
 
修改的方式是:再在該文件中添加一個需要連接的數據庫實例的描述,就是添加一個SID_DESC,我自己連接的數據庫實例是XE,添加后的文件內容為:
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = E:\Oracle10gXEUniv\app\oracle\product\10.2.0\server)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = E:\Oracle10gXEUniv\app\oracle\product\10.2.0\server)
      (PROGRAM = extproc)
    )
     (SID_DESC =
      (SID_NAME = XE)
      (ORACLE_HOME = E:\Oracle10gXEUniv\app\oracle\product\10.2.0\server)
)
/*紅色字體部分即為新加的數據庫實例XE的實例描述,注意該實例描述的ORACLE_HOME后面不能像其它實例那樣加(PROGRAM = extproc),否則會報“ORA-28547: TNS: 連接服務器失敗,可能是Net8管理錯誤。”*/
  )
 
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    )
  )
 
DEFAULT_SERVICE_LISTENER = (XE)
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM