ORA-12514 解決方法

場景:修改oracle系統參數以後,數據庫重啓,客戶端報 ORA-12514 錯誤,其實這只是表象,實際並不是Listener的問題。sql

SELECT * FROM V$RESOURCE_LIMIT數據庫

根據服務器內存的實際狀況,設置對應的參數

alter system set sga_max_size=8G scope=spfile;
alter system set sga_target=8G scope=spfile;
alter system set pga_aggregate_target=4G scope=spfile;
alter system set undo_retention=10080 scope=spfile;
alter system set db_files=1000 scope=spfile;
alter system set processes=2000 scope=spfile;
alter system set session_max_open_files=2000 scope=spfile;
alter system set open_cursors=2000 scope=spfile;
alter system set db_recovery_file_dest_size=100G scope=spfile;windows

若是修改了PGA或者SGA,則必定要有下面這兩行,保證 memory_target = SGA + PGA
alter system set memory_max_target=12G scope=spfile;
alter system set memory_target=12G scope=spfile;服務器

 

由於若是漏了這兩個參數的設置,數據庫啓動會失敗,而且致使客戶端在鏈接數據庫的時候報 ORA-12514,從而誤引導你去檢查 TNSListener 的設置,本人就深受其害!!!!!session

另外一個要吐槽的地方是,windows環境下的oracle服務,在系統服務裏面從新啓動數據庫,表面上服務重啓成功了,是那種很快一閃而過的啓動,並且oracle.exe進程也起來了,但就是死活訪問不了數據庫,也看不到任何錯誤信息,只看到讓你越查越迷惑的ORA-12514錯誤。oracle

 


建議使用sqlplus進行數據庫的重啓,這樣能夠看到不少有價值的信息。this

 

解決方法其實很簡單:spa

  • 根據當前系統已經設置生效的spfile創建pfile文件

  create pfile ='d:\initora11g.ora' from spfile;3d

 

  • 修改生成的pfile中 memory_target = pga_aggregate_target + sga_max_size,而後根據修改以後的pfile生成 spfile

    create spfile from pfile = 'd:\initora11g.ora';blog

      startup 到此問題就解決了


 

 

查看設置以後的參數

show parameter target;

另外若是報錯: ORA-00845: MEMORY_TARGET not supported on this system則說明是內存超出服務器物理內存數量,修改以後再生成spfile便可 注:spfile 是二進制文件,不能編輯 pfile 是文本文件,能夠手動編輯 所以先生成pfile,編輯修改以後再生成系統啓動時默認的spfile

相關文章
相關標籤/搜索