Picture of Roberto Sobrinho
Roberto Sobrinho

29/11/2024

Procurar tabelas, colunas ou termos no corpo das views?

Já se viu em uma situação em que precisava descobrir onde uma tabela, coluna ou qualquer texto chave aparece no código das views.

Usar a DBA_DEPENDENCIES parece a solução óbvia, mas ela só mostra dependências estruturais. Ou seja, não ajuda a localizar palavras-chave diretamente no código das views. Quando você quer buscar algo como o nome de uma tabela ou uma coluna específica, precisa de algo diferente.

Apresento o find_text_view_source.sql, um script que busca diretamente no código das views usando o pacote DBMS_METADATA. Ele permite localizar qualquer palavra-chave que você informar, seja uma tabela, coluna ou qualquer palavra-chave.

find_text_view_source.sql

-- +-------------------------------------------------------------------------------------------+
-- | Objetivo   : Procurar palavras-chave dentro dos corpos das visões.                        |
-- | Criador    : Roberto Fernandes Sobrinho                                                   |
-- | Data       : 29/11/2024                                                                   |
-- | Exemplo    : @find_text_view_source.sql                                                   |  
-- | Arquivo    : find_text_view_source.sql                                                    |
-- | Referência :                                                                              |
-- | Modificação:                                                                              |
-- +-------------------------------------------------------------------------------------------+
-- |                                                                https://dbasobrinho.com.br | 
-- +-------------------------------------------------------------------------------------------+
WHENEVER SQLERROR EXIT SQL.SQLCODE;
WHENEVER OSERROR EXIT;
SET TERMOUT OFF;
ALTER SESSION SET NLS_DATE_FORMAT='DD-MON-YY HH24:MI:SS';
EXEC dbms_application_info.set_module(module_name => 'tun[sqlpatch_add]', action_name => 'tun[sqlpatch_add]');
COLUMN current_instance NEW_VALUE current_instance NOPRINT;
SELECT rpad(sys_context('USERENV', 'INSTANCE_NAME'), 17) current_instance FROM dual;
SET TERMOUT ON;
PROMPT
PROMPT +--------------------------------------------------------------------------------------------+
PROMPT | https://github.com/dbasobrinho/g_gold/blob/main/find_text_view_source.sql                  |
PROMPT +--------------------------------------------------------------------------------------------+
PROMPT | Script   : LOCALIZAR TEXTO DENTRO DE VIEWS                       +-+-+-+-+-+-+-+-+-+-+-+   |
PROMPT | Instância: &current_instance                                     |d|b|a|s|o|b|r|i|n|h|o|   |
PROMPT | Versão   : 1.0                                                   +-+-+-+-+-+-+-+-+-+-+-+   |
PROMPT +--------------------------------------------------------------------------------------------+
PROMPT
SET ECHO        OFF
SET FEEDBACK    OFF
SET HEADING     ON
SET LINES       188
SET PAGES       300
SET TIMING      OFF
SET TRIMOUT     ON
SET TRIMSPOOL   ON
SET VERIFY      OFF
SET TIME        OFF
SET TIMING      OFF
SET SERVEROUTPUT ON SIZE UNLIMITED;

PROMPT ================================================================================
PROMPT |            *** BUSCA DEPENCENCIAS EM VIEWS POR PALAVRA-CHAVE ***             |
PROMPT ================================================================================
PROMPT |                  Informe o texto a ser buscado nas views e pressione [Enter]:|
PROMPT ================================================================================
ACCEPT p_busca CHAR PROMPT '| Palavra-chave: '
PROMPT ================================================================================
--CT_CONTRACT_CONDITIONS_H
DECLARE
    v_busca VARCHAR2(200) := UPPER(TRIM('&p_busca'));
BEGIN
    IF LENGTH(nvl(v_busca,'x')) <= 3 THEN
        DBMS_OUTPUT.PUT_LINE('       A palavra-chave deve ter mais de 3 caracteres. Busca cancelada.');
        RETURN;
    END IF;

    FOR rec IN (
        select view_name, owner
        from   dba_views
        order  by owner, view_name
    ) LOOP
        IF DBMS_LOB.INSTR(UPPER(DBMS_METADATA.GET_DDL('VIEW', rec.view_name, rec.owner)), v_busca) > 0 THEN
            DBMS_OUTPUT.PUT_LINE('       View : ' || rec.owner || '.' || rec.view_name);
        END IF;
    END LOOP;
END;
/
PROMPT ================================================================================
PROMPT |                       *** BUSCA FINALIZADA! ***                             |
PROMPT ================================================================================
SET FEEDBACK ON
SET VERIFY ON

Como usar

Baixe o script: Já está disponível no meu repositório no GitHub. find_text_view_source.sql
Salve no ambiente: Guarde como find_text_view_source.sql.
Execute no SQL*Plus ou ferramenta similar

Vamos imaginar um cenário hipotético: você é o DBA responsável pelo banco de dados e recebe uma solicitação urgente do time de desenvolvimento. Eles precisam saber todas as views que mencionam a tabela ou termo CT_CONTRATO, pois há uma alteração planejada que pode impactar diretamente esses objetos.

O desafio? Descobrir rapidamente onde esse termo aparece.

@find_text_view_source.sql

Localizar tabelas, colunas ou termos específicos no código das views pode ser uma tarefa bem chata. Mas com o script find_text_view_source.sql, tudo fica simples e eficiente, eliminando dores de cabeça e entregando exatamente o que você precisa.

Link para o script: find_text_view_source.sql


🧸🪆#2021129 #DBASobrinho #GuinaNãoTinhaDó #BóBó #CaceteDeAgulha #OracleACE  #PosteMijandoNoCachorro #ChamandoDoutorRanchCruts #NãoReclame #NãoSeExplique🧸🪆


20241129_procurar_termos_corpo_views.sql

ENGLISH VERSION:

20241129_procurar_termos_corpo_views_ENG.sql

Compartilhe

Facebook
Twitter
LinkedIn
WhatsApp
Email
Print

Pesquisar

Roberto Sobrinho

Sou Roberto Fernandes Sobrinho, também conhecido como Sobrinho DBA , pós graduado em “Architecture and Database Administration”, entusiasta, dedicado e com 20 anos de experiência com Oracle Database e suas diversas distribuições e variações.

Oracle ACE Associate

2025

Specialist

Exadata Database Machine X9M

Professional

Oracle Database Administration

Professional

Oracle Database 19c: RAC, ASM, & Grid Infra Administrator

Professional

Oracle Autonomous Database Cloud

Professional

Oracle Cloud Database Migration and Integration

Professional

Oracle Database PL/SQL Developer

Associate

Oracle Cloud Infrastructure Architect

Associate

Oracle Cloud Infrastructure Foundations

Categorias

Categorias

Tags

Procurar tabelas, colunas ou termos no corpo das views?