天天看點

錯誤 ORA-01102: cannot mount database in EXCLUSIVE mode 的處理方法

問題描述:

在RAC環境中,想開啟歸檔日志,其中使用

<code>SQL&gt; alter system </code><code>set</code> <code>cluster_database=</code><code>false</code> <code>scope=spfile;--&gt;把叢集修改為單執行個體</code>

修改好後主節點,恢複叢集雙節點

<code>SQL&gt; alter system </code><code>set</code> <code>cluster_database=</code><code>true</code> <code>scope=spfile;<code>--&gt;把叢集修改為雙執行個體</code></code>

目前資料庫主節點已經open狀态,查詢狀态是open

備節點已是shutdown狀态,啟動目前節點時報:

 ORA-01102: cannot mount database in EXCLUSIVE mode 

經從網上查閱資訊,可能是如下,我把相關解決思路copy過來大家可以參考

分析原因:

一、在HA系統中,已經有其他節點啟動了執行個體,将雙機共享的資源(如磁盤陣列上的裸裝置、叢集沒有正确開啟)占用了;

1、 Oracle的共享記憶體段或信号量沒有被釋放;

2、 Oracle的背景程序(如SMON、PMON、DBWn等)沒有被關閉;

3、 用于鎖記憶體的檔案lk&lt;sid&gt;和sgadef&lt;sid&gt;.dbf檔案沒有被删除。

解決思路:

當發生1102錯誤時,可以按照以下流程檢查、排錯:

如果是HA系統,檢查其他節點是否已經啟動執行個體檢查Oracle程序是否存在,如果存在則殺掉程序檢查信号量是否存在,如果存在,則清除信号量檢查共享記憶體段是否存在,如果存在,則清除共享記憶體段檢查鎖記憶體檔案lk&lt;sid&gt;和sgadef&lt;sid&gt;.dbf是否存在,如果存在,則删除。

具體做法:

首先,雖然我們的系統是HA系統,但是備節點的執行個體始終處在關閉狀态,這點通過在備節點上查資料庫狀态可以證明。

其次、是因系統是修改過叢集狀态的,是否在修改後沒有生效,當時就是查詢目前叢集狀态

<code>SQL&gt; show parameter cluster</code>

<code>NAME                     TYPE     VALUE</code>

<code>------------------------------------ ----------- ------------------------------</code>

<code>cluster_database             boolean     fales</code>

<code>cluster_database_instances         integer     2</code>

<code>cluster_interconnects             string</code>

這裡可能大概判斷出來啥問題影響,可能是目前修改參數後沒有生效,需要重新修改生效,就是第一種情況

把資料庫重新開機支mount狀态

<code>SQL&gt; alter system </code><code>set</code> <code>cluster_database=</code><code>true</code> <code>scope=spfile;</code>

把資料庫修改成open狀态,再去嘗試備節點是否可以正常啟動成功,結果發現啟動成功

在修改RAC環境參數後最好再确認一下是否修改成功主

本文轉自xiaocao1314051CTO部落格,原文連結:http://blog.51cto.com/xiaocao13140/1936874 ,如需轉載請自行聯系原作者