Пересоздал табличные пространства и таблицу, создав по умолчанию две секции (каждая из которых в свою очередь включает по 4 подсекции):
CREATE TABLESPACE OP_J_01 DATAFILE 'op_j_tbs01.dbf' SIZE 128K AUTOEXTEND ON NEXT 1K MAXSIZE UNLIMITED;
CREATE TABLESPACE OP_J_02 DATAFILE 'op_j_tbs02.dbf' SIZE 128K AUTOEXTEND ON NEXT 1K MAXSIZE UNLIMITED;
CREATE TABLESPACE OP_J_03 DATAFILE 'op_j_tbs03.dbf' SIZE 128K AUTOEXTEND ON NEXT 1K MAXSIZE UNLIMITED;
CREATE TABLESPACE OP_J_04 DATAFILE 'op_j_tbs04.dbf' SIZE 128K AUTOEXTEND ON NEXT 1K MAXSIZE UNLIMITED;
CREATE TABLE ZAKUPKI_DEV.OPERATION_JOURNAL_REDIF
( OP_JOURNAL_ID NUMBER(20,0) NOT NULL ENABLE,
ORDER_ID NUMBER(20,0),
TMSTMP TIMESTAMP (6),
EVENT_CLASS VARCHAR2(50)
)
PARTITION BY RANGE (TMSTMP) INTERVAL (NUMTOYMINTERVAL(1,'MONTH'))
SUBPARTITION BY LIST (EVENT_CLASS)
SUBPARTITION TEMPLATE
(
SUBPARTITION EC_REGISTER_CONTRACTS VALUES ('REGISTER_CONTRACTS') TABLESPACE OP_J_01,
SUBPARTITION EC_ORDER VALUES ('ORDER') TABLESPACE OP_J_02,
SUBPARTITION EC_AUTHORIZATION VALUES ('AUTHORIZATION') TABLESPACE OP_J_03,
SUBPARTITION EC_OTHER VALUES (DEFAULT) TABLESPACE OP_J_04
)
(PARTITION p201101 VALUES LESS THAN (TO_DATE('01012011','ddmmyyyy')),
PARTITION p201102 VALUES LESS THAN (TO_DATE('01022011','ddmmyyyy'))
) ENABLE ROW MOVEMENT;
Смотрим размер файлов данных:
CREATE TABLESPACE OP_J_01 DATAFILE 'op_j_tbs01.dbf' SIZE 128K AUTOEXTEND ON NEXT 1K MAXSIZE UNLIMITED;
CREATE TABLESPACE OP_J_02 DATAFILE 'op_j_tbs02.dbf' SIZE 128K AUTOEXTEND ON NEXT 1K MAXSIZE UNLIMITED;
CREATE TABLESPACE OP_J_03 DATAFILE 'op_j_tbs03.dbf' SIZE 128K AUTOEXTEND ON NEXT 1K MAXSIZE UNLIMITED;
CREATE TABLESPACE OP_J_04 DATAFILE 'op_j_tbs04.dbf' SIZE 128K AUTOEXTEND ON NEXT 1K MAXSIZE UNLIMITED;
CREATE TABLE ZAKUPKI_DEV.OPERATION_JOURNAL_REDIF
( OP_JOURNAL_ID NUMBER(20,0) NOT NULL ENABLE,
ORDER_ID NUMBER(20,0),
TMSTMP TIMESTAMP (6),
EVENT_CLASS VARCHAR2(50)
)
PARTITION BY RANGE (TMSTMP) INTERVAL (NUMTOYMINTERVAL(1,'MONTH'))
SUBPARTITION BY LIST (EVENT_CLASS)
SUBPARTITION TEMPLATE
(
SUBPARTITION EC_REGISTER_CONTRACTS VALUES ('REGISTER_CONTRACTS') TABLESPACE OP_J_01,
SUBPARTITION EC_ORDER VALUES ('ORDER') TABLESPACE OP_J_02,
SUBPARTITION EC_AUTHORIZATION VALUES ('AUTHORIZATION') TABLESPACE OP_J_03,
SUBPARTITION EC_OTHER VALUES (DEFAULT) TABLESPACE OP_J_04
)
(PARTITION p201101 VALUES LESS THAN (TO_DATE('01012011','ddmmyyyy')),
PARTITION p201102 VALUES LESS THAN (TO_DATE('01022011','ddmmyyyy'))
) ENABLE ROW MOVEMENT;
Смотрим размер файлов данных:
| TABLESPACE_NAME | BYTES | USER_BYTES |
| OP_J_01 | 19005440 | 18939904 |
| OP_J_02 | 19005440 | 18939904 |
| OP_J_03 | 19005440 | 18939904 |
| OP_J_04 | 19005440 | 18939904 |
А вот это уже интересно. Получается, на каждую субпартицию заранее резервируется место в табличном пространстве: на одну субпартицию 10МБ, на две 18МБ.
Для чистоты эксперимента проделал тоже самое, но с созданием трех секций:
| TABLESPACE_NAME | BYTES | USER_BYTES |
| OP_J_01 | 27394048 | 27328512 |
| OP_J_02 | 27394048 | 27328512 |
| OP_J_03 | 27394048 | 27328512 |
| OP_J_04 | 27394048 | 27328512 |
В результате этих манипуляций возникло нелепое предположение: может быть такое, что независимо от количества данных в каждой партиции размер файлов данных увеличивается синхронно для всех? Проведем эксперимент:
Заново создаю файлы данных и таблицу с одной секцией по-умолчанию (всё как в первом посте), имею размер файлов данных 10616832 байт (~10МБ).
Вставляю в таблицу 383940 записей с EVENT_CLASS = 'ORDER' и tmstmp < TO_DATE('01012011', 'ddmmyyyy'), ожидая при этом, что увеличиться только файл данных, соответствующий табличному пространству EC_ORDER VALUES:
| TABLESPACE_NAME | BYTES | USER_BYTES |
| OP_J_01 | 10616832 | 10551296 |
| OP_J_02 | 19005440 | 18939904 |
| OP_J_03 | 10616832 | 10551296 |
| OP_J_04 | 10616832 | 10551296 |
Так и получается. При этом на самом деле был создан дополнительный экстент для сегмента, соответствующего субпартиции P201101_EC_ORDER.
Нелепое предположение осталось неподтвержденным и это прекрасно :)