ADDオプションを使用すると、パーティション レベルに対して追加のパーティション数を予約しておき、後でALTER TABLE文を使用してパーティション レベルにパーティションを追加することができます。以下のルールが行パーティションまたは列パーティションのADD句に当てはまります。
- パーティション レベルにADD句を指定した場合、そのパーティション レベルの最大パーティション数は、そのレベルに定義されたパーティション数に、ADD句で指定した一定値を加算した数になります。
最大値は9,223,372,036,854,775,807です。
- 行パーティション レベルの最大パーティション数は、少なくとも2にする必要があります。
このエラーが起こるのは、行パーティション レベルに1つのパーティションだけを定義した場合に、同時にADD 0を指定したとき、またはADDオプションを指定しないために最大数が2以上に増えないときです。以下のいずれかがその原因となります。
- 単一レベル パーティションでは、組み合わせパーティションの最大数は、このパーティション レベルの最大パーティション数と同じです。その値は9,223,372,036, 854,775,807を超えてはなりません。
- 2バイト パーティションの場合、最初のレベルのパーティションの最大数は、組み合わせパーティションの最大数が65,535を超えない範囲での最大数になります。
- 8バイト パーティションの場合、最初のレベルのパーティションの最大数は、組み合わせパーティションの最大数が9,223,372,036,854,775,807を超えない範囲での最大数になります。
- 行レベル パーティションが2バイト パーティションになっているレベルのうち、ADD句を指定しないレベル順のレベルについては、パーティションの最大数は、8バイト パーティションにならずに済む最大値です。
それ以外の場合、このレベルの最大パーティション数は、9,223,372,036,854,775,807を超えない最大値です。
- ADD 0を指定すると、パーティション レベルについて、そのレベルの最大パーティション数が、定義されているパーティション数と同じであることを指定できます。
これは、ADD句を指定しないで超過分のパーティションを割り当てないことにより、行パーティション レベルのパーティション数を低くしたい場合に役立ちます。
これが役立つのは、ある列パーティション レベルについてデフォルトのADD 10を上書きして、他のレベルのパーティション数を増やす場合です。
- 列パーティション レベルにADD句を指定しておらず、そのレベルだけがパーティション レベルの場合、パーティションの最大数は、内部使用のための2つを含めて、65,534です。
- 次のすべての条件が当てはまる場合、列パーティション レベルのパーティションの最大数は、定義されている列パーティション数に10を加算した数になります。
- 列パーティション レベルに対してADD句を指定していない。
- テーブルまたは結合インデックスが行パーティションも持っている。
- 行パーティション レベルの少なくとも1つで、ADD句が指定されていない。
この場合、列パーティション レベルのデフォルトのADD句は、ADD 10です。
- 次のすべての条件が当てはまる場合、列パーティション レベルの最大パーティション数は、パーティションが8バイト パーティションにならずに済む最大値です。
- 列パーティション レベルに対してADD句を指定していない。
- テーブルまたは結合インデックスが行パーティションも持っている。
- すべての行パーティション レベルにADD句を指定している。
- 定義されている列パーティション数に10を加算した数を、列パーティションの最大数として使用している。この場合、列パーティションは2バイト パーティションになります。
それ以外の場合、列パーティション レベルのパーティションの最大数は9,223,372,036, 854,775,807になります。