這是個常見的錯誤。下面這個case講述了如何fix.
一、提出問題
實際過程中有時我們會遇到這樣的問題,當你用startup試圖啟動資料庫時會遇到ora-01102的報錯。
我們可以在unix下切換到oracle的使用者,執行一下oerr ora 1102便會看到有關1102的簡短的描述,
如下:$oerr ora 1102
01102, 00000, "cannot mount database in exclusive mode"
// *cause: some other instance has the database mounted exclusive or shared.
// *action: shutdown other instance or mount in a compatible mode
看了這個1102的簡短的解釋你一定有些迷惑,因為它有一些的誤導性。如下我便來分析一下問題產生的原因,並給出解決的辦法。
二、分析原因
當你啟動資料庫遇到1102報錯時,之前的資料庫的down操作一般都不是正常完成的,或由於一些異常使oracle在作業系統中殘留一些記憶體結構,pmon等一幾個程序依然存在等原因使oracle誤認
為instance依然在執行著,所以庫就沒有啟動,具體說來大體原因有如下幾個:
1、pmon、smon、lwgw及dbwr這些後台程序依然存在著
2、oracle開闢的共享記憶體沒有釋放掉
3、"lk" and "sgadef.dbf"這兩個用於鎖記憶體的檔案存在著。
三、解決問題
知道了原因,解決起來就簡單多了,辦法如下:
1、看一下"lk" and "sgadef.dbf"這兩個檔案是不是存在著,如果存在將其刪掉。
oracle$cd $oracle_home/dbs
oracle$ls -l sgadef.dbf
如果存在刪掉它
oracle$rm sgadef.dbf
oracle$ls -l lk
如果存在刪掉它
oracle$rm lk
2、看是不是有後台程序存在了
oracle$ps -ef | grep ora_ | grep $oracle_sid
如果有pmon這些後台程序的殘留,kill -9掉它
oracle$kill -9 pid
3、看一下oracle的共享記憶體段及訊號集(semaphores)是不是還存在著
1)清共享記憶體段
oracle$ipcs -m --顯示一下,看owner是oracle使用者的
oracle$ipcrm -m
2)清訊號集
oracle$ipcs -s --顯示一下,看owner是oracle使用者的
oracle$ipcrm -s
**:
ora 01102問題的解決
2012年10月5號周五,某 測試資料庫 不能正式開啟,提示ora 01102錯誤 sql startup oracle instance started.total system global area252776884 bytes fixed size450996 bytes variable ...
Oracle啟動資料庫報ORA 01102解決辦法
一 資料庫 1.機器啟動之後登入伺服器使用sqlplus as sysdba 登入資料庫發現資料庫並沒有啟動之前把資料庫服務新增過開機自啟動 2.使用startup命令啟動資料庫報錯了 sys orcl startup oracle 例程已經啟動。total system global area 2...
ORA 00257 解決辦法
ora 00257 archiver error.connect internal only,until freed 在網上搜尋得知,上述錯誤是由於歸檔日誌 archive log 已滿引起的。解決辦法 1 使用sysdba使用者登入檢視archive log 存放位置 2 一般value為空時,可...