20 juillet 2016

Partitionnement Oracle "By reference" - Effets d'un DROP/CREATE sur l'ordre des partitions


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);                                           

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                              
        (      NUDOSS       NUMBER(38)                       NOT NULL ,
               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.

5 juillet 2016

hr-rich-client ERROR - HRWEB3016 Invalid node name



Au cours de la vie d’un de mes projets, l’environnement de PRD a été initialisé par duplication d’un environnement QUA.

Puis une fois le démarrage réalisé, les livraisons en PRD ont été réalisées à partir d’un environnement INT.

Problème : 
Suite à la copie du ZIP de l’arbre Web de INT sur PRD, l'utilisateur rencontre des « pages blanches »...

Il se trouve qu'entre QUA et INT ... HRStudio a nommé différemment les LFA
/hraqua/tomcat/hr-rich-client/protected/TA0FR/F/FRP/TA0FR0DN/auevaa01.html <- QUA != INT
/hraint/tomcat/hr-rich-client/protected/TA0FR/F/FRP/TA0FR0DN/au0dsn03.html
/hraprd/tomcat/hr-rich-client/protected/TA0FR/F/FRP/TA0FR0DN/au0dsn03.html <- PRD == INT

Par acquis de conscience le ZIP et l’objet « arbre de publication » TA0FR ont été relivrés (export en mode complexe de INT sur PRD - le fichier contient bien les 501 objets "LY" associés aux LFA).

Dans le /hraprd/tomcat/hr-rich-client/protected/TA0FR/lfas.xml on retrouve
<LFA deployPlatform="CDPLPINT" deployTime="2016-05-25-17.14.29" deployUser="DIGIX" name="TA0FR0DN" synchObject="Yes" version="004"><LANG Code="F"><VOC Code="FRP"/></LANG></LFA>
Donc le fichier des LFA vient bien de INT

Dans le /hraprd/tomcat/hr-rich-client/protected/TA0FR/navigation_F_FRP.xml on retrouve
<HRNODE BorderName="ASB00001" Confid="" HelpId="FCW0AK01" Id="TA0FR0DN_AU0DSN03" Lfa="TA0FR0DN" Locations="FR" Modules="PAD" PresentationType="" ProcessName="FD0PA" SPCA="PADEVT02" TreeNodeName="AU0DSN03" ValidityState="1">
Ce qui est cohérent avec INT et avec l’arborescence des fichiers de PRD

Pourtant – après arrêt/démarrage - l'utilisateur rencontre toujours des pages blanches, et dans la log de production on trouve encore :
GET /hr-rich-client/operation.jsp?TREE=TA0FR&LANG=F&NODE=TA0FR0DN_AUEVAA01&VOC=FRP&LOADNODE=false

En fait, l’association LFA (action fonctionnelle localisée) - Page web est stockée dans l’objet Scope ...

Si l'on exporte et décode l’objet AR INST en PRD on y retrouve :
<node name="TA0FR_TA0FR0DN_AUEVAA01" node_id="AUEVAA01" type="NN" functional-action="CSTMCY22" index="0" modules="ANA,ASM,BEN,CMP,CPT,DIV,DUC,EVD,FDP,GHR,GTA,HWH,ITS,…"><loc value="FR"/>


Conclusion :

  • Ne pas changer d’environnement « source » pour les livraison en production d’arbre web,
  • Ou, si cela est nécessaire, relivrer systématiquement le scope avec le zip de l’arbre