使用虚拟列的Oracle自动列表分区不允许对子表进行引用分区

使用虚拟列的Oracle自动列表分区不允许对子表进行引用分区,oracle,oracle12c,database-partitioning,data-partitioning,Oracle,Oracle12c,Database Partitioning,Data Partitioning,我尝试使用虚拟列在测试表上创建分区。这种方法适用于父表或独立表。但是,如果父表使用虚拟列进行分区,则无法在子表上创建引用分区。我在创建子表的表时遇到以下错误 ORA-14659: Partitioning method of the parent table is not supported Oracle版本详细信息: Oracle数据库12c企业版12.2.0.1.0版-64位生产 PL/SQL 12.2.0.1.0版-生产 请在下面找到脚本 --######################

我尝试使用虚拟列在测试表上创建分区。这种方法适用于父表或独立表。但是,如果父表使用虚拟列进行分区,则无法在子表上创建引用分区。我在创建子表的表时遇到以下错误

ORA-14659: Partitioning method of the parent table is not supported
Oracle版本详细信息: Oracle数据库12c企业版12.2.0.1.0版-64位生产 PL/SQL 12.2.0.1.0版-生产

请在下面找到脚本

--######################PARENT TABLE###########################################
DROP TABLE BILL_HEADER_TST;

CREATE TABLE BILL_HEADER_TST
(
   BILL_HDR_SID   NUMBER (30) NOT NULL,
   TCN                VARCHAR2 (21 BYTE) NOT NULL,
   TCN_DATE           DATE,
   PROGRAM_CID        NUMBER,
   CONSTRAINT XPKBILL_HEADER_TST PRIMARY KEY (BILL_HDR_SID),
   PARTN_KEY          NUMBER

                            AS (   PROGRAM_CID
                                || TO_NUMBER (TO_CHAR (TCN_DATE, 'YYYYMM')))
                            VIRTUAL
)
PARTITION BY LIST (PARTN_KEY)   AUTOMATIC (PARTITION PDEFAULT VALUES (1201401));


------------------LOCAL INDEXES------------------------------------------------

CREATE INDEX XIE33BILL_HEADER_TST
   ON BILL_HEADER_TST (TCN_DATE)
   LOCAL;


CREATE INDEX XIE38BILL_HEADER_TST
   ON BILL_HEADER_TST (PROGRAM_CID)
   LOCAL;

---------------------INDEXES---------------------------------------------------
CREATE UNIQUE INDEX XAK1BILL_HEADER_TST
   ON BILL_HEADER_TST (TCN)
   LOGGING
   NOPARALLEL;


--#############CHILD TABLE#####################################################   
DROP TABLE BILL_LINE_TST;

CREATE TABLE BILL_LINE_TST
(
   BILL_LINE_SID                 NUMBER (30) NOT NULL,
   BILL_HDR_SID               NUMBER (30) NOT NULL,
   CLM_TYPE_CID                   NUMBER (3),
   PROGRAM_CID                    NUMBER,
   CONSTRAINT XPKBILL_LINE_TST PRIMARY KEY (BILL_LINE_SID),
   CONSTRAINT XFK17_BILL_LINE_TST FOREIGN KEY
      (BILL_HDR_SID)
       REFERENCES BILL_HEADER_TST (BILL_HDR_SID) ON DELETE CASCADE
)
PARTITION BY REFERENCE (XFK17_BILL_LINE_TST)
ENABLE ROW MOVEMENT;



来自SQL语言手册

自动列表分区受“列表分区限制”中列出的限制。以下附加限制适用:

  • 自动列表分区表必须至少有一个分区 创建时。因为新的分区是自动为 新的、未知的分区键值,自动 列表分区表不能有默认分区
  • 索引组织不支持自动列表分区 表或外部表
  • 对于包含以下内容的表,不支持自动列表分区 varray列
  • 无法在自动服务器上创建本地域索引 列出分区表。您可以在上创建全局域索引 自动列出分区表
  • 自动列表分区表不能是子表或子表 用于引用分区的父表
  • 子分区不支持自动列表分区 水平

谢谢康纳。我相信你的观点是我正在尝试的方案不受支持。自动列表分区表不能是用于引用分区的子表或父表。有什么解决方法可以实现这一点吗?我认为您需要“自行扩展”它,即,将父属性下放到子表中,并使用常规分区。您仍然可以看到分区连接等的所有好处。我可以使用
INTERVAL
而不是
AUTOMATIC
来创建表BILL\u HEADER\t的最后一行
partitionbylist(PARTN_键)间隔(partitionpdefault值(1201401))