procurar campo com valor

DBA Geral (instalação, configuração do banco, scripts do Sql*Plus, shell scripts, batch scripts, etc...)
Responder
rickab7
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 53
Registrado em: Sex, 25 Ago 2006 8:11 pm
Localização: campo grande
stephany henrique de almeida batista

Galera, beleza??

Estou com um problema, estou tendo problema em um relatorio do sistema aqui da empresa pois tem um valor de um campo que esta muito alto. Mais não sei de que tabela e nem que campo esta armazenado este valor. Entaum gostaria de saber se tem como atravez de um valor eu procurar em todas as tabelas e campos existentes no banco de dados oracle e achar
Hahu
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 147
Registrado em: Qui, 16 Mar 2006 11:26 am
Localização: São Paulo
O mundo gira muito!!

Amigo!!

Bom dia novamente..coloque está pergunta relacionada com o tema(tópico) que você quer saber, porque assim facilita para a galera responder ...obrigado!!

Abs Hahu
gilbertoca
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 372
Registrado em: Ter, 24 Jan 2006 3:33 pm
Localização: Palmas - TO
Contato:

Talvez você monitoriando a sessão do usuario seja mais fácil:

Selecionar tudo

select b.username username, c.sid sid, c.owner object_owner,
   c.object object, b.lockwait, a.sql_text SQL
from v$sqltext a, v$session b, v$access c
where a.address=b.sql_address and
   a.hash_value=b.sql_hash_value and
   b.sid = c.sid and
   c.owner = 'usuario'
Essa sql foi tirada desse link: http://www.fors.com/orasupp/rdbms/misc/15476_1.HTM

Gilberto
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5026
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Outra forma é criar um script que consulta em todos campos numéricos!

Uma vez eu fiz algo parecido assim:
* Alguém alterou a hora do servidor e durante o período de 5 minutos, todos os SYSDATE ficaram com a data de 2030 !

Pra achar as linhas inseridas com essa data errada, eu fiz um select que "montava" uma consulta no banco em todas tabelas.

Selecionar tudo

SELECT A.TABLE_NAME , B.COLUMN_NAME, B.DATA_TYPE
FROM ALL_TABLES      A
,    ALL_TAB_COLUMNS B
WHERE A.OWNER='CLIEMP'
  AND A.TABLE_NAME = B.TABLE_NAME
  AND A.OWNER      = B.OWNER
  AND B.DATA_TYPE  = 'DATE'
Com base nesse select, eu fiz uma procedure que gerava um script assim: Um select em cada tabela, em cada campo DATE ele testava a minha condição:

Selecionar tudo

campo_tal > to_date('01-01-2010', 'dd-mm-yyyy'
A procedure montava um script assim:

Selecionar tudo

SELECT COUNT(*)
FROM TABELA_X
WHERE CAMPODATA1 > to_date('01-01-2010', 'dd-mm-yyyy')
   OR CAMPODATA2 > to_date('01-01-2010', 'dd-mm-yyyy')
/

SELECT COUNT(*)
FROM TABELA_Y
WHERE CAMPODATA5 > to_date('01-01-2010', 'dd-mm-yyyy')

/
Depois de gerado esse script, eu apenas executei ele. A resposta foi mostrada na tela quantas linhas em cada tabela. Funcionou perfeitamente!
Tente fazer algo parecido !
rickab7
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 53
Registrado em: Sex, 25 Ago 2006 8:11 pm
Localização: campo grande
stephany henrique de almeida batista

dr_gori obrigado.


Valeu pela ajuda.
Responder
  • Informação