답변:
sqlplus 사용
sqlplus / as sysdba
운영:
고르다 * dba_users에서
사용자 이름 만 원하는 경우 다음을 수행하십시오.
사용자 이름 선택 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
, ie 에 조건자를 추가하여 해당 스키마를 필터링 할 수 있습니다.
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
그렇게하지만, 가정은 오라클 전달 스키마에서 필터에이 방법을 시도하기 전에 보유 것을 확신합니다.
select distinct owner from dba_objects
다릅니 까?
SELECT username FROM all_users ORDER BY username;
dba_users
(예 : 오류 ORA-00942 : table or view does not exist
)
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;
모든 사용자 / 스키마 목록, 해당 ID 및 DB에 생성 된 날짜를 반환합니다.
USERNAME USER_ID CREATED
------------------------------ ---------- ---------
SCHEMA1 120 09-SEP-15
SCHEMA2 119 09-SEP-15
SCHEMA3 118 09-SEP-15
다음 SQL 중 하나는 Oracle DB의 모든 스키마를 반환합니다.
select owner FROM all_tables group by owner;
select distinct owner FROM all_tables;