(Version complète : voir reports/GRDF_SAT_PRE_HAB_Technical_Audit_Report.md Appendix D)
Compatibilité Oracle 19c → PostgreSQL 16
| Feature Oracle | Équivalent PostgreSQL | Effort Migration |
|---|---|---|
| PL/SQL procédures stockées | PL/pgSQL | ⚠️ Moyen (syntaxe différente) |
| Sequences | SERIAL / GENERATED ALWAYS AS IDENTITY | ✅ Trivial |
| Triggers | PL/pgSQL triggers | ⚠️ Moyen (syntaxe proche) |
| Indexes B-Tree | B-Tree natif | ✅ Identique |
| Materialized Views | Natif PostgreSQL | ✅ Identique |
| Partitioning | Declarative Partitioning (PG 10+) | ✅ Meilleur que Oracle |
Hints SQL (/*+ INDEX */) | ⚠️ Non supporté | Alternative : indexes automatiques |
| CONNECT BY (requêtes hiérarchiques) | WITH RECURSIVE | ⚠️ Réécriture requêtes |
Outils de Migration
Ora2Pg (recommandé) — open source Perl
ora2pg -c ora2pg.conf -t TABLE -o schema.sqlora2pg -c ora2pg.conf -t COPY -o data.sql✅ Extraction schéma + données + procédures stockées
✅ Génération scripts SQL PostgreSQL
⚠️ Nécessite validation manuelle (10–15% code PL/SQL)
AWS SCT (Schema Conversion Tool)
✅ Gratuit, analyse automatique compatibilité
⚠️ Nécessite compte AWS (pas d'obligation déploiement)
Debezium CDC (Change Data Capture)
✅ Réplication temps réel Oracle → PostgreSQL pendant coexistence
✅ Kafka Connect source Oracle + sink PostgreSQL
| Poste de Coût | Oracle 19c | PostgreSQL 16 | Économies |
|---|---|---|---|
| Licences DB | €180K (Processor license × 2 sockets) | €0 (open source) | €180K |
| Support éditeur | €90K (20% licences × 5 ans) | €45K (support EnterpriseDB optionnel) | €45K |
| Infrastructure (serveurs, stockage) | €120K | €90K (moins de RAM requis) | €30K |
| DBA / Ops (5 ans) | €160K (0.5 ETP × 5 ans) | €135K (courbe apprentissage) | €25K |
| Migration initiale | €0 | €50K (Ora2Pg + validation) | -€50K |
| TOTAL 5 ANS | €550K | €320K | €230K (42%) |
Note : économies conservatrices (hypothèse support PostgreSQL payant). Si autogéré : économies jusqu'à €320K (58%).
Phase 0 (Mois 1–2) : Reverse engineering schéma Oracle via Ora2Pg
Phase 1 (Mois 3–7) : Développement SIAS greenfield sur PostgreSQL (pas de migration data encore)
Phase 4 (Mois 12–14) : Migration sélective 500K incidents SIAS (via Debezium CDC)
Phase 5 (Mois 15–16) : Tuning PostgreSQL (indexes, partitionnement, vacuum)
app-pre-main)| Métrique | Valeur | Benchmark Industrie | Écart |
|---|---|---|---|
| LOC Total | 70 421 | 50K–100K (application JEE standard) | ✅ Normal |
| Classes Java | 618 | 400–800 | ✅ Normal |
| Packages | 89 | 60–120 | ✅ Normal |
| Méthodes | 4 782 | 3K–6K | ✅ Normal |
| Complexité Cyclomatique Moyenne | 13.7 | < 10 (recommandé) | ⚠️ Élevé |
| Méthodes complexité > 20 | 87 | < 5% (cible) | 🔴 1.8% (critique) |
| God Classes (> 20 dépendances) | 14 | 0 (cible) | 🔴 Critique |
| Classes avec SQL concat | 45 | 0 (cible) | 🔴 Critique |
| Javadoc coverage | 32% | 80% (cible) | 🔴 Très insuffisant |
| Test coverage (estimé) | 30% | 80% (cible) | 🔴 Très insuffisant |
Top 10 Classes Par LOC
EcSatPreWkf001Controller — 487 LOC (God Class)
TraitementMasseServiceImpl — 412 LOC (God Class)
IncidentDaoImpl — 398 LOC
EcSatPreWkf002Controller — 376 LOC (God Class)
RapportGeneratorServiceImpl — 354 LOC
ValidationMetierServiceImpl — 332 LOC
NotificationServiceImpl — 318 LOC
SynchronisationBatchJob — 305 LOC
CompteurReferentielClient — 289 LOC
AlarmProcessorServiceImpl — 276 LOC
app-hab)| Métrique | Valeur | Benchmark | Écart |
|---|---|---|---|
| LOC Total | 18 234 | 10K–30K | ✅ Normal (app plus petite) |
| Classes Java | 100 | 80–150 | ✅ Normal |
| Packages | 12 | 10–20 | ✅ Normal |
| Complexité Cyclomatique Moyenne | 10.6 | < 10 | ⚠️ Acceptable |
| God Classes (> 20 dépendances) | 2 | 0 | ⚠️ Moyen |
| Classes avec SQL concat | 11 | 0 | 🔴 Critique |
Top 3 Classes Par LOC
HabilitationManagerImpl — 289 LOC (God Class)
LdapSyncService — 245 LOC
RoleValidatorService — 198 LOC
(Voir Section 2.2 pour diagramme complet avec 35+ nœuds)