{"id":3136,"date":"2021-10-07T00:05:52","date_gmt":"2021-10-07T08:05:52","guid":{"rendered":"https:\/\/www.gudusoft.com\/?page_id=3136"},"modified":"2026-07-12T02:06:47","modified_gmt":"2026-07-12T10:06:47","slug":"oracle-data-lineage-tool","status":"publish","type":"page","link":"https:\/\/www.gudusoft.com\/fr\/outil-de-tracabilite-des-donnees-oracle\/","title":{"rendered":"Oracle Data Lineage\u00a0: Analyse des proc\u00e9dures stock\u00e9es et des packages PL\/SQL"},"content":{"rendered":"<p><strong>Tra\u00e7abilit\u00e9 des donn\u00e9es Oracle<\/strong> Il s&#039;agit de la cartographie au niveau des colonnes de la circulation des donn\u00e9es dans un environnement Oracle\u00a0: quelles tables et colonnes sources alimentent chaque table, vue ou vue mat\u00e9rialis\u00e9e cible, et quels packages, proc\u00e9dures, fonctions et d\u00e9clencheurs PL\/SQL effectuent ces d\u00e9placements. \u00c9tant donn\u00e9 que, dans la plupart des environnements Oracle, la logique de transformation r\u00e9side dans le PL\/SQL plut\u00f4t que dans des requ\u00eates autonomes, une tra\u00e7abilit\u00e9 pr\u00e9cise n\u00e9cessite un outil capable d&#039;analyser le PL\/SQL comme un langage proc\u00e9dural, et non comme un simple langage SQL Oracle. <a href=\"https:\/\/www.gudusoft.com\/fr\/outil-de-lignee-de-donnees-sql\/\">Gudu SQLFlow<\/a> Il int\u00e8gre un analyseur PL\/SQL d\u00e9di\u00e9 qui fait exactement cela, y compris le SQL dynamique construit avec <code>EX\u00c9CUTER IMM\u00c9DIATEMENT<\/code>.<\/p>\n\n\n\n<div class=\"wp-block-group alignfull has-background is-layout-constrained\" style=\"background-color:#eef7fb;padding-top:24px;padding-bottom:24px\"><div class=\"wp-block-group__inner-container\">\n\n<p><strong>Testez-le sur votre propre code\u00a0:<\/strong> coller le corps d&#039;un package Oracle dans le <a href=\"https:\/\/sqlflow.gudusoft.com\/?utm_source=gudusoft&amp;utm_medium=website&amp;utm_campaign=oracle-data-lineage-tool\" target=\"_blank\" rel=\"noreferrer noopener\">Visualiseur de lignage SQLFlow gratuit<\/a>, s\u00e9lectionnez le dialecte Oracle et visualisez la lign\u00e9e au niveau des colonnes et le graphe d&#039;appels de proc\u00e9dures qu&#039;il produit.<\/p>\n\n<\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Pourquoi la tra\u00e7abilit\u00e9 des donn\u00e9es Oracle est-elle plus complexe que l&#039;analyse syntaxique des instructions SELECT ?<\/h2>\n\n\n\n<p>Les bases de donn\u00e9es Oracle sont anciennes au meilleur sens du terme\u00a0: de nombreux environnements de production h\u00e9bergent vingt ans, voire plus, de logique m\u00e9tier accumul\u00e9e, principalement en PL\/SQL. Les chargements nocturnes, les actualisations du datamart, les t\u00e2ches de r\u00e9conciliation et les journaux d\u2019audit sont impl\u00e9ment\u00e9s sous forme de packages appelant des proc\u00e9dures qui elles-m\u00eames appellent des fonctions, avec des d\u00e9clencheurs activ\u00e9s tout au long du processus. Un outil de tra\u00e7abilit\u00e9 qui ne comprend que\u2026 <code>S\u00c9LECTIONNER<\/code>, <code>INS\u00c9RER<\/code>, et <code>CR\u00c9ER UNE VUE<\/code> on ne voit que la surface superficielle d&#039;un tel domaine et on passe \u00e0 c\u00f4t\u00e9 de l&#039;essentiel de la logique sous-jacente.<\/p>\n\n\n\n<p>La raison technique est que PL\/SQL n&#039;est pas du SQL. Il s&#039;agit d&#039;un langage proc\u00e9dural structur\u00e9 par blocs, dot\u00e9 de sa propre grammaire\u00a0: d\u00e9clarations, flux de contr\u00f4le, curseurs, gestionnaires d&#039;exceptions, sp\u00e9cifications de packages et corps de proc\u00e9dures. Les instructions SQL sont imbriqu\u00e9es dans cette structure, et leurs entr\u00e9es et sorties transitent par des variables, des param\u00e8tres et des boucles de curseurs. Extraire la lign\u00e9e d&#039;une proc\u00e9dure PL\/SQL implique d&#039;analyser la couche proc\u00e9durale, de suivre les valeurs \u00e0 travers celle-ci et de relier les instructions SQL imbriqu\u00e9es entre elles. Une grammaire exclusivement SQL ne peut pas r\u00e9aliser cette op\u00e9ration, c&#039;est pourquoi les extracteurs de lign\u00e9e g\u00e9n\u00e9riques ignorent g\u00e9n\u00e9ralement compl\u00e8tement les corps de proc\u00e9dures ou \u00e9chouent d\u00e8s la premi\u00e8re \u00e9tape. <code>COMMENCER<\/code> bloc.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Un analyseur PL\/SQL d\u00e9di\u00e9, et non un analyseur SQL avec extensions.<\/h2>\n\n\n\n<p>SQLFlow est construit sur le <a href=\"https:\/\/www.sqlparser.com\/\">Analyseur SQL g\u00e9n\u00e9ral<\/a>Il s&#039;agit d&#039;une interface de compilation SQL commerciale d\u00e9velopp\u00e9e depuis le milieu des ann\u00e9es 2000 et valid\u00e9e \u00e0 l&#039;aide d&#039;environ 13\u00a0600 jeux de tests par dialecte. Pour Oracle, elle offre deux fonctionnalit\u00e9s\u00a0: un analyseur syntaxique SQL pour les requ\u00eates, le DDL et les vues, et un analyseur syntaxique proc\u00e9dural distinct pour PL\/SQL. Cet analyseur PL\/SQL g\u00e8re les types d&#039;objets o\u00f9 r\u00e9side la logique de transformation d&#039;Oracle.<\/p>\n\n\n\n<ul><li><strong>Colis :<\/strong> analys\u00e9s en d\u00e9tail, couvrant chaque proc\u00e9dure et fonction contenue dans le package, avec un graphe d&#039;appels au-del\u00e0 des limites du package.<\/li>\n<li><strong>Proc\u00e9dures et fonctions :<\/strong> La tra\u00e7abilit\u00e9 est assur\u00e9e par les param\u00e8tres de proc\u00e9dure et les tables temporaires, de sorte qu&#039;une valeur entrant comme argument et se retrouvant dans une table est connect\u00e9e de bout en bout.<\/li>\n<li><strong>D\u00e9clencheurs :<\/strong> logique au niveau des lignes qui copie ou transforme les donn\u00e9es sur <code>INS\u00c9RER<\/code>, <code>MISE \u00c0 JOUR<\/code>, ou <code>SUPPRIMER<\/code> appara\u00eet dans l&#039;arbre g\u00e9n\u00e9alogique au lieu de rester des effets secondaires invisibles.<\/li>\n<li><strong>SQL dynamique\u00a0:<\/strong> instructions assembl\u00e9es lors de l&#039;ex\u00e9cution et ex\u00e9cut\u00e9es avec <code>EX\u00c9CUTER IMM\u00c9DIATEMENT<\/code> sont r\u00e9solues et analys\u00e9es au lieu d&#039;\u00eatre ignor\u00e9es.<\/li><\/ul>\n\n\n\n<p>En plus de l&#039;analyse par objet, SQLFlow propose une interface interactive <strong>graphe d&#039;appel<\/strong>: quelles proc\u00e9dures appellent lesquelles, au-del\u00e0 des limites des packages. Dans un code source o\u00f9 <code>etl_driver.run_nightly<\/code> Se d\u00e9composant en une douzaine de proc\u00e9dures de paquetage, le graphe d&#039;appels est ce qui vous permet de trouver celle qui \u00e9crit r\u00e9ellement la table qui vous int\u00e9resse.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Exemple : tra\u00e7age de la lign\u00e9e \u00e0 travers une proc\u00e9dure de paquetage<\/h2>\n\n\n\n<p>Voici un mod\u00e8le simplifi\u00e9 mais repr\u00e9sentatif\u00a0: une proc\u00e9dure de package qui charge un march\u00e9 de revenus quotidien depuis l\u2019environnement de transit.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CR\u00c9ER OU REMPLACER LE CORPS DU PACKAGE sales_etl COMME PROC\u00c9DURE load_revenue_mart(p_load_date IN DATE) EST BEGIN SUPPRIMER DE mart.revenue_daily O\u00d9 day_id = TO_CHAR(p_load_date, &#039;YYYYMMDD&#039;); INS\u00c9RER DANS mart.revenue_daily (day_id, region_name, total_amount) S\u00c9LECTIONNER TO_CHAR(o.order_date, &#039;YYYYMMDD&#039;), r.region_name, SUM(o.amount) DE staging.orders o JOINTURE dim.region r SUR r.region_id = o.region_id O\u00d9 o.status = &#039;EXP\u00c9DI\u00c9&#039; ET TRUNC(o.order_date) = TRUNC(p_load_date) GROUPER PAR TO_CHAR(o.order_date, &#039;YYYYMMDD&#039;), r.region_name; FIN load_revenue_mart; FIN sales_etl;<\/code><\/pre>\n\n\n\n<p>SQLFlow lit le corps du package et g\u00e9n\u00e8re des rapports, par colonne de sortie\u00a0: <code>mart.revenu_daily.montant_total<\/code> est aliment\u00e9 par <code>mise en place.commandes.montant<\/code> \u00e0 travers <code>SOMME<\/code>; <code>nom_de_r\u00e9gion<\/code> vient de <code>dim.region.region_name<\/code> via le lien <code>id_r\u00e9gion<\/code>; <code>jour_id<\/code> est d\u00e9riv\u00e9 de <code>staging.orders.order_date<\/code> \u00e0 travers <code>TO_CHAR<\/code>Il est \u00e9galement indiqu\u00e9 que <code>o.statut<\/code>, <code>o.date_de_commande<\/code>, et le param\u00e8tre <code>date_de_chargement_p<\/code> fa\u00e7onner le r\u00e9sultat \u00e0 travers le <code>O\u00d9<\/code> clause, et que la proc\u00e9dure se situe \u00e0 l&#039;int\u00e9rieur de la <code>ventes_etl<\/code> Le package dans le graphe d&#039;appels. Multipliez cela par les centaines de proc\u00e9dures d&#039;un syst\u00e8me immobilier et vous obtenez la carte des d\u00e9pendances que la documentation manuelle ne met jamais \u00e0 jour.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">SQL dynamique\u00a0: le point aveugle de l\u2019instruction EXECUTE IMMEDIATE<\/h2>\n\n\n\n<p>Les \u00e9quipes Oracle utilisent constamment le SQL dynamique\u00a0: chargement de tables nomm\u00e9es par partition, application de DDL depuis des proc\u00e9dures, construction d\u2019instructions dont la cible d\u00e9pend d\u2019une ligne de configuration. C\u2019est face \u00e0 ce type de code que la plupart des techniques d\u2019extraction de lignage \u00e9chouent.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>v_sql := &#039;INSERT INTO mart.revenue_archive (day_id, region_name, total_amount) SELECT day_id, region_name, total_amount FROM mart.revenue_daily WHERE day_id = :d&#039;; EXECUTE IMMEDIATE v_sql USING v_day_id;<\/code><\/pre>\n\n\n\n<p>SQLFlow r\u00e9sout le SQL dynamique \u00e0 l&#039;int\u00e9rieur de la proc\u00e9dure et analyse l&#039;instruction assembl\u00e9e, de sorte que le flux de <code>revenu_quotidien du march\u00e9<\/code> dans <code>archives de revenus mart.revenue<\/code> est captur\u00e9e plut\u00f4t que d&#039;\u00eatre discr\u00e8tement abandonn\u00e9e. Si votre domaine utilise <code>EX\u00c9CUTER IMM\u00c9DIATEMENT<\/code> En r\u00e9sum\u00e9, il s&#039;agit de la seule capacit\u00e9 \u00e0 v\u00e9rifier avant de faire confiance \u00e0 un outil de tra\u00e7abilit\u00e9\u00a0: ex\u00e9cutez l&#039;une de vos propres proc\u00e9dures SQL dynamiques et v\u00e9rifiez si la table cible appara\u00eet dans le graphique.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Lign\u00e9e directe et indirecte dans le code Oracle<\/h2>\n\n\n\n<p>SQLFlow fait la distinction <strong>lign\u00e9e directe<\/strong> (la valeur d&#039;une colonne source est plac\u00e9e dans une colonne cible) \u00e0 partir de <strong>lign\u00e9e indirecte<\/strong> (une colonne oriente le r\u00e9sultat \u00e0 travers un <code>O\u00d9<\/code> pr\u00e9dicat, <code>REJOINDRE<\/code> condition, <code>GROUPER PAR<\/code>, ou agr\u00e9ger sans appara\u00eetre dans le r\u00e9sultat). Dans l&#039;exemple ci-dessus, <code>statut des commandes<\/code> Cette relation n&#039;atteint jamais le march\u00e9, mais modifier ses valeurs modifierait toutes les donn\u00e9es qu&#039;il contient. Les deux types de relations sont activables\/d\u00e9sactivables s\u00e9par\u00e9ment dans le diagramme, ce qui permet \u00e0 l&#039;analyse d&#039;impact d&#039;inclure ou d&#039;exclure d\u00e9lib\u00e9r\u00e9ment les d\u00e9pendances li\u00e9es uniquement aux filtres. La plupart des outils concurrents ne mod\u00e9lisent pas cette distinction, ce qui rend leur analyse d&#039;impact soit trop restrictive (absence de colonnes de filtres), soit trop complexe (tout est connect\u00e9 \u00e0 tout).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Int\u00e9grer votre code Oracle dans SQLFlow<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>M\u00e9thode de saisie<\/th><th>Quand l&#039;utiliser<\/th><\/tr><\/thead><tbody>\n<tr><td>Collez du code SQL ou PL\/SQL<\/td><td>V\u00e9rifications rapides d&#039;un seul paquet, proc\u00e9dure ou script dans le navigateur<\/td><\/tr>\n<tr><td>T\u00e9l\u00e9verser des fichiers<\/td><td>Analyse en masse des sources DDL et PL\/SQL export\u00e9es<\/td><\/tr>\n<tr><td>Connexion JDBC en direct<\/td><td>Extraction directe des m\u00e9tadonn\u00e9es de sch\u00e9ma, des d\u00e9finitions de vues et du code stock\u00e9 depuis la base de donn\u00e9es<\/td><\/tr>\n<tr><td>Extraction des m\u00e9tadonn\u00e9es Grabit<\/td><td>Extraction des m\u00e9tadonn\u00e9es \u00e0 l&#039;aide de l&#039;outil compagnon Grabit et transmission \u00e0 SQLFlow<\/td><\/tr>\n<\/tbody><\/table><\/figure>\n\n\n\n<p>Quel que soit le chemin choisi, SQLFlow effectue une analyse statique du texte SQL et PL\/SQL ainsi que des m\u00e9tadonn\u00e9es du sch\u00e9ma. Il ne lit jamais les lignes de vos tables. Pour les banques et autres entreprises Oracle r\u00e9glement\u00e9es, <a href=\"https:\/\/www.gudusoft.com\/fr\/sqlflow-on-premise-version\/\">\u00c9dition sur site<\/a> Il s&#039;ex\u00e9cute sous Docker ou Kubernetes au sein de votre r\u00e9seau, y compris en mode totalement isol\u00e9 du r\u00e9seau physique, de sorte que le code source ne quitte jamais votre infrastructure. \u00c0 l&#039;\u00e9chelle de l&#039;entreprise, il analyse par lots des environnements de plus de 100 bases de donn\u00e9es et plus d&#039;un million de colonnes, avec des analyses incr\u00e9mentales et des adaptateurs d&#039;exportation pour DataHub, Microsoft Purview et OpenMetadata.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Migrations Oracle et environnements mixtes<\/h2>\n\n\n\n<p>La tra\u00e7abilit\u00e9 est particuli\u00e8rement pr\u00e9cieuse au moment o\u00f9 les environnements Oracle sont souvent confront\u00e9s \u00e0 la migration. Avant de transf\u00e9rer les charges de travail vers Snowflake, BigQuery ou Databricks, le graphe de tra\u00e7abilit\u00e9 indique quels packages alimentent les rapports utilis\u00e9s par l&#039;entreprise, quelles tables sont obsol\u00e8tes et dans quel ordre les objets doivent \u00eatre d\u00e9plac\u00e9s. Apr\u00e8s la migration, une nouvelle analyse sur la nouvelle plateforme permet de v\u00e9rifier qu&#039;aucun \u00e9l\u00e9ment n&#039;est orphelin. SQLFlow prend en charge 39 dialectes avec des grammaires sp\u00e9cifiques \u00e0 chacun, ce qui permet \u00e0 un seul outil de couvrir les deux \u00e9tapes du processus de migration.<\/p>\n\n\n\n<p>Peu de grands syst\u00e8mes sont exclusivement bas\u00e9s sur Oracle. La m\u00eame profondeur d&#039;analyse proc\u00e9durale est disponible pour <a href=\"https:\/\/www.gudusoft.com\/fr\/lignee-de-donnees-sql-server\/\">Lign\u00e9e T-SQL de SQL Server<\/a>et des plateformes d&#039;entrep\u00f4t telles que <a href=\"https:\/\/www.gudusoft.com\/fr\/lignee-de-donnees-teradata\/\">Teradata<\/a> Ils poss\u00e8dent leurs propres analyseurs syntaxiques sp\u00e9cifiques \u00e0 chaque dialecte. Un seul r\u00e9f\u00e9rentiel de lign\u00e9e peut contenir l&#039;ensemble du patrimoine.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">O\u00f9 les analyseurs syntaxiques open source trouvent leur place<\/h2>\n\n\n\n<p>Les projets open source comme <code>SQL Lineage<\/code> et <code>sqlglot<\/code> Ils sont particuli\u00e8rement performants pour analyser les requ\u00eates individuelles et, pour extraire la tra\u00e7abilit\u00e9 des tables \u00e0 partir d&#039;instructions SELECT et INSERT autonomes, ils peuvent suffire. Le point faible d&#039;Oracle r\u00e9side dans la couche proc\u00e9durale\u00a0: corps des packages, flux des param\u00e8tres, d\u00e9clencheurs, etc. <code>EX\u00c9CUTER IMM\u00c9DIATEMENT<\/code> Ce sont pr\u00e9cis\u00e9ment les constructions pour lesquelles les analyseurs SQL g\u00e9n\u00e9ralistes ne sont pas con\u00e7us, et dans un environnement Oracle, c&#039;est l\u00e0 que r\u00e9side la majeure partie de la logique de transformation. L&#039;\u00e9valuation objective est empirique\u00a0: prenez votre plus gros package, traitez-le avec les outils que vous envisagez d&#039;utiliser et comptez le nombre de tables cibles que chacun trouve.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Foire aux questions<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">SQLFlow peut-il retracer la lign\u00e9e des proc\u00e9dures stock\u00e9es et des packages Oracle\u00a0?<\/h3>\n\n\n<p>Oui. SQLFlow poss\u00e8de un analyseur PL\/SQL d\u00e9di\u00e9, distinct de son analyseur SQL Oracle, qui analyse les packages, les proc\u00e9dures, les fonctions et les d\u00e9clencheurs. La tra\u00e7abilit\u00e9 est assur\u00e9e par les param\u00e8tres des proc\u00e9dures et les tables temporaires, et un graphe d&#039;appels interactif affiche les invocations de proc\u00e9dures entre les diff\u00e9rents packages.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">SQLFlow g\u00e8re-t-il les requ\u00eates SQL dynamiques EXECUTE IMMEDIATE\u00a0?<\/h3>\n\n\n<p>Oui. Le SQL dynamique int\u00e9gr\u00e9 aux proc\u00e9dures PL\/SQL est r\u00e9solu et analys\u00e9 au lieu d&#039;\u00eatre ignor\u00e9\u00a0; les instructions construites avec <code>EX\u00c9CUTER IMM\u00c9DIATEMENT<\/code> contribuent leurs flux source-cible au graphe de lignage.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">SQLFlow a-t-il besoin d&#039;acc\u00e9der \u00e0 mes donn\u00e9es Oracle\u00a0?<\/h3>\n\n\n<p>Non. SQLFlow effectue une analyse statique du code SQL et PL\/SQL et peut lire les m\u00e9tadonn\u00e9es du sch\u00e9ma via JDBC. Il ne lit jamais les donn\u00e9es des lignes de table. Avec l&#039;\u00e9dition sur site, m\u00eame le texte SQL reste au sein de votre r\u00e9seau.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">La fonctionnalit\u00e9 de tra\u00e7abilit\u00e9 au niveau des colonnes Oracle est-elle disponible dans la version gratuite\u00a0?<\/h3>\n\n\n<p>Oui. <a href=\"https:\/\/sqlflow.gudusoft.com\/?utm_source=gudusoft&amp;utm_medium=website&amp;utm_campaign=oracle-data-lineage-tool\">SQLFlow Cloud<\/a> Il existe une version gratuite\u00a0: collez du code Oracle SQL ou PL\/SQL dans le navigateur pour obtenir des diagrammes de tra\u00e7abilit\u00e9 au niveau des colonnes. La version Premium co\u00fbte $49,99\u00a0\u00a3\/mois\u00a0; la version sur site co\u00fbte $500\u00a0\u00a3\/mois ou $4\u00a0800\u00a0\u00a3 (paiement unique) par type de base de donn\u00e9es s\u00e9lectionn\u00e9. Voir <a href=\"https:\/\/www.gudusoft.com\/fr\/tarification\/\">tarification<\/a> pour plus de d\u00e9tails.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Puis-je exporter la lign\u00e9e Oracle vers un catalogue de donn\u00e9es\u00a0?<\/h3>\n\n\n<p>Oui. Les exportations de lignage aux formats JSON, CSV ou PNG sont interrogeables via une API REST, et les d\u00e9ploiements en entreprise incluent des adaptateurs d&#039;exportation pour DataHub, Microsoft Purview et OpenMetadata. SQLFlow peut donc servir de moteur de lignage compatible PL\/SQL pour le catalogue que vous utilisez d\u00e9j\u00e0.<\/p>\n\n\n\n<div class=\"wp-block-group alignfull has-background is-layout-constrained\" style=\"background-color:#60d5f6;padding-top:32px;padding-bottom:32px\"><div class=\"wp-block-group__inner-container\">\n\n<h2 class=\"wp-block-heading\">D\u00e9couvrez la lign\u00e9e cach\u00e9e dans votre PL\/SQL<\/h2>\n\n\n<p>Collez le corps d&#039;un package dans le visualiseur gratuit, ou contactez-nous pour analyser l&#039;ensemble de votre environnement Oracle sur site.<\/p>\n\n\n<div class=\"wp-block-buttons is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/sqlflow.gudusoft.com\/?utm_source=gudusoft&amp;utm_medium=website&amp;utm_campaign=oracle-data-lineage-tool\" target=\"_blank\" rel=\"noreferrer noopener\">Essayez SQLFlow gratuitement<\/a><\/div>\n\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/www.gudusoft.com\/fr\/contact\/\">Demander une d\u00e9monstration pour entreprises<\/a><\/div>\n<\/div>\n\n<\/div><\/div>\n\n\n\n<script type=\"application\/ld+json\">{\n    \"@context\": \"https:\\\/\\\/schema.org\",\n    \"@graph\": [\n        {\n            \"@type\": \"SoftwareApplication\",\n            \"name\": \"Gudu SQLFlow\",\n            \"applicationCategory\": \"DeveloperApplication\",\n            \"applicationSubCategory\": \"Oracle Data Lineage Tool\",\n            \"operatingSystem\": \"Web, Linux, Windows, macOS\",\n            \"url\": \"https:\\\/\\\/www.gudusoft.com\\\/oracle-data-lineage-tool\\\/\",\n            \"description\": \"Oracle data lineage tool with a dedicated PL\\\/SQL parser: analyzes packages, procedures, functions, and triggers, resolves EXECUTE IMMEDIATE dynamic SQL, and produces column-level lineage diagrams and procedure call graphs.\",\n            \"featureList\": \"PL\\\/SQL package and procedure analysis, trigger lineage, EXECUTE IMMEDIATE dynamic SQL resolution, procedure call graph, column-level lineage, direct vs indirect lineage, JDBC metadata import, DataHub\\\/Purview\\\/OpenMetadata export\",\n            \"softwareVersion\": \"8.2.3\",\n            \"offers\": [\n                {\n                    \"@type\": \"Offer\",\n                    \"name\": \"SQLFlow Cloud Free\",\n                    \"price\": \"0\",\n                    \"priceCurrency\": \"USD\"\n                },\n                {\n                    \"@type\": \"Offer\",\n                    \"name\": \"SQLFlow Cloud Premium\",\n                    \"price\": \"49.99\",\n                    \"priceCurrency\": \"USD\",\n                    \"priceSpecification\": {\n                        \"@type\": \"UnitPriceSpecification\",\n                        \"price\": \"49.99\",\n                        \"priceCurrency\": \"USD\",\n                        \"billingIncrement\": 1,\n                        \"unitText\": \"MONTH\"\n                    }\n                },\n                {\n                    \"@type\": \"Offer\",\n                    \"name\": \"SQLFlow On-Premise\",\n                    \"price\": \"4800\",\n                    \"priceCurrency\": \"USD\"\n                }\n            ],\n            \"publisher\": {\n                \"@type\": \"Organization\",\n                \"name\": \"Gudu Software\",\n                \"url\": \"https:\\\/\\\/www.gudusoft.com\\\/\"\n            }\n        },\n        {\n            \"@type\": \"FAQPage\",\n            \"mainEntity\": [\n                {\n                    \"@type\": \"Question\",\n                    \"name\": \"Can SQLFlow trace lineage through Oracle stored procedures and packages?\",\n                    \"acceptedAnswer\": {\n                        \"@type\": \"Answer\",\n                        \"text\": \"Yes. SQLFlow has a dedicated PL\\\/SQL parser, separate from its Oracle SQL parser, that analyzes packages, procedures, functions, and triggers. Lineage is traced through procedure parameters and temp tables, and an interactive call graph shows procedure-to-procedure invocations across packages.\"\n                    }\n                },\n                {\n                    \"@type\": \"Question\",\n                    \"name\": \"Does SQLFlow handle EXECUTE IMMEDIATE dynamic SQL?\",\n                    \"acceptedAnswer\": {\n                        \"@type\": \"Answer\",\n                        \"text\": \"Yes. Dynamic SQL assembled inside PL\\\/SQL procedures is resolved and analyzed rather than skipped, so statements built with EXECUTE IMMEDIATE contribute their source-to-target flows to the lineage graph.\"\n                    }\n                },\n                {\n                    \"@type\": \"Question\",\n                    \"name\": \"Does SQLFlow need access to my Oracle data?\",\n                    \"acceptedAnswer\": {\n                        \"@type\": \"Answer\",\n                        \"text\": \"No. SQLFlow performs static analysis of SQL and PL\\\/SQL code and optionally reads schema metadata over JDBC. It never reads table row data. With the On-Premise edition, even the SQL text stays inside your network.\"\n                    }\n                },\n                {\n                    \"@type\": \"Question\",\n                    \"name\": \"Is Oracle column-level lineage available in the free version?\",\n                    \"acceptedAnswer\": {\n                        \"@type\": \"Answer\",\n                        \"text\": \"Yes. SQLFlow Cloud has a free tier: paste Oracle SQL or PL\\\/SQL in the browser and get column-level lineage diagrams. Premium is $49.99\\\/month; On-Premise is $500\\\/month or $4,800 one-time per selected database type.\"\n                    }\n                },\n                {\n                    \"@type\": \"Question\",\n                    \"name\": \"Can I export Oracle lineage to a data catalog?\",\n                    \"acceptedAnswer\": {\n                        \"@type\": \"Answer\",\n                        \"text\": \"Yes. Lineage exports as JSON, CSV, or PNG, is queryable over a REST API, and enterprise deployments include export adapters for DataHub, Microsoft Purview, and OpenMetadata, so SQLFlow can serve as the PL\\\/SQL-aware lineage engine behind the catalog you already run.\"\n                    }\n                }\n            ]\n        }\n    ]\n}<\/script>","protected":false},"excerpt":{"rendered":"<p>Oracle data lineage is the column-level map of how data moves through an Oracle estate: which source tables and columns feed each target table, view, or materialized view, and which PL\/SQL packages, procedures, functions, and triggers do the moving. Because in most Oracle shops the transformation logic lives in PL\/SQL rather than in standalone queries, accurate lineage requires a tool that parses PL\/SQL as a procedural language, not just Oracle SQL. Gudu SQLFlow ships a dedicated PL\/SQL parser that does exactly that, including dynamic SQL built with EXECUTE IMMEDIATE. Test it on your own code: paste an Oracle package body\u2026<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":5}},"_links":{"self":[{"href":"https:\/\/www.gudusoft.com\/fr\/wp-json\/wp\/v2\/pages\/3136"}],"collection":[{"href":"https:\/\/www.gudusoft.com\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.gudusoft.com\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.gudusoft.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gudusoft.com\/fr\/wp-json\/wp\/v2\/comments?post=3136"}],"version-history":[{"count":95,"href":"https:\/\/www.gudusoft.com\/fr\/wp-json\/wp\/v2\/pages\/3136\/revisions"}],"predecessor-version":[{"id":6755,"href":"https:\/\/www.gudusoft.com\/fr\/wp-json\/wp\/v2\/pages\/3136\/revisions\/6755"}],"wp:attachment":[{"href":"https:\/\/www.gudusoft.com\/fr\/wp-json\/wp\/v2\/media?parent=3136"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}