Descobrindo a tabela pelo rowid do Oracle

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.

Leia mais:

Sobre 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.

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>