2014-01-07 53 views
1

我正在處理Oracle 11g中的一些compelex sql查詢,這些查詢具有像SUM這樣的聚合函數並且加入了多個表和視圖。當我嘗試查詢大量數據時,出現IO錯誤和表空間不足空間錯誤。ORA 01114 - IO錯誤將文件塊寫入文件

錯誤一號是 ORA-01114:IO寫入錯誤塊到文件(塊#) ORA-01114:IO寫入錯誤塊文件201(塊#1343798) ORA-27063:讀取的字節數/寫是不正確

錯誤二號有時 數據庫暗戰臨時空間時loaddate>12個月

這是我的DBA必須解決一個Oracle特定錯誤或什麼是錯我的查詢?如何優化查詢的性能以避免表空間不足提示?我正在寫一個我的查詢看起來像一個虛擬樣本

SELECT Sum(s.stock + s.accept + s.new) AS result, 
     Floor((s.sales/s.stock) * 100) AS sales_per,, 
     f.load_date,, 
     u.user_id, 
     Sum(s.falsepos + s.realvio)  AS closed_ale, 
     Sum(f.nbrecords)     AS nb_records 
FROM stocks s, 
     facts f, 
     zones z, 
     users u 
WHERE s.sid = f.fid 
     AND z.zoneid = f.zoneid 
     AND u.userid = z.userid 
     AND f.load_date BETWEEN '20081010' AND '20121030' 
+0

這是一個很好的機會,這是文件系統/磁盤相關(IO錯誤至少) – Joe

回答

3

是的,你可能必須讓你的DBA來解決一些問題。

根據this page,當你嘗試寫入到一個文件,與該文件的設備 發生

ORA-01114可以是:

1)離線或

2)已經空間不足,可能是因爲它是暫時的 文件,它在創建時未分配。

要解決ORA-01114, 你應該:

1)恢復訪問設備或

2)取出文件,這不是爲了獲得更多的空間需要

,並提供該調試的意見(我插你的塊數):

您可以查明tablespa CE和板塊的ORA-01444錯誤通過插入式的的file_id和BLOCK_ID到這個查詢上DBA_EXTENTS:

select 
    owner, 
    tablespace_name, 
    segment_type, 
    segment_name 
from 
    dba_extents 
where 
    file_id = 201 
and 
    block_id = 1343798; 
+0

可悲的是,這並不適用於我。 順便說一句,你有一個從原來的網站進行的錯字,它說ORA-01444它應該說ORA-01114 – Ignasi

1

此命令可以節省你們。

alter tablespace temp shrink space keep 40m;

也許你的系統預留的空間太多了。所以我們只是釋放這個空間,我們可能會找回可用資源來正常運行。

+0

好!但是對於一個真正完整的解釋,人們可能想要檢查這個https://stackoverflow.com/a/1878732/3856754 – Ignasi