У меня есть вопрос по Oracle SQL.
Мне нужно разделить существующую таблицу (заполненную данными) по определенному идентификатору. Я провел некоторое исследование, но я не понимаю, как это сделать. Когда я генерирую скрипт из уже созданной секционированной таблицы (в жабе), я получаю следующий вывод:
PARTITION BY LIST (ID)
(
PARTITION SAMPLE_TABLE_6226563032 VALUES (6226563032)
LOGGING
NOCOMPRESS
TABLESPACE samplespace
PCTFREE 10
INITRANS 1
MAXTRANS 255
STORAGE (
INITIAL 64K
NEXT 1M
MAXSIZE UNLIMITED
MINEXTENTS 1
MAXEXTENTS UNLIMITED
BUFFER_POOL DEFAULT
FLASH_CACHE DEFAULT
CELL_FLASH_CACHE DEFAULT
),
PARTITION SAMPLE_TABLE_6164428638 VALUES (6164428638)
LOGGING
NOCOMPRESS
TABLESPACE samplespace
PCTFREE 10
INITRANS 1
MAXTRANS 255
STORAGE (
INITIAL 64K
NEXT 1M
MAXSIZE UNLIMITED
MINEXTENTS 1
MAXEXTENTS UNLIMITED
BUFFER_POOL DEFAULT
FLASH_CACHE DEFAULT
CELL_FLASH_CACHE DEFAULT
),
PARTITION SAMPLE_TABLE_6164428803 VALUES (6164428803)
LOGGING
NOCOMPRESS
TABLESPACE samplespace
PCTFREE 10
INITRANS 1
MAXTRANS 255
STORAGE (
INITIAL 64K
NEXT 1M
MAXSIZE UNLIMITED
MINEXTENTS 1
MAXEXTENTS UNLIMITED
BUFFER_POOL DEFAULT
FLASH_CACHE DEFAULT
CELL_FLASH_CACHE DEFAULT
)
Вы можете видеть, что для каждого идентификатора есть раздел, и это для 100+ IDS/записей.
Кто-нибудь знает решение?
Заранее спасибо.
EDIT1 (здесь добавлен ответ для удобства чтения):
Спасибо за ответ, Вернфрид! Глядя на это, как мы говорим. Но я также ищу оператор раздела. Потому что это должен быть список, но во всех примерах, когда они делают раздел списка, они добавляют жестко закодированные значения. Как это:
PARTITION BY LIST (LOC_CODE)
(
PARTITION GRABB VALUES ('IND'),
PARTITION CNILX VALUES ('NZ'),
PARTITION NOAAS VALUES ('SL'),
PARTITION SGIND VALUES ('RSA'),
PARTITION SAARA VALUES ('PAK'),
PARTITION MYABB VALUES ('USA')
)
Хотя на самом деле он должен быть динамическим (для каждого ID).
EDIT2: я сделал это:
partition by range (id)
interval (1)
(PARTITION "P0" VALUES LESS THAN (1))
TABLESPACE "TABLESPAXE"
;
Но когда я хочу вставить некоторые данные
insert into partitioned_table select * from original_table where id=123456 ;
Выдает исключение:
"ORA-14300: partitioning key maps to a partition outside maximum permitted number of partitions"
Итак, я предполагаю, что базы данных 12C не создают автоматически разделы при вставке? или я ошибаюсь?