Primary 和standby資料庫同一臺主機上的Ora-01102問題分析解決

yezhibin發表於2010-06-11
       在HP-UX主機中oracle10.2.0.4平臺上搭建dataguard測試環境,完成primary資料庫建立後,將資料檔案等拷貝到standby資料庫對應目錄中,在啟動standby 資料庫為mount狀態中出現如下錯誤:

SQL>startup nomount;
SQL>alter database mount standby database

ERROR at line 1:
ORA-01102: cannot mount database in EXCLUSIVE mode

    該錯誤通常有以下幾種情況:
    1、先前的資料庫程式還殘留存在,影響新的資料庫啟動
    2、被資料庫佔用的共享記憶體未被清除
    3、$ORACLE_HOME/dbs目錄下殘留sgadef.dbf檔案
    4、刪除$ORACLE_HOME/dbs目錄下的lk檔案

    嘗試用以下方法解決:

   方法一:修改primary 資料庫的DBID (無法解決)
$ export ORACLE_SID=test
SQL>startup mount
$nid target=sys/dbadmin@test
SQL>shutdown immediate
$orapwd file=/home/oracle/test/oradata/test/orapwtest password=xx entries=5
SQL>startup mount
SQL>alter database open resetlogs; 

方法二,停止primary資料庫,用以上命令啟動standby資料庫,未出現錯誤。

       通過錯誤的原因對照,我們可以定位錯誤造成的原因是第四條,lk檔案,因為主資料庫和備用資料庫的db_name是一致的。所以在啟動standby資料庫前刪除該檔案
   $rm $ORACLE_HOME/dbs/lktest
   SQL>startup nomount
   SQL>alter database mount standby database
  
       但以上的方法存需要每次啟動standby資料庫都要刪除lk檔案。

       考慮資料庫不可能存在這樣的問題,檢查dataguard安裝配置,發現主資料庫和備用資料庫中的db_unique_name設定一致,應該是這個存在錯誤,新增standby資料庫中的db_unique_name='stdby',重啟啟動standby資料庫,沒有再出現該錯誤。



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/354732/viewspace-665019/,如需轉載,請註明出處,否則將追究法律責任。

相關文章