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