AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 146190
Accepted
durette
durette
Asked: 2016-08-09 07:12:11 +0800 CST2016-08-09 07:12:11 +0800 CST 2016-08-09 07:12:11 +0800 CST

Como posso encontrar a coluna da tabela base de uma coluna de visualização?

  • 772

Eu programo, administro e dou suporte a um aplicativo ERP. Uma das minhas tarefas mais comuns é entender de onde os dados se originam, encontrando o link entre um determinado campo de relatório e seu campo de entrada de dados no aplicativo. Para fazer isso, tenho que examinar manualmente o DDL SQL de uma ou mais visualizações para entender as colunas da tabela, a fim de corresponder as colunas da tabela de uma visualização com as colunas da tabela de outra visualização. Esta tarefa manual pode exigir o exame de quatro ou cinco camadas de abstração.

Existe uma maneira mais rápida de examinar os metadados para descobrir como uma coluna de exibição é calculada a partir de sua coluna da tabela base? Existe uma maneira de examinar o plano de execução do Oracle para ver a consulta reescrita, ignorando a inspeção manual das exibições intermediárias?

oracle oracle-11g-r2
  • 3 3 respostas
  • 543 Views

3 respostas

  • Voted
  1. Best Answer
    Balazs Papp
    2016-08-09T15:07:09+08:002016-08-09T15:07:09+08:00

    Começando com 12c, temos DBMS_UTILITY.EXPAND_SQL_TEXT .

    Você basicamente passa o texto da consulta pelo primeiro parâmetro de entrada e recebe a consulta reescrita de volta pelo segundo parâmetro de saída.

    Mas como você está no 11.2, ainda não pode usar isso. No entanto, você pode coletar o rastreamento do otimizador. Se você já executou sua consulta e possui o sql_id dela:

    begin
      dbms_sqldiag.dump_trace
      (
        p_sql_id=>'1a2b3c4d5e6f',
        p_child_number=>0,
        p_component=>'optimizer',
        p_file_id=>'optimzer_trace'
      );
    end;
    /
    

    Ou se você não conhece o sql_id e não executou a query antes:

    alter session set events 'trace[rdbms.sql_optimizer.*]';
    -- run your query here, no need to wait for results, it just need to be hard parsed
    alter session set events 'trace[rdbms.sql_optimizer.*] off';
    

    Isso gerará um arquivo de rastreamento que você pode ler e localizar a consulta final reescrita nele.

    Para ser honesto, a saída produzida por todos os métodos pode ser difícil de ler quando você tem algumas consultas complexas, e a maneira de obtê-las não é tão trivial, então geralmente acabo lendo e "analisando" as instruções DDL manualmente ...

    • 5
  2. Michael Green
    2016-08-09T14:41:46+08:002016-08-09T14:41:46+08:00

    Você tem acesso ao plano de execução ? Isso mostrará como o Oracle resolve colunas de visualização para índices ou tabelas base. Você pode criar consultas fictícias simples para se concentrar nos itens específicos nos quais está interessado.

    • 1
  3. durette
    2020-07-25T06:39:13+08:002020-07-25T06:39:13+08:00

    Três anos depois, a base instalada de instâncias 11g provavelmente mudou para 12c, assim como nós.

    OUTos parâmetros não têm a mesma conveniência que as funções, mas a WITHcláusula em 12c agora aceita funções PL/SQL definidas pelo usuário.

    WITH
       FUNCTION get_expanded_sql_text_ (
          input_sql_text_ IN CLOB) RETURN CLOB
       IS
          output_sql_text_ CLOB;
       BEGIN
          dbms_utility.expand_sql_text (
             input_sql_text  => input_sql_text_,
             output_sql_text => output_sql_text_);
          RETURN output_sql_text_;
       END get_expanded_sql_text_;
    SELECT get_expanded_sql_text_('SELECT SYSDATE FROM DUAL') AS expanded_sql_text
      FROM DUAL
    /
    
    • 0

relate perguntas

  • Backups de banco de dados no Oracle - Exportar o banco de dados ou usar outras ferramentas?

  • ORDER BY usando prioridades personalizadas para colunas de texto

  • Interface sqlplus confortável? [fechado]

  • Como encontrar as instruções SQL mais recentes no banco de dados?

  • Como posso consultar nomes usando expressões regulares?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve