Oracle SQL Query для перечисления всех схем в БД



Я хотел удалить некоторые неиспользуемые схемы в нашей базе данных oracle.



Как я могу запросить все имена схем ?

1328   7  

7 ответов:

С помощью sqlplus

sqlplus / as sysdba

run:

SELECT * 
FROM dba_users

Если вы хотите, чтобы имена пользователей выполняли следующие действия:

SELECT username 
FROM dba_users

скорее всего, вы хотите

SELECT username
  FROM dba_users

что покажет вам всех пользователей в системе (и, следовательно, все потенциальные схемы). Если ваше определение "схемы" позволяет схеме быть пустой, это то, что вы хотите. Однако может быть семантическое различие, когда люди хотят называть что-то схемой только в том случае, если она действительно владеет хотя бы одним объектом, так что сотни учетных записей пользователей, которые никогда не будут владеть какими-либо объектами, исключаются. В том дело

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

предполагая, что тот, кто создал схемы, был разумным о назначении табличных пространств по умолчанию и предполагая, что вас не интересуют схемы, поставленные Oracle, вы можете отфильтровать эти схемы, добавив предикаты на default_tablespace, т. е.

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

или

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

не так уж редко можно встретить систему, в которой кто-то неправильно дал несистемному пользователю default_tablespace на SYSTEM, хотя, так что будьте уверены, что предположения сохраняются, прежде чем пытаться отфильтровать схемы, поставляемые 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'));

Как насчет :

SQL> select * from all_users;

он вернет список всех пользователей / схем, их идентификаторы и даты, созданные в БД:

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

ниже sql перечислены все схемы в oracle, которые создаются после установки ORACLE_MAINTAINED=' N ' - это фильтр. Этот столбец является новым в 12С.

select distinct username,ORACLE_MAINTAINED from dba_users where ORACLE_MAINTAINED='N';

любой из следующих SQL вернет всю схему в Oracle DB.

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

Comments

    Ничего не найдено.