パラレルDML(ダイレクト・パスINSERT
を含む)には次の制限が適用されます。
UPDATE
、MERGE
およびDELETE
操作のイントラ・パーティション並列化を行うには、COMPATIBLE
初期化パラメータを9.2以上に設定する必要があります。
INSERT
VALUES
文はパラレルで実行されません。
1つのトランザクションには、様々な表を変更する複数のDML文が含まれる場合があります。ただし、パラレルDML文で1つの表が変更された後、後続のシリアル文またはパラレル文(DMLまたは問合せ)が、そのトランザクション内で同じ表に再度アクセスすることはできません。
シリアル・ダイレクト・パスINSERT
文の後にもこのような制限があります。同じトランザクションでは、変更された表に後続のSQL文(DMLまたは問合せ)がアクセスできません。
同じ表にアクセスする問合せが許可されるのは、パラレルDMLまたはダイレクト・パスINSERT
文の前であり、後には許可されません。
シリアル文またはパラレル文が、パラレルUPDATE
、DELETE
またはMERGE
、あるいはダイレクト・パスINSERT
によって同じトランザクションで変更された表にアクセスしようとすると拒否され、エラー・メッセージが返されます。
パラレルDMLは、自己参照型整合性、削除カスケードおよび遅延整合性の制約がある場合には実行されません。また、ダイレクト・パスINSERT
ではすべての参照整合性がサポートされません。
LOB
列を含む表に対してパラレルDMLを実行できますが、それは表がパーティション化されている場合です。ただし、イントラ・パーティション並列処理はサポートされません。
LOB列を含む非パーティション化表では、LOB列がSecureFiles LOBとして宣言される場合に、パラレルのINSERT
操作がサポートされます。パラレルのUPDATE
、DELETE
およびMERGE
操作は、そのような表に対してはサポートされません。
DML操作が分散トランザクションに含まれる場合、またはDMLまたは問合せ操作の対象がリモート・オブジェクトである場合、そのDML操作はパラレルで実行できません。
クラスタ化表がサポートされていません。
パラレルのUPDATE
、DELETE
およびMERGE
操作は、一時表に対してはサポートされません。
表がパーティション化されていない場合、パラレルDMLは、ビットマップ索引を使用した表でサポートされません。
これらの制限に違反すると文がシリアルで実行されます。警告またはエラー・メッセージは返されません(トランザクション内で同じ表にアクセスする文に関する制限を除きます。この場合はエラー・メッセージが生成されます)。
パーティション表のパーティション化キーを新しい値に更新できるのは、更新によってその行が新しいパーティションに移動されない場合のみです。表定義で行移動の句が有効になっている場合は更新が可能です。