todas - Oracle SQL Query para listar todos los esquemas en una base de datos
ver tablas en oracle sql developer (7)
A continuación, sql enumera todos los esquemas en Oracle que se crean después de la instalación ORACLE_MAINTAINED = ''N'' es el filtro. Esta columna es nueva en 12c.
select distinct username,ORACLE_MAINTAINED from dba_users where ORACLE_MAINTAINED=''N'';
Quería eliminar algunos esquemas no utilizados en nuestra base de datos Oracle.
¿Cómo puedo consultar todos los nombres de esquema?
Cualquiera de los siguientes SQL devolverá todos los esquemas en Oracle DB.
-
select owner FROM all_tables group by owner;
-
select distinct owner FROM all_tables;
Lo más probable es que quieras
SELECT username
FROM dba_users
Eso le mostrará todos los usuarios en el sistema (y por lo tanto todos los posibles esquemas). Si su definición de "esquema" permite que un esquema esté vacío, eso es lo que desea. Sin embargo, puede haber una distinción semántica en la que las personas solo quieran llamar a algo un esquema si posee al menos un objeto, de modo que se excluyan los cientos de cuentas de usuario que nunca serán propietarias de ningún objeto. En ese caso
SELECT username
FROM dba_users u
WHERE EXISTS (
SELECT 1
FROM dba_objects o
WHERE o.owner = u.username )
Suponiendo que quien creó los esquemas fue sensato al asignar espacios de tabla predeterminados y asumiendo que no le interesan los esquemas que Oracle ha entregado, puede filtrar esos esquemas agregando predicados en el espacio de tablas predeterminado, es decir,
SELECT username
FROM dba_users
WHERE default_tablespace not in (''SYSTEM'',''SYSAUX'')
o
SELECT username
FROM dba_users u
WHERE EXISTS (
SELECT 1
FROM dba_objects o
WHERE o.owner = u.username )
AND default_tablespace not in (''SYSTEM'',''SYSAUX'')
Sin embargo, no es terriblemente raro encontrar un sistema en el que alguien haya otorgado incorrectamente un usuario que no sea del sistema a un default_tablespace
, así que asegúrese de que las suposiciones se mantengan antes de tratar de filtrar los esquemas entregados de Oracle de esta manera.
Qué tal si :
SQL> select * from all_users;
Devolverá la lista de todos los usuarios / esquemas, sus ID y fecha de creación en DB:
USERNAME USER_ID CREATED
------------------------------ ---------- ---------
SCHEMA1 120 09-SEP-15
SCHEMA2 119 09-SEP-15
SCHEMA3 118 09-SEP-15
Usando sqlplus
sqlplus / as sysdba
correr:
SELECT * FROM dba_users
Si solo desea los nombres de usuario haga lo siguiente:
SELECT username FROM dba_users
SELECT username FROM all_users ORDER BY username;
select distinct owner
from dba_segments
where owner in (select username from dba_users where default_tablespace not in (''SYSTEM'',''SYSAUX''));