Я работаю над проектом по миграции данных, и у каждого разработчика есть свой набор схем. (Некоторые разработчики ушли, а некоторые наборы схем больше не используются).
vicsz
Ответы:
130
Использование sqlplus
sqlplus / как sysdba
бегать:
ВЫБРАТЬ *
ОТ dba_users
Если вы хотите, чтобы имена пользователей делали следующее:
Однако убедитесь, что у вас есть разрешения для вашего пользователя.
diagonalbatman
2
@Andy: вот почему я написал «как привилегированный пользователь»;)
a_horse_with_no_name
@horse Извините, я пропустил это.
diagonalbatman
@a_horse_with_no_name означает ли это, что схема в Oracle означает, что это пользователь? Я имею ввиду схему = пользователь? и под этим пользователем все таблицы созданы так же, как MySQL?
Усама Аль-Банна
66
Скорее всего, вы хотите
SELECT username
FROM dba_users
Это покажет вам всех пользователей в системе (и, следовательно, все потенциальные схемы). Если ваше определение «схемы» допускает, чтобы схема была пустой, это то, что вы хотите. Однако может быть семантическое различие, когда люди хотят называть что-то схемой, только если она действительно владеет хотя бы одним объектом, так что сотни учетных записей пользователей, которые никогда не будут владеть какими-либо объектами, исключаются. В таком случае
SELECT username
FROM dba_users u
WHEREEXISTS(SELECT1FROM dba_objects o
WHERE o.owner = u.username )
Предполагая, что тот, кто создавал схемы, разумно назначал табличные пространства по умолчанию, и предполагая, что вас не интересуют схемы, предоставленные Oracle, вы можете отфильтровать эти схемы, добавив предикаты в default_tablespace, т.е.
SELECT username
FROM dba_users
WHERE default_tablespace notin('SYSTEM','SYSAUX')
или
SELECT username
FROM dba_users u
WHEREEXISTS(SELECT1FROM dba_objects o
WHERE o.owner = u.username )AND default_tablespace notin('SYSTEM','SYSAUX')
Это не так уж редко можно встретить систему , где кто - то неправильно заданной несистемный пользователь А default_tablespaceиз SYSTEM, хотя, так что будьте уверены , что предположения , провести , прежде чем пытаться отфильтровать Oracle устанавливаемых схемы таким образом.
Ответы:
Использование sqlplus
sqlplus / как sysdba
бегать:
Если вы хотите, чтобы имена пользователей делали следующее:
источник
Скорее всего, вы хотите
Это покажет вам всех пользователей в системе (и, следовательно, все потенциальные схемы). Если ваше определение «схемы» допускает, чтобы схема была пустой, это то, что вы хотите. Однако может быть семантическое различие, когда люди хотят называть что-то схемой, только если она действительно владеет хотя бы одним объектом, так что сотни учетных записей пользователей, которые никогда не будут владеть какими-либо объектами, исключаются. В таком случае
Предполагая, что тот, кто создавал схемы, разумно назначал табличные пространства по умолчанию, и предполагая, что вас не интересуют схемы, предоставленные Oracle, вы можете отфильтровать эти схемы, добавив предикаты в
default_tablespace
, т.е.или
Это не так уж редко можно встретить систему , где кто - то неправильно заданной несистемный пользователь А
default_tablespace
изSYSTEM
, хотя, так что будьте уверены , что предположения , провести , прежде чем пытаться отфильтровать Oracle устанавливаемых схемы таким образом.источник
select distinct owner from dba_objects
?источник
dba_users
(например: ошибкаORA-00942 : table or view does not exist
)источник
Как насчет :
он вернет список всех пользователей / схем, их идентификаторы и дату, созданные в БД:
источник
Ниже sql перечисляет все схемы в oracle, которые создаются после установки ORACLE_MAINTAINED = 'N' - это фильтр. Этот столбец является новым в 12c.
источник
Любой из следующих SQL вернет всю схему в Oracle DB.
select owner FROM all_tables group by owner;
select distinct owner FROM all_tables;
источник