• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • Oracle起動庫時1102報錯處理

    發表于:2007-07-13來源:作者:點擊數: 標簽:
    一、提出問題 實際過程中有時我們會遇到這樣的問題,當你用startup試圖啟動 數據庫 時會遇到ORA-01102的報錯。我們可以在 Unix 下切換到Oracle的用戶,執行一下oerr ora 1102便會看到有關1102的簡短的描述,如下: rp2[/home/ora2]oerr ora 1102 01102, 0000

    一、提出問題

     實際過程中有時我們會遇到這樣的問題,當你用startup試圖啟動數據庫時會遇到ORA-01102的報錯。我們可以在Unix下切換到Oracle的用戶,執行一下oerr ora 1102便會看到有關1102的簡短的描述,如下:

     rp2$[/home/ora2]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<sid>" and "sgadef<sid>.dbf"這兩個用于鎖內存的文件存在著。

     三、解決問題

     知道了原因,解決起來就簡單多了,辦法如下:

     1、看一下"lk<sid>" and "sgadef<sid>.dbf"這兩個文件是不是存在著,如果存在將其刪掉。

    oracle$cd $ORACLE_HOME/dbs oracle$ls -l sgadef<sid>.dbf如果存在刪掉它oracle$rm sgadef<sid>.dbforacle$ls -l lk<sid>

    如果存在刪掉它oracle$rm lk<sid>

     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 <Shared_Memory_ID>

     2)清信號集

     oracle$ipcs -s   --顯示一下,看owner是Oracle用戶的oracle$ipcrm -s <Semaphore_ID>

      

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>