2016-09-23 2 views
0

Я создал табличное пространство и пользователя, и у меня есть 10 таблиц под этим пользователем, с объектами LOB, которые ест пространство, но оно требуется как часть приложения. Я создал скрипт удаления, который удаляет данные до 30 дней из этих таблиц. Но даже после удаления данных из таблиц пространство не очищается. Когда у меня было 200 дней данных, у меня было 5% свободного места. И теперь у меня есть 30-дневные данные, все еще 5% свободного места. Прошу совета, как я могу скрыть эту ситуацию. Это важно.Удаление из таблиц не очищает пространство оракула

+0

Возможно ли свободное пространство? –

+0

Не уверен. Но если вы хотите, чтобы я расширил пространство. Это худший случай. Я хочу знать, как я могу очистить пространство, которое занято, потому что очистка данных таблиц не работает. Обратите внимание: я должен хранить данные так, как есть. –

ответ

0

Когда степень не выделяется в таблицу (или индекс, и т.д.) он принадлежит к этой таблице пока вы не

  1. удалить таблицу
  2. усечь таблицу

При удалении данные из таблицы - блоки перейдут на freelist для этой таблицы (при условии, что объем свободного места на блоке, который был освобожден, упал ниже pctused). Эти блоки будут использоваться для последующих вставок и обновлений в эту таблицу.

Как Том предлагает https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1336002638218, чтобы вернуть себе место, вы можете:

  1. создать новый локально управляемое табличное пространство с AUTOEXTEND файлами данных (так что файлы будут расти так же, как большой, как нужно)
  2. альтер таблицы T перемещения табличного that_new_one
  3. drop tablespace that_old_one;
+0

Это было действительно полезно :) Спасибо Evgeniy –

Смежные вопросы