【oracle案例】ORA-01102: cannot mount database in EXCLUSIVE mode .
ORA-01102: cannot mount database in EXCLUSIVE mode
今天在fedora上安裝完10g后,測試數據庫是否安裝成功。STARTUP數據庫時,發生如下錯誤:
?
[plain] view plaincopyprint?
SQL>?conn?/as?sysdba??
Connected?to?an?idle?instance.??
SQL>?startup??
ORACLE?instance?started.??
Total?System?Global?Area??591396864?bytes??
Fixed?Size???????????????????1220724?bytes??
Variable?Size?????????????167776140?bytes??
Database?Buffers?????????415236096??bytes??
Redo?Buffers?????????????????7163904?bytes??
ORA-01102:?cannot?mount?database?in?EXCLUSIVE?mode??
SQL>?shutdown?immediate??
ORA-01507:?database?not?mounted??
??
ORACLE?instance?shut?down.??
?
出現ORA-1102錯誤可能有以下幾種可能:
一、在HA系統中,已經有其他節點啟動了實例,將雙機共享的資源(如磁盤陣列上的裸設備)占用了;
二、說明Oracle被異常關閉時,有資源沒有被釋放,一般有以下幾種可能,
1、 Oracle的共享內存段或信號量沒有被釋放;
2、 Oracle的后臺進程(如SMON、PMON、DBWn等)沒有被關閉;
3、 用于鎖內存的文件lk<sid>和sgadef<sid>.dbf文件沒有被刪除。
?
第一點,可以通過在備節點上查數據庫狀態來判斷是否已啟動實例。
第二點,如果系統是因為斷電引起數據庫宕機的,并且系統在接電被重啟后,我們可以排除第二種可能的1、2點。接下來考慮第3點。
查$ORACLE_HOME/dbs目錄:
[plain] view plaincopyprint?
[oracle@localhost?dbs]$?ls?sgadef*??
ls:?cannot?access?sgadef*:?No?such?file?or?directory??
[oracle@localhost?dbs]$?ls?lk*??
lkORCL??
[oracle@localhost?dbs]$???
lk<sid>文件沒有被刪除。將它刪除掉
[plain] view plaincopyprint?
[oracle@localhost?dbs]$?rm?lkORCL??
再啟動數據庫,成功。
如果是Oracle進程沒有關閉,用以下命令查出存在的oracle進程:
[plain] view plaincopyprint?
[root@localhost?dbs]#?ps?-ef|grep?oracle??
root??????<SPAN?class=skype_c2c_print_container>2310??2358??0?16</SPAN><SPAN?dir=ltr?class=skype_c2c_container?tabIndex=-1?skype_menu_props='{"numberToCall":"+8623102358016","isFreecall":false,"isMobile":false,"isRtl":false}'><SPAN?dir=ltr?class=skype_c2c_highlighting_inactive_common?skypeaction="skype_dropdown"><SPAN?class=skype_c2c_textarea_span><IMG?class=skype_c2c_logo_img?alt=""?src="resource://skype_ff_extension-at-jetpack/skype_ff_extension/data/call_skype_logo.png"><SPAN?class=skype_c2c_text_span>2310??2358??0?16</SPAN><SPAN?class=skype_c2c_free_text_span></SPAN></SPAN></SPAN></SPAN>:00?pts/0????00:00:00?su?-?oracle??
oracle????<SPAN?class=skype_c2c_print_container>2311??2310??0?16</SPAN><SPAN?dir=ltr?class=skype_c2c_container?tabIndex=-1?skype_menu_props='{"numberToCall":"+8623112310016","isFreecall":false,"isMobile":false,"isRtl":false}'><SPAN?dir=ltr?class=skype_c2c_highlighting_inactive_common?skypeaction="skype_dropdown"><SPAN?class=skype_c2c_textarea_span><IMG?class=skype_c2c_logo_img?alt=""?src="resource://skype_ff_extension-at-jetpack/skype_ff_extension/data/call_skype_logo.png"><SPAN?class=skype_c2c_text_span>2311??2310??0?16</SPAN><SPAN?class=skype_c2c_free_text_span></SPAN></SPAN></SPAN></SPAN>:00?pts/0????00:00:00?-bash??
root??????<SPAN?class=skype_c2c_print_container>2427??2403??0?10</SPAN><SPAN?dir=ltr?class=skype_c2c_container?tabIndex=-1?skype_menu_props='{"numberToCall":"+8624272403010","isFreecall":false,"isMobile":false,"isRtl":false}'><SPAN?dir=ltr?class=skype_c2c_highlighting_inactive_common?skypeaction="skype_dropdown"><SPAN?class=skype_c2c_textarea_span><IMG?class=skype_c2c_logo_img?alt=""?src="resource://skype_ff_extension-at-jetpack/skype_ff_extension/data/call_skype_logo.png"><SPAN?class=skype_c2c_text_span>2427??2403??0?10</SPAN><SPAN?class=skype_c2c_free_text_span></SPAN></SPAN></SPAN></SPAN>:47?pts/1????00:00:00?su?-?oracle??
……???
然后用kill -9命令殺掉進程
$kill -9 <PID>
?
總結:
當發生1102錯誤時,可以按照以下流程檢查、排錯:
1.如果是HA系統,檢查其他節點是否已經啟動實例;
2.檢查Oracle進程是否存在,如果存在則殺掉進程;
3.檢查信號量是否存在,如果存在,則清除信號量;
4.檢查共享內存段是否存在,如果存在,則清除共享內存段;
5.檢查鎖內存文件lk<sid>和sgadef<sid>.dbf是否存在,如果存在,則刪除。
轉載于:https://blog.51cto.com/aixuexi/1415051
總結
以上是生活随笔為你收集整理的【oracle案例】ORA-01102: cannot mount database in EXCLUSIVE mode .的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 软件测试基础知识(三)
- 下一篇: PL/SQL 存储过程