奇怪的建表,oracle就hang了的問題

rainbowbridg發表於2010-06-02

有個資料庫,奇怪的是一建表就hang了,oracle也不報錯,alert日誌也沒有任何告警和ora-的錯誤產生!

非常奇怪,重啟資料庫很多次,都是這種現象,搞得很鬱悶!

跟蹤了建表的session,發現處於死迴圈狀態;等待事件是"control file seq... wait";搞得人相當的鬱悶!

然後我檢視錶空間是否充足,結果看不到建表所在的表空間的大小!

非常奇怪!

資料庫正常啟動,該表空間的資料也能正常查詢!

我查了下dba_data_files,發現該表空間的資料檔案都存在,但是發現一處,有個資料檔案的狀態處於recover狀態(後問了下,原來該資料檔案曾經壞過,offline and drop了該資料檔案),bytes欄位是空,我發現了不能查詢該表空間大小的原因了,因為bytes為空,sun(bytes)自然也是空,所以不能獲取!

然後將查詢語句改為:

select a.tablespace_name,total,free,total-free used from
( select tablespace_name,sum(bytes)/1024/1024 total from dba_data_files where bytes is not nullgroup by tablespace_name) a,
(select tablespace_name,sum(bytes)/1024/1024 free from dba_free_space
group by tablespace_name) b
where a.tablespace_name = b.tablespace_name;

加上bytes is not null就可以獲取了!

查詢結果發現該表空間已被使用完了,給該表空間新增一個資料檔案,然後建表,成功!

我奇怪的是,表空間用完了,oracle也不告警,難道oracle在統計表空間大小的時候也忘記加入bytes is not null條件,所以不會因此告警?這個有待查證!

[@more@]

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

相關文章