miércoles, 7 de junio de 2017

Listar Esquemas y Tablas de Oracle

Una de mis tareas laborales es fungir como DBA de una base de datos Oracle. Para un nuevo proyecto necesitaba crear un usuario y darle a ese usuario permisos de SELECT sobre todas las tablas de un Esquema.  Estuve investigando y llegué a algunas consultas útiles, pero todo repartido en varios sitios. 

Listar todos los SCHEMAS

Esta consulta la encontré en sitio de Burleston Consulting, un referente para todos los que tenemos que lidiar con bases de datos Oracle. Si nunca visitaron el sitio vale la pena hacerlo. La consulta la encontré aquí

SELECT DISTINCT owner AS SCHEMA
FROM dba_segments
WHERE owner IN (SELECT username  

                FROM dba_users 
                WHERE default_tablespace NOT IN ('SYSTEM','SYSAUX'))
ORDER BY owner ASC;

Listar todas las tablas de un SCHEMA

Encontré varias posibilidades para resolver esta consulta. De todas esta es la que me convenció más, la  saqué de una discusión en stackoverflow.

SELECT DISTINCT owner, object_name
FROM all_objects
WHERE object_type = 'TABLE' AND owner = '[PROPIETARIO_SCHEMA]'

Listar todas las tablas de todos los SCHEMAS

A partir de las dos anteriores hice una consulta que me lista todas las tablas de todos los schemas.
 
SELECT DISTINCT owner, object_name
FROM all_objects 
WHERE object_type = 'TABLE' AND
owner IN (SELECT username
          FROM dba_users 
          WHERE default_tablespace NOT IN ('SYSTEM','SYSAUX'))
ORDER BY owner ASC;

No hay comentarios:

Publicar un comentario