Oracle SQL Query pour répertorier tous les schémas dans une firebase database

Je voulais supprimer certains schémas inutilisés sur notre firebase database Oracle.

Comment puis-je interroger tous les noms de schéma?

Très probablement, vous voulez

SELECT username FROM dba_users 

Cela vous montrera tous les utilisateurs du système (et donc tous les schémas potentiels). Si votre définition de “schéma” permet à un schéma d’être vide, c’est ce que vous voulez. Cependant, il peut exister une distinction sémantique dans laquelle les utilisateurs souhaitent uniquement appeler quelque chose un schéma s’ils possèdent réellement au moins un object, de sorte que les centaines de comptes d’utilisateur qui ne possèdent aucun object sont exclus. Dans ce cas

 SELECT username FROM dba_users u WHERE EXISTS ( SELECT 1 FROM dba_objects o WHERE o.owner = u.username ) 

En supposant que quiconque a créé les schémas était raisonnable quant à l’atsortingbution d’espaces de table par défaut et en supposant que les schémas fournis par Oracle ne vous intéressent pas, vous pouvez filtrer ces schémas en ajoutant des prédicats sur default_tablespace , par exemple

 SELECT username FROM dba_users WHERE default_tablespace not in ('SYSTEM','SYSAUX') 

ou

 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') 

Il n’est cependant pas rare de rencontrer un système où un utilisateur non-système possède un default_tablespace de SYSTEM , donc soyez sûr que les hypothèses sont correctes avant d’essayer de filtrer les schémas livrés par Oracle.

 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')); 

Que diriez-vous :

 SQL> select * from all_users; 

il retournera la liste de tous les utilisateurs / schémas, leurs identifiants et leur date de création dans la firebase database:

 USERNAME USER_ID CREATED ------------------------------ ---------- --------- SCHEMA1 120 09-SEP-15 SCHEMA2 119 09-SEP-15 SCHEMA3 118 09-SEP-15 

En dessous de SQL, on trouve tous les schémas d’Oracle créés après l’installation ORACLE_MAINTAINED = ‘N’ est le filtre. Cette colonne est nouvelle en 12c.

  sélectionnez le nom d'utilisateur distinct, ORACLE_MAINTAINED de dba_users où ORACLE_MAINTAINED = 'N'; 

L’un des SQL suivants renverra tous les schémas dans Oracle DB.

  1. select owner FROM all_tables group by owner;
  2. select distinct owner FROM all_tables;