Automatiser Oracle avec des séquences JSON

AutomatisationPythonOracle
← Tous les articles

Oracle et l'automatisation Python

Oracle Database est omniprésent dans les environnements enterprise et hospitaliers. Automatiser des exports, des migrations ou des traitements Oracle avec AutomationSequence V8 évite de maintenir des scripts Python disparates, non versionables et sans gestion d'erreur centralisée.

AutomationSequence V8 intègre un connecteur Oracle basé sur cx_Oracle (ou son successeur python-oracledb), avec gestion du pool de connexions, des transactions et des curseurs nommés.

Une séquence JSON qui automatise Oracle est versionnable dans Git, chiffrable pour la distribution, et exécutable sur n'importe quelle machine avec le bon TNS — sans modifier une ligne de code.

Configurer la connexion Oracle

La connexion Oracle est configurée dans le vault chiffré d'AutomationSequence. Les credentials ne sont jamais en clair dans la séquence JSON :

# Stocker les credentials Oracle dans le vault
# Via l'interface : Outils → Vault → Ajouter un secret

# Dans la séquence JSON, référencer le vault
{
  "type": "oracle_connect",
  "dsn_vault_key": "ORACLE_PROD_DSN",
  "pool_min": 2,
  "pool_max": 10,
  "encoding": "UTF-8",
  "output_var": "oracle_conn"
}

Le vault utilise DPAPI (Windows) ou un chiffrement AES-256-GCM avec clé dérivée du fingerprint machine. Les credentials ne quittent jamais la machine.

Actions Oracle disponibles

Export de données

# Séquence : export mensuel d'activité hospitalière
[
  {
    "type": "oracle_query",
    "connection": "{{oracle_conn}}",
    "query": "SELECT pat_id, sejour_debut, sejour_fin, um_code FROM sejours WHERE TRUNC(sejour_debut,'MM') = TRUNC(SYSDATE,'MM')",
    "output_var": "sejours_du_mois"
  },
  {
    "type": "file_write_csv",
    "data": "{{sejours_du_mois}}",
    "path": "exports/sejours_{{date_YYYYMM}}.csv",
    "encoding": "utf-8-sig"
  }
]

Migration wm_concat → listagg

La fonction wm_concat a été supprimée dans Oracle 12c. AutomationSequence inclut une action de migration qui analyse et réécrit automatiquement les requêtes legacy :

# Requête Oracle 11g avec wm_concat (obsolète)
# SELECT wm_concat(nom) FROM patients GROUP BY service

# Action de migration automatique
{
  "type": "oracle_migrate_query",
  "input_sql": "{{legacy_query}}",
  "rewrite_wm_concat": true,
  "output_var": "migrated_query"
}
# Résultat : SELECT LISTAGG(nom, ',') WITHIN GROUP (ORDER BY nom)
#            FROM patients GROUP BY service

Transactions complexes

[
  {"type":"oracle_begin_transaction", "connection":"{{oracle_conn}}"},
  {
    "type": "oracle_execute",
    "query": "UPDATE stock SET quantite = quantite - :qty WHERE ref = :ref",
    "bind": {"qty": "{{quantite}}", "ref": "{{ref_produit}}"},
    "on_error": "rollback_and_stop"
  },
  {"type":"oracle_commit", "connection":"{{oracle_conn}}"}
]

Mode asynchrone

Pour les longues requêtes (exports massifs, statistiques), l'action oracle_query_async s'exécute dans un thread séparé et stocke le résultat quand il est disponible, sans bloquer le reste de la séquence :

{
  "type": "oracle_query_async",
  "query": "SELECT * FROM pmsi_rsa WHERE annee = 2025",
  "output_var": "pmsi_future",
  "continue_sequence": true
}
# Actions suivantes s'exécutent pendant que la requête tourne
# Utiliser oracle_wait pour synchroniser si besoin

Sécurité et credentials

Les bonnes pratiques pour les credentials Oracle dans AutomationSequence :

Conclusion

AutomationSequence V8 transforme des scripts Oracle ad hoc en séquences versionables, chiffrables et auditables. La combinaison vault chiffré + journal HMAC + Plugin API Oracle couvre tous les cas d'usage enterprise, y compris les environnements HDS où la traçabilité des accès aux données est obligatoire.

⚙️
PRODUIT LIÉ
AutomationSequence V8.0
Découvrir V8 → Manuel complet
← Article précédent Article suivant →