【发布时间】:2020-03-05 07:03:26
【问题描述】:
我尝试使用虚拟列在测试表上创建分区。这种方法适用于 PARENT 或独立表。但是,如果 PARENT 表是使用虚拟列分区的,我无法在 CHILD 表上创建 REFERENCE 分区。创建 CHILD 表时出现以下错误
ORA-14659: Partitioning method of the parent table is not supported
Oracle 版本详情: Oracle Database 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;
【问题讨论】:
-
我能够使用
INTERVAL而不是AUTOMATIC创建检查 CREATE TABLE BILL_HEADER_TST 的最后一行PARTITION BY LIST (PARTN_KEY) INTERVAL (PARTITION PDEFAULT VALUES (1201401));
标签: oracle oracle12c database-partitioning data-partitioning