powered by simpleCommunicator - 2.0.29     © 2024 Programmizd 02
Map
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Изменить секционирование
2 сообщений из 2, страница 1 из 1
Изменить секционирование
    #40124321
_human
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хело
есть заполненная данньіми секцинированная таблица.
Хочу изменить секционирование с ручного на авто.
Для етого как я понял нужно поле в таблице, в етом случае(месяц числом), т.е. нужно будет менять таблицу.

Есть два вопроса
1) обойтись без изменения таблицьі не получиться ? поле month(created)
2) table space указаньі в текуцей таблице одинаковьіе для каждой секции. Если указать table space в новой табцице 1-н раз при создании(см. ниже) ето что-то меняет ?

План таков, создать новую таблицу с авто секциями, перекинуть старьіе секции в новую.
Удалить текущюю и затем переименовать новую.

3) не станет проблемой ли вьічисляемое поле month_int в новой таблице при перемещении секций(другая структура) ?

Возможно есть идеи лучше ?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
create table parts (
id int
,created date
)
organize by row
distribute by hash(id)
data capture none
compress no
partition by range(created nulls last)
(
partition 202102 starting from ('2021-02-01') inclusive ending ('2021-03-01') exclusive in ts1 index in ts2 long in ts1,
[...] -- etc
partition 202112 starting from ('2021-12-01') inclusive ending ('2022-01-01') exclusive in ts1 index in ts2 long in ts1
)



Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
create table parts_new (
id int
,created date
,month_int int generated always as (month(created))
)
organize by row
in ts1 index in ts2 long in ts1
distribute by hash(id)
data capture none
compress no
partition by range(month_int)
(starting from 1 ending at 12 every 1)
...
Рейтинг: 0 / 0
Изменить секционирование
    #40124355
_human
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в целом +- получилось, но не совсем авто секции.
- сначала добавляем вьічисляемое поле month_int в текущую таблицу.
- секционируем новую таблицу - создаем пустую секцию

detach каждой секции(уже в новьім полем)
attach к новой таблице с явньім указанием границ секции

много кода получилось.
не уверен можно ли как-то циклом/курсором - зачитать мета данньіе с SYSCAT.DATAPARTITIONS
не знаю "скушает"-ли ALTER TABLE значение в переменной или курсор.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
create table parts_new (
id int
,created date
,month_int int generated always as (month(created))
)
organize by row
in ts1 index in ts2 long in ts1
distribute by hash(id)
data capture none
compress no
partition by range(month_int)
(starting from 0 ending at 1)
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Изменить секционирование
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]