Рубрика:
Базы данных /
Инструменты
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
ВЛАДИМИР ТИХОМИРОВ, директор по информационным технологиям СПАО «Ингосстрах», Vladimir.Tikhomirov@ingos.ru
ВАЛЕРИЙ МИХЕИЧЕВ, эксперт Oracle, СПАО «Ингосстрах», Valery.Mikheitchev@ingos.ru
Опыт секционирования таблиц в Oracle Часть 2. Особенности перевода больших таблиц
Перевод больших (по объему данных) несекционированных таблиц в секционированные позволяет повысить производительность работы, уменьшает их объем и объем табличных пространств
В статье рассматриваются особенности перевода существующих несекционированных таблиц в секционированные (далее их будем называть с-таблицы). Показываются этапы и методы перехода на с-таблицы с практическими примерами.
Этапы перевод несекционированных таблиц в секционированные
Переход от обычных таблиц к с-таблицам имеет особенности и соответствующие этапы работ.
Этап 1. Определение наличия свободных табличных пространств
Прежде чем переводить обычную таблицу в с-таблицу, следует выяснить, достаточно ли места в табличных пространствах для создания новой таблицы и ее индексов. Если места недостаточно, то и переход от обычной таблицы к с-таблице потребует иного решения, чем при наличии свободного табличного пространства. Определить размеры табличных пространств, необходимых для создания с-таблицы (на основе определения размера существующей таблицы и ее индексов), позволяют следующие запросы. Определить объем таблицы (в mb) позволяет запрос:
SELECT OWNER,SEGMENT_NAME,SEGMENT_TYPE,TABLESPACE_NAME, ROUND(BYTES/1024/1024) MB
FROM DBA_SEGMENTS S WHERE OWNER='ИМЯ СХЕМЫ' AND SEGMENT_NAME='ИМЯ ТАБЛИЦЫ';
Определить объем, занимаемый индексами таблицы (в mb), позволяет запрос:
SELECT I.TABLE_OWNER,I.TABLE_NAME,I.OWNER INDEX_OWNER, I.INDEX_NAME, S.PARTITION_NAME, S.TABLESPACE_NAME, ROUND(BYTES/1024/1024) MB
FROM DBA_INDEXES I,DBA_SEGMENTS S WHERE S.OWNER=I.OWNER AND S.SEGMENT_NAME=I.INDEX_NAME AND I.OWNER='ИМЯ СХЕМЫ' AND I.TABLE_NAME='ИМЯ ТАБЛИЦЫ';
Определить величину свободного табличного пространства (в mb) позволяет запрос:
SELECT TABLESPACE_NAME, ROUND(SUM(BYTES/1024/1024)) FREE_MB FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME ORDER BY 1
Этап 2. Создание с-таблицы
В ней определяются ключ и метод секционирования, способ создания новой секции и т.д. (как это сделать, описано в предыдущей статье [1]). После создания новой с-таблицы перед переходом на работу с ней рекомендуется проверить правильность создания таблицы и особенно работу ключа секционирования в тестовом режиме.
Этап 3. Выбор метода перехода от несекционированной таблицы к с-таблице
Это важный этап, определяющий, насколько безболезненно будет происходить переход. В статье предлагается несколько методов перехода, в которых могут быть еще варианты.
Статью целиком читайте в журнале «Системный администратор», №9 за 2015 г. на страницах 42-46.
PDF-версию данного номера можно приобрести в нашем магазине.
- Михеичев В. Опыт секционирования таблиц в Oracle. Часть 1. Создание секционированных таблиц. // «Системный администратор», №7-8, 2015 г. – С. 60-65 (http://samag.ru/archive/article/2993).
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|