{"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\/pt\/ferramenta-de-linhagem-de-dados-oracle\/","title":{"rendered":"Oracle Data Lineage: An\u00e1lise de Procedimentos Armazenados e Pacotes PL\/SQL"},"content":{"rendered":"<p><strong>Linhagem de dados Oracle<\/strong> \u00c9 o mapa em n\u00edvel de coluna de como os dados se movem em um ambiente Oracle: quais tabelas e colunas de origem alimentam cada tabela, vis\u00e3o ou vis\u00e3o materializada de destino e quais pacotes, procedimentos, fun\u00e7\u00f5es e gatilhos PL\/SQL realizam a movimenta\u00e7\u00e3o. Como na maioria dos ambientes Oracle a l\u00f3gica de transforma\u00e7\u00e3o reside em PL\/SQL em vez de consultas independentes, a linhagem precisa requer uma ferramenta que interprete PL\/SQL como uma linguagem procedural, e n\u00e3o apenas SQL Oracle. <a href=\"https:\/\/www.gudusoft.com\/pt\/ferramenta-de-linhagem-de-dados-sql\/\">Gudu SQLFlow<\/a> inclui um analisador PL\/SQL dedicado que faz exatamente isso, incluindo SQL din\u00e2mico criado com <code>EXECUTE IMEDIATAMENTE<\/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>Teste com seu pr\u00f3prio c\u00f3digo:<\/strong> Cole o corpo de um pacote Oracle no <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\">Visualizador de linhagem SQLFlow gratuito<\/a>Selecione o dialeto Oracle e veja o gr\u00e1fico de linhagem e chamada de procedimento em n\u00edvel de coluna que ele produz.<\/p>\n\n<\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Por que a linhagem de dados do Oracle \u00e9 mais dif\u00edcil do que analisar instru\u00e7\u00f5es SELECT?<\/h2>\n\n\n\n<p>Os bancos de dados Oracle s\u00e3o antigos no melhor sentido da palavra: muitos ambientes de produ\u00e7\u00e3o carregam vinte anos ou mais de l\u00f3gica de neg\u00f3cios acumulada, e a maior parte dela \u00e9 PL\/SQL. Carregamentos noturnos, atualiza\u00e7\u00f5es de data mart, tarefas de reconcilia\u00e7\u00e3o e trilhas de auditoria s\u00e3o implementados como pacotes que chamam procedimentos que, por sua vez, chamam fun\u00e7\u00f5es, com gatilhos sendo disparados ao longo do processo. Uma ferramenta de linhagem que s\u00f3 entende <code>SELECIONAR<\/code>, <code>INSERIR<\/code>, e <code>CRIAR VISUALIZA\u00c7\u00c3O<\/code> V\u00ea apenas a superf\u00edcie superficial de tal propriedade e ignora a maior parte da l\u00f3gica subjacente.<\/p>\n\n\n\n<p>A raz\u00e3o t\u00e9cnica \u00e9 que PL\/SQL n\u00e3o \u00e9 SQL. \u00c9 uma linguagem procedural estruturada em blocos com sua pr\u00f3pria gram\u00e1tica: declara\u00e7\u00f5es, fluxo de controle, cursores, manipuladores de exce\u00e7\u00e3o, especifica\u00e7\u00f5es de pacotes e corpos. As instru\u00e7\u00f5es SQL est\u00e3o incorporadas nessa estrutura, e suas entradas e sa\u00eddas fluem por meio de vari\u00e1veis, par\u00e2metros e loops de cursor. Extrair a linhagem de PL\/SQL significa analisar a camada procedural, rastrear os valores atrav\u00e9s dela e conectar as instru\u00e7\u00f5es SQL incorporadas umas \u00e0s outras. Uma gram\u00e1tica exclusivamente SQL n\u00e3o consegue fazer isso, e \u00e9 por isso que os extratores de linhagem gen\u00e9ricos normalmente ignoram completamente os corpos dos procedimentos ou falham logo no primeiro. <code>COME\u00c7AR<\/code> bloquear.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Um analisador PL\/SQL dedicado, n\u00e3o um analisador SQL com extens\u00f5es.<\/h2>\n\n\n\n<p>O SQLFlow \u00e9 constru\u00eddo sobre o <a href=\"https:\/\/www.sqlparser.com\/\">Analisador SQL geral<\/a>, um front-end comercial para compilador SQL desenvolvido desde meados dos anos 2000 e validado com aproximadamente 13.600 conjuntos de testes por dialeto. Para o Oracle, ele fornece duas coisas: um analisador sint\u00e1tico SQL do Oracle para consultas, DDL e views, e um analisador sint\u00e1tico procedural separado para PL\/SQL. O analisador sint\u00e1tico PL\/SQL lida com os tipos de objeto onde reside a l\u00f3gica de transforma\u00e7\u00e3o do Oracle:<\/p>\n\n\n\n<ul><li><strong>Pacotes:<\/strong> analisado em sua totalidade, abrangendo todos os procedimentos e fun\u00e7\u00f5es contidos no pacote, com um gr\u00e1fico de chamadas que cruza os limites do pacote.<\/li>\n<li><strong>Procedimentos e fun\u00e7\u00f5es:<\/strong> A linhagem \u00e9 rastreada atrav\u00e9s dos par\u00e2metros do procedimento e das tabelas tempor\u00e1rias, de modo que um valor que entra como argumento e \u00e9 armazenado em uma tabela \u00e9 conectado de ponta a ponta.<\/li>\n<li><strong>Gatilhos:<\/strong> l\u00f3gica de n\u00edvel de linha que copia ou transforma dados em <code>INSERIR<\/code>, <code>ATUALIZAR<\/code>, ou <code>EXCLUIR<\/code> Aparece no gr\u00e1fico de linhagem em vez de permanecer como um efeito colateral invis\u00edvel.<\/li>\n<li><strong>SQL din\u00e2mico:<\/strong> instru\u00e7\u00f5es montadas em tempo de execu\u00e7\u00e3o e executadas com <code>EXECUTE IMEDIATAMENTE<\/code> s\u00e3o resolvidas e analisadas em vez de serem ignoradas.<\/li><\/ul>\n\n\n\n<p>Al\u00e9m da an\u00e1lise por objeto, o SQLFlow oferece uma experi\u00eancia interativa. <strong>gr\u00e1fico de chamadas<\/strong>: quais procedimentos invocam quais, entre diferentes pacotes. Em uma base de c\u00f3digo onde <code>etl_driver.run_nightly<\/code> Os pacotes se ramificam em uma d\u00fazia de procedimentos; o gr\u00e1fico de chamadas \u00e9 como voc\u00ea encontra aquele que realmente grava a tabela que lhe interessa.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Exemplo: rastrear a linhagem atrav\u00e9s de um procedimento de pacote<\/h2>\n\n\n\n<p>Eis um padr\u00e3o simplificado, por\u00e9m representativo: um procedimento de pacote que carrega um mercado de receita di\u00e1ria da \u00e1rea de prepara\u00e7\u00e3o.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE OR REPLACE PACKAGE BODY sales_etl AS PROCEDURE load_revenue_mart(p_load_date IN DATE) IS BEGIN DELETE FROM mart.revenue_daily WHERE day_id = TO_CHAR(p_load_date, &#039;YYYYMMDD&#039;); INSERT INTO mart.revenue_daily (day_id, region_name, total_amount) SELECT TO_CHAR(o.order_date, &#039;YYYYMMDD&#039;), r.region_name, SUM(o.amount) FROM staging.orders o JOIN dim.region r ON r.region_id = o.region_id WHERE o.status = &#039;SHIPPED&#039; AND TRUNC(o.order_date) = TRUNC(p_load_date) GROUP BY TO_CHAR(o.order_date, &#039;YYYYMMDD&#039;), r.region_name; FIM load_revenue_mart; FIM sales_etl;<\/code><\/pre>\n\n\n\n<p>O SQLFlow l\u00ea o corpo do pacote e gera relat\u00f3rios, por coluna de sa\u00edda: <code>mart.revenue_daily.total_amount<\/code> \u00e9 alimentado por <code>staging.orders.amount<\/code> atrav\u00e9s <code>SOMA<\/code>; <code>nome_da_regi\u00e3o<\/code> vem de <code>dim.regi\u00e3o.nome_da_regi\u00e3o<\/code> por meio do ingresso em <code>id_da_regi\u00e3o<\/code>; <code>id_do_dia<\/code> \u00e9 derivado de <code>staging.orders.order_date<\/code> atrav\u00e9s <code>TO_CHAR<\/code>Tamb\u00e9m registra que <code>o.status<\/code>, <code>o.order_date<\/code>e o par\u00e2metro <code>data_de_carregamento<\/code> moldar o resultado atrav\u00e9s do <code>ONDE<\/code> cl\u00e1usula, e que o procedimento se encontra dentro do <code>vendas_etl<\/code> pacote no gr\u00e1fico de chamadas. Multiplique isso pelas centenas de procedimentos em um im\u00f3vel e voc\u00ea ter\u00e1 o mapa de depend\u00eancias que a documenta\u00e7\u00e3o manual nunca consegue manter atualizado.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">SQL din\u00e2mico: o ponto cego do EXECUTE IMMEDIATE<\/h2>\n\n\n\n<p>As equipes da Oracle recorrem constantemente ao SQL din\u00e2mico: carregando tabelas com nomes de parti\u00e7\u00f5es, aplicando DDL a partir de procedimentos, criando instru\u00e7\u00f5es cujo destino depende de uma linha de configura\u00e7\u00e3o. \u00c9 nesse tipo de c\u00f3digo que a maioria das extra\u00e7\u00f5es de linhagem falha:<\/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>O SQLFlow resolve o SQL din\u00e2mico dentro do procedimento e analisa a instru\u00e7\u00e3o montada, de modo que o fluxo de <code>receita di\u00e1ria do mercado<\/code> em <code>mart.revenue_archive<\/code> \u00e9 capturado em vez de ser descartado silenciosamente. Se sua propriedade usa <code>EXECUTE IMEDIATAMENTE<\/code> Em suma, esta \u00e9 a \u00fanica capacidade a ser verificada antes de confiar em qualquer ferramenta de linhagem: execute um de seus pr\u00f3prios procedimentos SQL din\u00e2micos atrav\u00e9s dela e verifique se a tabela de destino aparece no gr\u00e1fico.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Linhagem direta e indireta no c\u00f3digo Oracle<\/h2>\n\n\n\n<p>O SQLFlow distingue <strong>linhagem direta<\/strong> (o valor de uma coluna de origem \u00e9 atribu\u00eddo a uma coluna de destino) de <strong>linhagem indireta<\/strong> (uma coluna direciona o resultado atrav\u00e9s de um <code>ONDE<\/code> predicado, <code>JUNTAR<\/code> doen\u00e7a, <code>AGRUPAR POR<\/code>, ou agregar sem aparecer na sa\u00edda). No exemplo acima, <code>pedidos.status<\/code> nunca chega ao mercado, mas alterar seus valores alteraria todos os n\u00fameros nele. Os dois tipos de relacionamento podem ser ativados e desativados separadamente no diagrama, de modo que a an\u00e1lise de impacto pode incluir ou excluir depend\u00eancias somente de filtro deliberadamente. A maioria das ferramentas concorrentes n\u00e3o modela essa distin\u00e7\u00e3o, o que torna suas an\u00e1lises de impacto muito restritas (faltando colunas de filtro) ou muito ruidosas (tudo se conecta a tudo).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Como integrar seu c\u00f3digo Oracle ao SQLFlow<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>M\u00e9todo de entrada<\/th><th>Quando usar<\/th><\/tr><\/thead><tbody>\n<tr><td>Cole SQL ou PL\/SQL<\/td><td>Verifica\u00e7\u00f5es r\u00e1pidas em um \u00fanico pacote, procedimento ou script no navegador.<\/td><\/tr>\n<tr><td>Carregar arquivos<\/td><td>An\u00e1lise em massa de c\u00f3digo-fonte DDL e PL\/SQL exportado<\/td><\/tr>\n<tr><td>Conex\u00e3o JDBC ao vivo<\/td><td>Extraindo metadados de esquema, defini\u00e7\u00f5es de visualiza\u00e7\u00e3o e c\u00f3digo armazenado diretamente do banco de dados.<\/td><\/tr>\n<tr><td>Extra\u00e7\u00e3o de metadados Grabit<\/td><td>Extraindo metadados com a ferramenta complementar Grabit e enviando-os para o SQLFlow.<\/td><\/tr>\n<\/tbody><\/table><\/figure>\n\n\n\n<p>Independentemente do caminho escolhido, o SQLFlow realiza uma an\u00e1lise est\u00e1tica do texto SQL e PL\/SQL, al\u00e9m dos metadados do esquema. Ele nunca l\u00ea as linhas das suas tabelas. Para bancos e outras institui\u00e7\u00f5es Oracle regulamentadas, o <a href=\"https:\/\/www.gudusoft.com\/pt\/sqlflow-on-premise-versao\/\">Edi\u00e7\u00e3o On-Premise<\/a> Funciona como Docker ou Kubernetes dentro da sua rede, inclusive em modo totalmente isolado da internet (air-gapped), de forma que o c\u00f3digo-fonte em si nunca saia da sua infraestrutura. Em escala empresarial, realiza varreduras em lote de conjuntos de dados com mais de 100 bancos de dados e mais de um milh\u00e3o de colunas, com varreduras incrementais e adaptadores de exporta\u00e7\u00e3o para DataHub, Microsoft Purview e OpenMetadata.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Migra\u00e7\u00f5es Oracle e ambientes mistos<\/h2>\n\n\n\n<p>A an\u00e1lise de linhagem \u00e9 extremamente valiosa exatamente no momento em que os ambientes Oracle costumam enfrentar: a migra\u00e7\u00e3o. Antes de mover cargas de trabalho para Snowflake, BigQuery ou Databricks, o gr\u00e1fico de linhagem informa quais pacotes realmente alimentam os relat\u00f3rios que a empresa utiliza, quais tabelas est\u00e3o obsoletas e em que ordem os objetos devem ser migrados. Ap\u00f3s a migra\u00e7\u00e3o, executar novamente a an\u00e1lise na nova plataforma verifica se nada ficou \u00f3rf\u00e3o. O SQLFlow analisa 39 dialetos com gram\u00e1ticas espec\u00edficas para cada um, portanto, a mesma ferramenta abrange ambas as etapas da migra\u00e7\u00e3o.<\/p>\n\n\n\n<p>Poucos grandes sistemas operacionais utilizam exclusivamente o Oracle. A mesma profundidade de an\u00e1lise procedural est\u00e1 dispon\u00edvel para <a href=\"https:\/\/www.gudusoft.com\/pt\/linhagem-de-dados-do-servidor-sql\/\">Linhagem T-SQL do SQL Server<\/a>e plataformas de armaz\u00e9m como <a href=\"https:\/\/www.gudusoft.com\/pt\/linhagem-de-dados-teradata\/\">Teradata<\/a> Possuem seus pr\u00f3prios analisadores sint\u00e1ticos espec\u00edficos para cada dialeto. Um \u00fanico reposit\u00f3rio de linhagem pode conter todo o acervo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Onde se encaixam os analisadores sint\u00e1ticos de c\u00f3digo aberto<\/h2>\n\n\n\n<p>projetos de c\u00f3digo aberto como <code>linhagem sql<\/code> e <code>sqlglot<\/code> S\u00e3o realmente muito bons em analisar consultas individuais e, para extrair a linhagem em n\u00edvel de tabela a partir de instru\u00e7\u00f5es SELECT e INSERT independentes, podem ser tudo o que voc\u00ea precisa. A lacuna para o trabalho com Oracle est\u00e1 na camada procedural: corpos de pacotes, fluxo de par\u00e2metros, gatilhos e <code>EXECUTE IMEDIATAMENTE<\/code> S\u00e3o precisamente as constru\u00e7\u00f5es para as quais os analisadores SQL de prop\u00f3sito geral n\u00e3o foram criados, e em um ambiente Oracle \u00e9 onde reside a maior parte da l\u00f3gica de transforma\u00e7\u00e3o. A avalia\u00e7\u00e3o honesta \u00e9 emp\u00edrica: pegue o corpo do seu maior pacote, execute-o atrav\u00e9s das ferramentas candidatas e conte quantas tabelas de destino cada uma encontra.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Perguntas frequentes<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">O SQLFlow consegue rastrear a linhagem atrav\u00e9s de procedimentos armazenados e pacotes do Oracle?<\/h3>\n\n\n<p>Sim. O SQLFlow possui um analisador PL\/SQL dedicado, separado do seu analisador SQL do Oracle, que analisa pacotes, procedimentos, fun\u00e7\u00f5es e gatilhos. A linhagem \u00e9 rastreada por meio de par\u00e2metros de procedimento e tabelas tempor\u00e1rias, e um gr\u00e1fico de chamadas interativo mostra as invoca\u00e7\u00f5es de procedimento para procedimento em todos os pacotes.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">O SQLFlow lida com SQL din\u00e2mico do tipo EXECUTE IMMEDIATE?<\/h3>\n\n\n<p>Sim. O SQL din\u00e2mico montado dentro de procedimentos PL\/SQL \u00e9 resolvido e analisado em vez de ignorado, portanto, as instru\u00e7\u00f5es constru\u00eddas com <code>EXECUTE IMEDIATAMENTE<\/code> contribuem com seus fluxos de origem para destino ao grafo de linhagem.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">O SQLFlow precisa acessar meus dados do Oracle?<\/h3>\n\n\n<p>N\u00e3o. O SQLFlow realiza an\u00e1lises est\u00e1ticas de c\u00f3digo SQL e PL\/SQL e, opcionalmente, l\u00ea metadados de esquema via JDBC. Ele nunca l\u00ea os dados das linhas da tabela. Na edi\u00e7\u00e3o On-Premise, at\u00e9 mesmo o texto SQL permanece dentro da sua rede.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">O recurso de linhagem em n\u00edvel de coluna do Oracle est\u00e1 dispon\u00edvel na vers\u00e3o gratuita?<\/h3>\n\n\n<p>Sim. <a href=\"https:\/\/sqlflow.gudusoft.com\/?utm_source=gudusoft&amp;utm_medium=website&amp;utm_campaign=oracle-data-lineage-tool\">Nuvem SQLFlow<\/a> Possui um n\u00edvel gratuito: cole c\u00f3digo SQL ou PL\/SQL do Oracle no navegador e obtenha diagramas de linhagem em n\u00edvel de coluna. A vers\u00e3o Premium custa \u00a349,99\/m\u00eas; a vers\u00e3o On-Premise custa \u00a3500\/m\u00eas ou \u00a34.800 (pagamento \u00fanico) por tipo de banco de dados selecionado. Consulte <a href=\"https:\/\/www.gudusoft.com\/pt\/precos\/\">pre\u00e7os<\/a> Para mais detalhes.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Posso exportar a linhagem do Oracle para um cat\u00e1logo de dados?<\/h3>\n\n\n<p>Sim. A linhagem \u00e9 exportada em JSON, CSV ou PNG, pode ser consultada por meio de uma API REST e as implementa\u00e7\u00f5es corporativas incluem adaptadores de exporta\u00e7\u00e3o para DataHub, Microsoft Purview e OpenMetadata, de modo que o SQLFlow pode servir como o mecanismo de linhagem compat\u00edvel com PL\/SQL por tr\u00e1s do cat\u00e1logo que voc\u00ea j\u00e1 utiliza.<\/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\">Veja a linhagem oculta em seu PL\/SQL.<\/h2>\n\n\n<p>Cole o conte\u00fado de um pacote no visualizador gratuito ou entre em contato conosco para discutirmos a possibilidade de digitalizar todo o seu ambiente Oracle localmente.<\/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\">Experimente o SQLFlow gratuitamente<\/a><\/div>\n\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/www.gudusoft.com\/pt\/contato\/\">Solicite uma demonstra\u00e7\u00e3o empresarial<\/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\/pt\/wp-json\/wp\/v2\/pages\/3136"}],"collection":[{"href":"https:\/\/www.gudusoft.com\/pt\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.gudusoft.com\/pt\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.gudusoft.com\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gudusoft.com\/pt\/wp-json\/wp\/v2\/comments?post=3136"}],"version-history":[{"count":95,"href":"https:\/\/www.gudusoft.com\/pt\/wp-json\/wp\/v2\/pages\/3136\/revisions"}],"predecessor-version":[{"id":6755,"href":"https:\/\/www.gudusoft.com\/pt\/wp-json\/wp\/v2\/pages\/3136\/revisions\/6755"}],"wp:attachment":[{"href":"https:\/\/www.gudusoft.com\/pt\/wp-json\/wp\/v2\/media?parent=3136"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}