私はこれを以前に試しましたが、うまくいきます:
私のデータはこのように保存されています。
次のcreateステートメントを使用してテーブルを作成しました_T3
_
_CREATE TABLE SLABELSVALUE
( "DOC_ID" VARCHAR2(80 BYTE) NOT NULL ENABLE,
...
...
"DOC_DATETIME" DATE NOT NULL ENABLE, //additional in T3 compared to T1
"DOC_STATE" VARCHAR2(5 BYTE), //additional in T3 compared to T1
CONSTRAINT...
PARTITION BY RANGE (DOC_DATETIME)
INTERVAL(NUMTOYMINTERVAL(1, 'MONTH')) **Line added for auto partition
SUBPARTITION BY LIST (DOC_STATE)
SUBPARTITION TEMPLATE(
SUBPARTITION IN_PB VALUES('IN-PB') , //All states
SUBPARTITION IN_RJ VALUES('IN-RJ') ,
...
)
(
PARTITION p0 VALUES LESS THAN (TO_DATE('01-MAY-2006','DD-MON-YYYY'))
//Ealier when it worked I defined all partitions for testing,
//When I included above lines `**` for auto partitioning it doesn't work
);
_
私の試用シナリオでは、Interval
パーティション分割メカニズムを含めなかったときに機能しました。
また、テスト用にすべてのパーティションを明示的に定義しました。
T1
_データがあります。今何をしようとしているのですか?
この日付までの10年X 12(月)パーティションについては、明示的に言及したくありません。したがって、INTERVAL(NUMTOYMINTERVAL(1, 'MONTH'))
が含まれており、今後数か月間パーティションを明示的に定義したくありません。
そして Oracle に従って最初のパーティションを定義しました
今何が問題なのですか?
ORA-14300:パーティション化キーは、許可されている最大パーティション数を超えたパーティションにマップされます
NULL値をチェックしましたか
はい、他のブログが列のNULL値をチェックしたことを示唆しているので、何もありません。
私が疑うことは?
インターバル・パーティション化では、サブパーティションはサポートされない場合があります。
エラーを生成するステートメントは次のとおりです。
_INSERT INTO T3
SELECT T1.*, T2.DOC_DATETIME, T2.DOC_STATE
FROM T1
LEFT OUTER JOIN T2
ON (T1.DOC_ID = T2.DOC_ID)
WHERE T2.DOC_DATETIME BETWEEN '01-APR-06' AND SYSDATE;
_
1行目からINSERT
を削除してSELECT
を保持すると、出力が得られます。
_T1 (Doc_ID varchar not null PK, label_ID varchar not null, label_val varchar not null)
T2 (DOc_ID varchar not null PK, Doc_State varchar not null, Doc_date DATE not null)
T3 (DOC_ID...,label_ID...,label_val..., Doc_State..., Doc_Date)
_
解決策があれば教えてください。
すべての範囲パーティションを明示的に定義する必要がありました。時間隔パーティション化は、サブパーティション化テンプレートではうまく機能しませんでした。
Oracleは、インターバルパーティションに対して1mパーティションのハード制限を行います。
パーティションを次のように定義しました
PARTITION jan06 VALUES LESS THAN (TO_DATE('01-FEB-2006','DD-MON-YYYY')),
...
ALL THE WAY FOR NEXT 20 YEARS..
...
PARTITION jan26 VALUES LESS THAN (TO_DATE('01-FEB-2026','DD-MON-YYYY')),