Oracle

如何更改現有分區的初始範圍

  • March 11, 2016

我在一些應該相當簡單的事情上遇到了麻煩……我確定我錯過了一些明顯的東西。

我正在嘗試更改現有表分區的初始範圍。

出於某種原因,我有一個具有各種大小的初始範圍的現有表,並且我正在嘗試重新調整它們,因為我只是在進行一些重組並移動它們(DEV 環境)。

我正在開發 Oracle 11.2.0.3.0

我有一個表,範圍分區。駐留在本地管理的表空間中。它最初是系統管理的,但是,我正在嘗試使用統一範圍創建一個新表空間。我已經這樣做了,並且正在嘗試將對象移動過來,但是,我有幾個(空)分區,它們似乎想要具有多個範圍(初始 8M,儘管統一為 1M)。(奇怪的是,一些分區很好,初始值為 1M ..)

我試過了:

alter table my_table modify default attributes storage ( initial 1M next 1M );

執行,但似乎沒有做任何事情。所以我嘗試了這個:

alter table my_table modify default attributes for partition part101 storage ( initial 1M );

但這會引發異常:

ORA-14264: table is not partitioned by Composite Range method

如何更改(範圍)分區的初始範圍?

即使它是一個空分區,MOVE也是這樣做的方法:

create table t1 (c1 number, c2 varchar2(100))
segment creation immediate
partition by range (c1)
(
 partition p1 values less than (10),
 partition p2 values less than (20)
);

SQL> select partition_name, initial_extent, next_extent
    from user_tab_partitions where table_name = 'T1';

PARTITION_NAME       INITIAL_EXTENT NEXT_EXTENT
-------------------- -------------- -----------
P1                          8388608     1048576
P2                          8388608     1048576

預設8M/1M。現在移動分區:

SQL> alter table t1 move partition p1 storage (initial 65536 next 65536);

Table altered.

SQL> select partition_name, initial_extent, next_extent from
    user_tab_partitions where table_name = 'T1';

PARTITION_NAME       INITIAL_EXTENT NEXT_EXTENT
-------------------- -------------- -----------
P1                            65536       65536
P2                          8388608     1048576

修改預設屬性只會對設置後創建的分區產生影響:

SQL> alter table t1 modify default attributes storage ( initial 1M next 1M );

Table altered.

SQL> alter table t1 add partition p3 values less than (30);

Table altered.

SQL> select partition_name, initial_extent, next_extent from
    user_tab_partitions where table_name = 'T1';

PARTITION_NAME       INITIAL_EXTENT NEXT_EXTENT
-------------------- -------------- -----------
P1                            65536       65536
P2                          8388608     1048576
P3                          1048576     1048576

引用自:https://dba.stackexchange.com/questions/132013