MMON encountered error 959, clearing the error

kuqlan發表於2013-01-22
環境:主庫Oracle10g + ASM,備庫為基於檔案系統的Data Guard災備環境
問題的發現來源於Oracle的bdump目錄下不斷增長的包含m000的trace檔案,生產規律大概為10分鐘生成或更新一次。
透過該問題處理得到的教訓是,在具備data guard的物理災備環境中,刪除表空間一定不要忘記including contents and datafiles附加語句。[@more@]

trace檔案具體內容如下:

/oracle/admin/dbserv/bdump/dbserv1_m000_23519.trc
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options
ORACLE_HOME = /oracle/product/10.2/database
System name: SunOS
Node name: dbserv-db
Release: 5.10
Version: Generic_144488-04
Machine: sun4u
Instance name: dbserv1
Redo thread mounted by this instance: 1
Oracle process number: 82
Unix process pid: 23519, image: (m000)

*** ACTION NAME:(Monitor Tablespace Thresholds) 2012-11-08 22:13:46.856
*** MODULE NAME:(MMON_SLAVE) 2012-11-08 22:13:46.856
*** SERVICE NAME:(SYS$BACKGROUND) 2012-11-08 22:13:46.856
*** SESSION ID:(891.26043) 2012-11-08 22:13:46.856
MMON encountered error 959, clearing the error


透過如下SQL查詢發現,兩個表的表空間不一致。即在查詢結果中Name列的值多於tablespace_name列的值:

SQL> select ts.name,dt.tablespace_name from dba_tablespaces dt,sys.ts$ ts
2 where dt.tablespace_name(+)=ts.name;

根據內容及網路找不出什麼具體處理方法,關注點轉移了trae檔案最早的生產時間,檢視當時的日誌。
-------------------------

Redo Shipping Client Connected as PUBLIC
-- Connected User is Valid
Tue Sep 18 13:15:31 CST 2012
drop tablespace gejie
Tue Sep 18 13:15:35 CST 2012
Deleted Oracle managed file +DATADG/dbserv/datafile/gejie.379.786564879
Completed: drop tablespace gejie
Tue Sep 18 13:15:49 CST 2012
drop tablespace gejie
Tue Sep 18 13:15:49 CST 2012
ORA-959 signalled during: drop tablespace gejie
...
Tue Sep 18 15:54:14 CST 2012
Thread 1 advanced to log sequence 24592 (LGWR switch)


進一步查詢發現,在DG的災備庫上還是存在著主庫上已被刪除的資料檔案:+DATADG/dbserv/datafile/abcd.379.786564879
懷疑本故障的來源為但是刪除表空間時遺漏了刪除表空間的附加語句including contents and datafiles。

在主庫重新進行了drop tablespace abcd including contents and datafiles;
該語句執行失敗,因為在主庫abcd的表空間已經不存在了。因此在主庫中重新建立的名稱為abcd的表空間,資料檔案的名稱為備庫上未被刪除的原名,即:

create tablespace abcd datafile '+DATADG/dbserv/datafile/abcd.379.786564879'

現在主庫和備庫都有了相同名稱的表空間及其資料檔案。再次採用附加語句including contents and datafiles的方式在主庫上進行表空間的刪除。即:
drop tablespace abcd including contents and datafiles;

觀察後發現,沒十分鐘生成一次trace檔案的問題已經得以解決,但是如下語句查詢結果上的差異還是存在。
SQL> select ts.name,dt.tablespace_name from dba_tablespaces dt,sys.ts$ ts
2 where dt.tablespace_name(+)=ts.name;

針對該語句查詢結果不一致,具體什麼方法來進行修正呢?這個答案還在尋找中...

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

相關文章