かなりシンプルなもので問題が発生しています...明らかなものがないと確信しています。
既存のテーブルパーティションの初期エクステントを変更しようとしています。
何らかの理由で、さまざまなサイズの初期エクステントを持つ既存のテーブルがあり、いくつかの再編成を行ってそれらを移動しているだけなので、それらを再調整しようとしています(DEV環境)。
私はOracle 11.2.0.3.0に取り組んでいます
テーブルがあり、範囲が分割されています。ローカル管理のテーブルスペースに常駐します。もともとはシステム管理でしたが、私は均一エクステントを使用して新しいテーブルスペースを作成しようとしています。私はそれを実行し、オブジェクトを移動しようとしていますが、複数のエクステント(1Mのユニフォームにもかかわらず最初の8M)が必要なように見えるいくつかの(空の)パーティションがあります。 (奇妙なことに、一部のパーティションは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