Увеличение размера раздела при его переименовании

EP
Дата: 26.05.2006 15:55:21
Здравствуйте!

Есть примерно такая таблица:

create table ama
(
        ama_file    varchar(13),
        started     date,
        duration    integer
        ...
)
compress 
pctfree 0
pctused 0
partition by list(file)
(
        partition empty values (null)
)
/
create bitmap index ama_file on ama(ama_file) local
/
create bitmap index ama_started on ama(started) local
/
create bitmap index ama_duration on ama(duration) local
/
...

В ней сейчас около 2000 разделов. Потребовалось переименовать некоторые из них. Делаю так:

SQL> select partition_name,
  2  sum(case when segment_type like 'TABLE%' then bytes else 0 end)/1024/1024 as data_size,
  3  sum(case when segment_type like 'INDEX%' then bytes else 0 end)/1024/1024 as index_size,
  4  sum(bytes)/1024/1024 as full_size
  5  from user_segments
  6  where partition_name='P20051408.01'
  7  group by partition_name
  8  /

PARTITION_NAME                  DATA_SIZE INDEX_SIZE  FULL_SIZE
------------------------------ ---------- ---------- ----------
P20051408.01                           31    38.3125    69.3125

Elapsed: 00:00:00.08
SQL> 
SQL> alter table ama add partition "P01.2005081402" values ('01.2005081402')
  2  /

Table altered.

Elapsed: 00:00:14.95
SQL> update ama set ama_file='01.2005081402' where ama_file='20051408.01'
  2  /

639886 rows updated.

Elapsed: 00:53:16.48
SQL> alter table ama drop partition "P20051408.01"
  2  /

Table altered.

Elapsed: 00:05:43.12
SQL> 
SQL> select partition_name,
  2  sum(case when segment_type like 'TABLE%' then bytes else 0 end)/1024/1024 as data_size,
  3  sum(case when segment_type like 'INDEX%' then bytes else 0 end)/1024/1024 as index_size,
  4  sum(bytes)/1024/1024 as full_size
  5  from user_segments
  6  where partition_name='P01.2005081402'
  7  group by partition_name
  8  /

PARTITION_NAME                  DATA_SIZE INDEX_SIZE  FULL_SIZE
------------------------------ ---------- ---------- ----------
P01.2005081402                         53    42.8125    95.8125

Elapsed: 00:00:01.92

Объясните, почему раздел настролько увеличивается?
Калина
Дата: 26.05.2006 16:30:51
SQL> CREATE TABLE TST_PART
  2  (
  3    C1  NUMBER(20),
  4    C2  NUMBER(20)
  5  )
  6  TABLESPACE USERS
  7  STORAGE    (INITIAL  10M NEXT 10M )
  8  PARTITION BY LIST (C1)
  9  (
 10    PARTITION P1 VALUES (1),
 11    PARTITION P2 VALUES (2)
 12  );

Table created.

SQL> alter table tst_part add partition p3 values(3);

Table altered.

SQL> select partition_name,initial_extent from user_tab_partitions where table_n
ame='TST_PART';

PARTITION_NAME                 INITIAL_EXTENT
------------------------------ --------------
P1                                   10485760
P2                                   10485760
P3                                   10485760

SQL> select partition_name,bytes from dba_segments where segment_name='TST_PART'
;

PARTITION_NAME                      BYTES
------------------------------ ----------
P1                               10485760
P2                               10485760
P3                               10485760
может и у вас так? :-)
------------------------------
Not affilated with VAZ
EP
Дата: 26.05.2006 17:09:01
Калина

STORAGE    (INITIAL  10M NEXT 10M )
может и у вас так? :-)


Нет, STORAGE явно не указан, а значения по умолчанию вряд ли больше 20М ...
Калина
Дата: 26.05.2006 17:11:39
автор
вряд ли больше 20М ..
- гыгыгы ништяк!
Эдак мы много что насочиняем! могу еще подкинуть идеек, например PCT всяческие умолчальные могут быть неверные,

------------------------------
Not affilated with VAZ
EP
Дата: 26.05.2006 17:26:01
Есть исходные данные для создания раздела 'P20051408.01'. И если его создать заново, то размер будет именно таким, как он и был первоначально. Т.е. увеличение размера происходит именно при копировании
EP
Дата: 26.05.2006 17:28:51
Калина
автор
вряд ли больше 20М ..
- гыгыгы ништяк!
Эдак мы много что насочиняем! могу еще подкинуть идеек, например PCT всяческие умолчальные могут быть неверные


Где неверные? Таблица создавалась именно так, как указано, других значений по умолчанию не было. "вряд ли больше 20М" - речь шла об оракловских умолчаниях

Кроме того, см. предыдущее сообщение.
Вячеслав Любомудров
Дата: 29.05.2006 01:42:21
Таблица (и каждая секция) была создана с опцией COMPRESS
Сжатие происходит только для некоторых видов операций (CTAS, ALTER TABLE MOVE)
Обысный UPDATE в этот перечень не входит -- после выполнения UPDATE все строки им затронутые становятся несжатыми.

В твоем случае после UPDATE нужно выполнить ALTER TABLE MOVE PARTITION и перестроить индексы