Estoy trabajando en un proyecto de migración de datos y cada desarrollador tiene su propio conjunto de esquemas. (Algunos desarrolladores se han ido y algunos conjuntos de esquemas ya no se utilizan).
vicsz
Respuestas:
130
Usando sqlplus
sqlplus / as sysdba
correr:
SELECCIONE *
DE dba_users
Si solo desea los nombres de usuario, haga lo siguiente:
Sin embargo, asegúrese de tener permisos sobre su usuario.
diagonalbatman
2
@Andy: por eso escribí "como usuario privilegiado";)
a_horse_with_no_name
@horse Disculpas, me perdí eso.
diagonalbatman
@a_horse_with_no_name ¿eso significa que un esquema en Oracle significa que es un usuario? Me refiero a un esquema = usuario? y bajo ese usuario todas las tablas creadas igual que MySQL?
Osama Al-Banna
66
Lo más probable es que quieras
SELECT usernameFROM dba_users
Eso le mostrará todos los usuarios en el sistema (y por lo tanto todos los esquemas potenciales). 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 realmente posee al menos un objeto, de modo que se excluyen los cientos de cuentas de usuario que nunca poseerán ningún objeto. En ese caso
Suponiendo que quien haya creado los esquemas fue sensato al asignar espacios de tabla predeterminados y asumiendo que no está interesado en los esquemas que Oracle ha entregado, puede filtrar esos esquemas agregando predicados en default_tablespace, es decir
No es terriblemente raro encontrarse con un sistema en el que alguien ha dado forma incorrecta un no-sistema del usuario una default_tablespacede SYSTEMembargo, así que asegúrese de que las suposiciones son antes de tratar de filtrar los esquemas suministrados por Oracle de esta manera.
Según tengo entendido, esta consulta mostrará todos los esquemas que contienen tablas. ¿Está bien?
Andrew Spencer
1
Esto solo funcionará de manera confiable en versiones anteriores de Oracle. Con la creación de segmento diferido es posible tener un objeto sin segmento.
Jon Heller
4
Qué tal si :
SQL>select*from all_users;
devolverá la lista de todos los usuarios / esquemas, sus ID y la fecha de creación en la base de datos:
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.
seleccione un nombre de usuario distinto, ORACLE_MAINTAINED de dba_users donde ORACLE_MAINTAINED = 'N';
Respuestas:
Usando sqlplus
sqlplus / as sysdba
correr:
Si solo desea los nombres de usuario, haga lo siguiente:
fuente
Lo más probable es que quieras
Eso le mostrará todos los usuarios en el sistema (y por lo tanto todos los esquemas potenciales). 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 realmente posee al menos un objeto, de modo que se excluyen los cientos de cuentas de usuario que nunca poseerán ningún objeto. En ese caso
Suponiendo que quien haya creado los esquemas fue sensato al asignar espacios de tabla predeterminados y asumiendo que no está interesado en los esquemas que Oracle ha entregado, puede filtrar esos esquemas agregando predicados en
default_tablespace
, es deciro
No es terriblemente raro encontrarse con un sistema en el que alguien ha dado forma incorrecta un no-sistema del usuario una
default_tablespace
deSYSTEM
embargo, así que asegúrese de que las suposiciones son antes de tratar de filtrar los esquemas suministrados por Oracle de esta manera.fuente
select distinct owner from dba_objects
?fuente
dba_users
(por ejemplo: errorORA-00942 : table or view does not exist
)fuente
Qué tal si :
devolverá la lista de todos los usuarios / esquemas, sus ID y la fecha de creación en la base de datos:
fuente
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.
fuente
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;
fuente