Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Реорганизация таблиц в Oracle

Автор: Oleg_SZ
Дата сообщения: 17.12.2001 09:24
У меня Oracle 7.3.4.0.0. В табличном пространстве происходит быстрый рост нескольких таблиц, количество экстентов перевалило за 50. Решил создать новое табличное пространство для этих таблиц с болшими размерами экстентов. Как и в какой последовательности перенести туда таблицы не потеряв ограничений, ключей, последовательностей и др. Где можно об этом почитать и может быть уже есть готовые скрипты для выполнения этой операции.
Автор: Zepplock
Дата сообщения: 03.01.2002 03:30
posmotri komandu EXPORT
Автор: dssergio
Дата сообщения: 10.01.2002 10:38
Используй Space Manager от www.quest.com
Автор: Oleg_SZ
Дата сообщения: 03.06.2002 11:51
Говорят что проблемму можно решить путем создания Stand by-сервера. Но я
в документации пока про это ничего не нашел.
Автор: mastervigo
Дата сообщения: 10.09.2003 08:17
спрашивать лучше здесь:
http://forum.ru-board.com/forums.cgi?forum=8
Автор: Bloody_Nokia_Adept
Дата сообщения: 10.09.2003 09:13
Oleg_SZ

Цитата:
Oracle 7.3.4.0.0


Цитата:
Как и в какой последовательности перенести туда таблицы не потеряв ограничений, ключей, последовательностей и др.

Я с 7.Х.Х никогда не работал, но в 8.1.5 и более поздних проблема решается довольно легко. Переносится в любой последовательности командой:

Цитата:
ALTER TABLE table_name MOVE TABLESPACE tablespace_name NOLOGGING;

Если же таблица с партициями, то надо переносить каждую партицию отдельно:

Цитата:
ALTER TABLE table_name MOVE PARTITION partition_name TABLESPACE tablespace_name NOLOGGING;

Поэтому посмотри доку по своей СУБД в разделе ALTER TABLE - должно работать.

PS: На будущее... Со специфичными запросами лучше обращаться на SQL.RU - Форум по Oracle
Автор: Fashist
Дата сообщения: 14.10.2003 09:41
Можно попробовать с помощью TOAD от QUEST Sofrware. Но это не универсальный вариант. Хотя реализовано довольно просто.
Автор: Tishka
Дата сообщения: 20.10.2003 17:01
Создаётся новая таблица, аналогичной структуры (во временном таблисном пространстве или если его нехватает, то в новом, которое потом можно будет удалить). В неё копируются данные непомерно разросшейся таблицы (можно не копировать устаревшие данные). Чиститься непомерно разросшаяйся таблица. Данные из временной таблицы возвращаются обратно (тригера нужно отключить). Временая таблица удаляется.
Чистить таблицу нужно не командой DELETE (количество записей уменьшится, а место не освободится), а командой TRUNCATE TABLE имя таблицы REUSE STORAGE. После сохранения данных, непомерно разросшуюся таблицу лучше вобще грохнуть (предварительно сохранив для последующего восстановления, данные о тригерах, индексах, внешних ключах других таблиц, ссылающихся на удаляемую таблицу). Создать таблицу заново с новыми экстентами (предварительно подсчитав, сколько же ей нужно места, с запвсом), можно в другом табличном пространстве (INITIAL определённый размер PCTINCREASE 0). Вернуть в неё данные из временной таблицы. восстановить тригера, индексы (для индексов так-же определьть необходимое место) внешние ключи других таблиц, ссылающихся на востановленную таблицу. Удалить временную таблицу. После этого перекомпилировать все хранимые в БД функции, процедуры, пакеты процедур и их тела, зависящие от этой таблицы.

Страницы: 1

Предыдущая тема: Создание базы данных у себя на компе.


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.