ORA 01114 - Ошибка ввода-вывода при записи блока в файл

Я работаю над некоторыми сложными sql-запросами в Oracle 11g, которые имеют функции агрегирования, такие как SUM, и объединяют несколько таблиц и представлений. Когда я пытаюсь запросить большой объем данных, я получаю сообщение «Ошибка ввода-вывода» и «Недостаточно места для табличного пространства».

Ошибка № 1 - ORA-01114: Ошибка ввода-вывода при записи блока в файл (блок №) ORA-01114: Ошибка ввода-вывода при записи блока в файл 201 (блок № 1343798) ORA-27063: неверное количество прочитанных / записанных байтов

Ошибка № 2 Иногда в базе данных заканчивается временное пространство, если дата загрузки> 12 месяцев

Это ошибка 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' 

person StarJedi    schedule 07.01.2014    source источник
comment
Есть хороший шанс, что это связано с файловой системой / диском (по крайней мере, ошибка ввода-вывода)   -  person Joe    schedule 07.01.2014


Ответы (2)


Да, вам, вероятно, придется попросить администратора базы данных что-то исправить.

Согласно этой странице,

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;
person Todd    schedule 07.01.2014
comment
К сожалению, у меня это не сработало. Между прочим, есть опечатка, которую вы допустили с исходного сайта, где написано ORA-01444, должно быть написано ORA-01114. - person Ignasi; 16.01.2018

Эта команда может спасти вас, ребята.

изменить временную усадку табличного пространства сохранить 40m;

Возможно, ваша система слишком много зарезервировала место на время. Итак, мы просто освобождаем это пространство, и мы можем вернуть доступные ресурсы для правильной работы.

person Kazugi    schedule 02.11.2016
comment
Хорошо! Но для действительно полного объяснения люди могут захотеть проверить это stackoverflow.com/a/1878732/3856754 - person Ignasi; 16.01.2018