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

У меня есть следующий код в Oracle:

вставить в table_x
выбрать * из view_y; совершить;

где view_y выполняется около получаса и возвращает около 400 000 записей.

Проблема в том, когда я пытаюсь сделать вставку. Вставка длится более двух часов, а сейчас ее даже не доделают. Ошибка "Невозможно расширить временный сегмент на 64 в табличном пространстве TEMP".

Посоветуйте другой способ вставки данных - из представления в таблицу.

Спасибо большое!


person user914046    schedule 25.01.2013    source источник
comment
Вам нужно попросить своего администратора баз данных предоставить вам больше пространства TEMP. Или, если это приемлемо, разбейте вставку на несколько сегментов для индивидуальной фиксации (разделите данные по какому-либо полю, но убедитесь, что они не изменились, пока вы это делаете).   -  person Thilo    schedule 25.01.2013
comment
Привет, @Тило! К сожалению, администратор баз данных отказывается расширять пространство TEMP. Я также думал разделить данные, но не по полям, так как логика представления довольно сложна. Я попытаюсь разбить данные, чтобы зафиксировать их по частям. Не уверен, что это правильное направление, в котором я должен прилагать усилия.   -  person user914046    schedule 25.01.2013


Ответы (1)


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

Обычная вставка в качестве выбора не использует пространство TEMP, однако оно используется для обновления индексов. Имея это в виду, вы бы предпочли удалить индексы в table_x при следующем выполнении оператора индекса и воссоздать их (или, альтернативно, сделать их непригодными для использования и перестроить их).

person Kamil    schedule 02.04.2015