Descobrindo a tabela pelo rowid do Oracle

[ad#texto]

Algumas vezes encontramos rotinas de validação e/ou transferência de dados que utilizam o rowid (Oracle) como chave única para encontrar e atualizar os dados e para dar manutenção podemos ter a necessidade de saber de qual tabela saiu aquele rowid.

Podemos então executar a consulta abaixo para retornar o nome da tabela para o rowid informado:

DECLARE

w_rowid ROWID:=  'AAAWHmAAfAAAD7qAAA';
w_nome varchar2(100);

BEGIN

SELECT DBA_OBJECTS.OBJECT_NAME
 INTO w_nome
FROM SYS.DBA_OBJECTS
WHERE DBA_OBJECTS.OBJECT_ID = DBMS_ROWID.ROWID_OBJECT (w_rowid);

print('Tabela: '||w_nome);

END;

Devemos notar dois detalhes:

  • O rowid é único somente por cluster, ou seja, caso o seu ambiente seja “clusterizado” você poderá encontrar o mesmo rowid em diversos clusters, porém mesmo assim irá reduzir o número de tabelas para procurar o rowid;
  • O usuário precisa ter privilégio de SYSDBA do Oracle para executar a consulta.

Petter Rafael

Desenvolvedor Web atua com as tecnologias Java e PHP apoiadas pelos bancos de dados Oracle e MySQL. Além dos ambientes de desenvolvimento acima possuiu amplo conhecimento em servidores Apache/Tomcat, Photoshop, Arte & Foto, Flash e mais uma dezena de ferramentas e tecnologias emergentes. Atualmente colabora com o Viablog escrevendo sobre programação e tecnologia.
ViamaisBLOG
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.