Ора 01114 - ошибка ввода-вывода при записи блока в файл
Я работаю над некоторыми SQL-запросами compelex в Oracle 11g, которые имеют функции агрегации, такие как SUM, и объединяют несколько таблиц и представлений. Я получаю ошибку ввода-вывода и ошибку недостаточного пространства табличного пространства, когда я пытаюсь запросить большой объем данных.
Ошибок нет.1 это
ORA-01114: ошибка ввода-вывода блок записи в файл (блок #)
ORA-01114: ошибка ввода-вывода блок записи в файл 201(блок #1343798)
ORA-27063: количество прочитанных/записанных байт неверно
Ошибка № 2 Иногда
База данных на исходе Временное пространство, когда loaddate > 12 месяцев
Это специфическая ошибка Oracle, которую должен решить мой DBA, или что-то не так с моими запросами? Как бы я мог точно настроить производительность запросов, чтобы избежать недостаточного запроса табличного пространства? Я пишу фиктивный образец того, как выглядят мои запросы
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'
2 ответов:
Да, вам, вероятно, придется заставить ваш DBA что-то исправить.
Согласно этой странице,
ORA-01114 возникает при попытке записи в файл и устройство с файлом либо:
1) оффлайн или
2) исчерпал пространство, возможно, потому, что это временное файл, который не был выделен во время создания.
Разрешить ORA-01114, вы должны либо:
1) восстановить доступ к устройству или
2) извлеките файлы, которые не нужны для того, чтобы получить больше места
И предлагает этот совет по отладке (я вставил ваши номера блоков):
Вы можете точно определить табличное пространство и сегмент для ошибки 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;
Эта команда может спасти вас, ребята.
Alter tablespace temp shrink space keep 40m;
Возможно, ваша система резервирует слишком много места для temp. Так что мы просто освободим это пространство, мы можем получить обратно доступные ресурсы, чтобы работать должным образом.
Comments