Dans le cas d'un partitionnement "BY REFERENCE", on va partitionner la table ZX00 sur le critère de la période de paie (PERPAI) et les autres tables ZX** sur la base de la clef étrangère (utilisant le numéro de dossier NUDOSS).
Par exemple :
CREATE TABLE HR.ZX00
( NUDOSS NUMBER(38) NOT NULL ,
SOCDOS CHAR (0003) NOT NULL ,
PGPDOS NUMBER(38) NOT NULL ,
IDGPRG NUMBER(38) NOT NULL ,
SOCCLE CHAR (0003) NOT NULL ,
MATRIC CHAR (0012) NOT NULL ,
NUDOSP NUMBER (0003, 0) NOT NULL ,
IDSITU CHAR (0002) NOT NULL ,
PERPAI CHAR (0008) NOT NULL ,
…
FLGNTG CHAR (0001) NOT NULL )
PARTITION BY LIST(PERPAI)
(PARTITION MT201401 VALUES ('MT201401') TABLESPACE HRZX_MT201401);
( NUDOSS NUMBER(38) NOT NULL ,( NUDOSS NUMBER(38) NOT NULL ,
SOCDOS CHAR (0003) NOT NULL ,
PGPDOS NUMBER(38) NOT NULL ,
IDGPRG NUMBER(38) NOT NULL ,
SOCCLE CHAR (0003) NOT NULL ,
MATRIC CHAR (0012) NOT NULL ,
NUDOSP NUMBER (0003, 0) NOT NULL ,
IDSITU CHAR (0002) NOT NULL ,
PERPAI CHAR (0008) NOT NULL ,
…
FLGNTG CHAR (0001) NOT NULL )
PARTITION BY LIST(PERPAI)
(PARTITION MT201401 VALUES ('MT201401') TABLESPACE HRZX_MT201401);
ALTER TABLE
HR.ZX00 -- global
ADD CONSTRAINT PKZX00
PRIMARY KEY (NUDOSS)
USING INDEX TABLESPACE HRZXI
;
ALTER TABLE HR.ZX00
ADD
CONSTRAINT X2ZX00
UNIQUE
(
SOCCLE ,
PERPAI ,
...
TIMEST )
USING INDEX
LOCAL (PARTITION MT201401 TABLESPACE HRZXI_MT201401)
;
CREATE
INDEX HR.X4ZX00 ON
HR.ZX00
(NUGEST ,
NUDOSP )
LOCAL (PARTITION MT201401 TABLESPACE HRZXI_MT201401)
; CREATE TABLE HR.ZXTA NULIGN NUMBER(38) NOT NULL ,
SOCDOS CHAR (0003) NOT NULL ,
…
PERPAI CHAR (0008) NOT NULL ,
USAGEP CHAR (0001) NOT NULL ,
NUMTRT CHAR (0001) NOT NULL ,
NUMBUL CHAR (0002) NOT NULL ,
TIMEST DATE NOT NULL ,
CONSTRAINT FKZXTA
FOREIGN KEY (NUDOSS ) REFERENCES HR.ZX00
ON DELETE CASCADE )
PARTITION BY REFERENCE (FKZXTA)
;
ALTER TABLE HR.ZXTA
ADD CONSTRAINT X1ZXTA UNIQUE
(NUDOSS ,
NULIGN )
USING INDEX
LOCAL (PARTITION MT201401 TABLESPACE HRZXI_MT201401) ;
L'avantage avec un partitionnement « BY REFERENCE » c'est que l'absence de champ PERPAI dans la table ZX** n’est pas impactante, et que la création des partitions de toutes les tables filles (et des index) se fait automatiquement suivant celles de la ZX00.