| 
                            	
                                	| Рубрика: 
                                    
									Базы данных / 
									Инструменты | 
	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+ |