Oracle
如何更改現有分區的初始範圍
我在一些應該相當簡單的事情上遇到了麻煩……我確定我錯過了一些明顯的東西。
我正在嘗試更改現有表分區的初始範圍。
出於某種原因,我有一個具有各種大小的初始範圍的現有表,並且我正在嘗試重新調整它們,因為我只是在進行一些重組並移動它們(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