Oracle DB'mizdeki bazı kullanılmayan şemaları silmek istedim.
Tüm şema adlarını nasıl sorgulayabilirim?
Oracle DB'mizdeki bazı kullanılmayan şemaları silmek istedim.
Tüm şema adlarını nasıl sorgulayabilirim?
Yanıtlar:
Sqlplus kullanma
sqlplus / sysdba olarak
Çalıştırmak:
SEÇ * DBA_users'DAN
Yalnızca kullanıcı adlarının aşağıdakileri yapmasını istiyorsanız:
Kullanıcı adı seçiniz DBA_users'DAN
Büyük olasılıkla istiyorsun
SELECT username
FROM dba_users
Bu size sistemdeki tüm kullanıcıları (ve dolayısıyla tüm potansiyel şemaları) gösterecektir. "Şema" tanımınız bir şemanın boş olmasına izin veriyorsa, istediğiniz budur. Bununla birlikte, insanların yalnızca en az bir nesneye sahip olan bir şeyi şema olarak adlandırmak istedikleri, böylece hiçbir nesneye sahip olmayacak yüzlerce kullanıcı hesabının hariç tutulduğu anlamsal bir ayrım olabilir. Bu durumda
SELECT username
FROM dba_users u
WHERE EXISTS (
SELECT 1
FROM dba_objects o
WHERE o.owner = u.username )
Şemaları yaratanın varsayılan tablo alanlarını atama konusunda mantıklı olduğunu ve Oracle'ın sunduğu şemalarla ilgilenmediğinizi varsayarak, bu şemaları default_tablespace
, örn.
SELECT username
FROM dba_users
WHERE default_tablespace not in ('SYSTEM','SYSAUX')
veya
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')
Birisi yanlış olmayan bir sistem kullanıcı a vermiş bir sisteme rastlamak korkunç nadir değildir default_tablespace
ait SYSTEM
böylece olsa da, varsayımlar Oracle teslim şemalar üzerinden filtreye bu şekilde denemeden önce tuttukları emin olun.
select distinct owner from dba_objects
?
SELECT username FROM all_users ORDER BY username;
dba_users
(örn: hata 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'));
Peki ya:
SQL> select * from all_users;
tüm kullanıcıların / şemaların listesini, kimliklerini ve DB'de yaratılma tarihini döndürür:
USERNAME USER_ID CREATED
------------------------------ ---------- ---------
SCHEMA1 120 09-SEP-15
SCHEMA2 119 09-SEP-15
SCHEMA3 118 09-SEP-15
Aşağıda sql oracle'da kurulumdan sonra oluşturulan tüm şemaları listeler ORACLE_MAINTAINED = 'N' filtredir. Bu sütun 12c'de yenidir.
ORACLE_MAINTAINED = 'N' olan dba_users'dan ORACLE_MAINTAINED ayrı bir kullanıcı adı seçin;
Aşağıdaki SQL'den herhangi biri Oracle DB'deki tüm şemayı döndürür.
select owner FROM all_tables group by owner;
select distinct owner FROM all_tables;