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.
