Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1401 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Oracle] recreation de foreign key avec option novalidate

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Oracle] recreation de foreign key avec option novalidate

n°2264109
poulpeleac​h
Octopus paradisi
Posté le 07-08-2015 à 19:20:46  profilanswer
 

Sur la BDD Oracle de mon appli, on va rajouter l'option "ON DELETE CASCADE" sur toutes les foreign key des tables contenant les données "vives" (non réferentielles).
Avec Oracle, on est malheureusement obligé de recréer la FK pour ajouter cette option.  
 
Or, après test, l'opération prendrait plus d'1h meme en utilisant du parallélisme. (sans j'en ai pour plus de 2h).  
Sauf si on met  l'option NOVALIDATE, auquel cas c'est quasi instantané.  Ce qui veut dire qu'on peut potentiellement (c'est théorique, en principe, l'opération se ferait avec l'applicait éteint) avoir des données qui ne respecteront pas la FK après la création.    
 
 
J'ai un peu de mal à imaginer les risques, bugs, que ca peut induire, à part avoir quelques lignes orphelines ?
Des avis?
 
Note utile : l'applicatif est essentiellement du Java avec Hibernate pour accés à la base.


---------------
Les lacets le gravier et dans l'air du soir , la Chrysler s'envole dans les fougères et les nénuphars
mood
Publicité
Posté le 07-08-2015 à 19:20:46  profilanswer
 

n°2264236
kao98
...
Posté le 11-08-2015 à 11:11:05  profilanswer
 

Tu t'exposes à des exceptions en tout genre dans ton appli :p

 

Ceci dit, tu dis que tu dois REcréer ta FK, sous-entendu elle existe déjà, et tu veux juste ajouter l'option ON DELETE CASCADE ? C'est bien ça ?

 

Si c'est le cas, que ta FK existe déjà, alors normalement les données respectent  déjà l'intégrité référentielle, tu ne devrais pas avoir besoin de les valider à nouveau.

Message cité 1 fois
Message édité par kao98 le 11-08-2015 à 11:11:40

---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
n°2264270
poulpeleac​h
Octopus paradisi
Posté le 11-08-2015 à 19:05:27  profilanswer
 


kao98 a écrit :


Ceci dit, tu dis que tu dois REcréer ta FK, sous-entendu elle existe déjà, et tu veux juste ajouter l'option ON DELETE CASCADE ? C'est bien ça ?
Si c'est le cas, que ta FK existe déjà, alors normalement les données respectent  déjà l'intégrité référentielle, tu ne devrais pas avoir besoin de les valider à nouveau.  


 
Oui, sauf insertions intempestives pendant l'opération, je suis certain que les données respectent déjà la FK (j'ai joué le script avec option VALIDATE sur une copie de la prod d'il y a 3 semaines, d'ailleurs) et donc que la validation est pas indispensable.  
 

kao98 a écrit :

Tu t'exposes à des exceptions en tout genre dans ton appli :p


On peut le supposer, mais concretement, supposons que j'ai une table PAPA et une table FISTON avec FK sur PAPA.  
Ce que je me disais, c'est que le pire qui puisse m'arriver c'est qu'on retrouve pas le PAPA du FISTON et que ce soit pas prévu dans le code, et que ca fasse planter le consommateur d'un traitement parmi des milliers. J'ose esperer qu'Hibernate partirait pas totalement en vrille.  
Cela dit, à ma connaissance, l'applicatif remonte très rarement la hiérarchie des objets dans ce sens là, il a plutot tendance à partir du PAPA pour trouver tous les FISTON.  
Je pense que je vais faire le test quand j'aurai un peu de temps à tuer, pour voir...


---------------
Les lacets le gravier et dans l'air du soir , la Chrysler s'envole dans les fougères et les nénuphars
n°2264274
kao98
...
Posté le 11-08-2015 à 19:42:34  profilanswer
 

poulpeleach a écrit :


 
Oui, sauf insertions intempestives pendant l'opération, je suis certain que les données respectent déjà la FK (j'ai joué le script avec option VALIDATE sur une copie de la prod d'il y a 3 semaines, d'ailleurs) et donc que la validation est pas indispensable.  
 


 

poulpeleach a écrit :


On peut le supposer, mais concretement, supposons que j'ai une table PAPA et une table FISTON avec FK sur PAPA.  
Ce que je me disais, c'est que le pire qui puisse m'arriver c'est qu'on retrouve pas le PAPA du FISTON et que ce soit pas prévu dans le code, et que ca fasse planter le consommateur d'un traitement parmi des milliers. J'ose esperer qu'Hibernate partirait pas totalement en vrille.  
Cela dit, à ma connaissance, l'applicatif remonte très rarement la hiérarchie des objets dans ce sens là, il a plutot tendance à partir du PAPA pour trouver tous les FISTON.  
Je pense que je vais faire le test quand j'aurai un peu de temps à tuer, pour voir...


Clairement ça dépend du code.
En ce moment je fais du test et intégration sur un projet avec de l'oracle et du java justement. Et les exceptions sont monnaie courante. Ca pète des NullReferenceException et autre joyeusetés. Le tout c'est de les catcher et de les traiter au niveau applicatif (hibernate génère des exceptions, et parfois fait même remonter des exceptions oracle, à l'applicatif), ce qui est peut-être déjà correctement fait.
 
Mais vraiment, je pense que tes données seront saines :jap:


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Oracle] recreation de foreign key avec option novalidate

 

Sujets relatifs
[Oracle] PL/SQL, curseurs[VBScript] Connexion oracle en sysdba
POWERSHELL ORACLE[Réglé] [SQL] [ORACLE] Tri / regroupement "cyclique" ?
Reproduire ligne avec plusieurs Cases d'option/Zone de groupe ET MacroPHP/Oracle : erreurs avec ora_logon() et oci_connect()
Commande Oracle PROMPT / ACCEPT dans une appli console C#Problème Script sql developer Oracle
Image dans les balises option sous Chrome 
Plus de sujets relatifs à : [Oracle] recreation de foreign key avec option novalidate


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR