Oracle DBの未使用のスキーマをいくつか削除したかったのです。
すべてのスキーマ名を照会するにはどうすればよいですか?
Oracle DBの未使用のスキーマをいくつか削除したかったのです。
すべてのスキーマ名を照会するにはどうすればよいですか?
回答:
sqlplusの使用
sqlplus / sysdbaとして
実行:
選択する * FROM dba_users
ユーザー名だけが必要な場合は、次の操作を行います。
ユーザー名を選択 FROM dba_users
ほとんどの場合、あなたが欲しい
SELECT username
FROM dba_users
これにより、システム内のすべてのユーザー(およびすべての潜在的なスキーマ)が表示されます。「スキーマ」の定義でスキーマを空にできる場合は、それが必要です。ただし、実際には少なくとも1つのオブジェクトを所有している場合にのみスキーマを呼び出す必要があるため、オブジェクトを決して所有しない数百のユーザーアカウントが除外されるという意味上の違いがある場合があります。その場合
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')
誰かが誤って非システムユーザa与えられたシステムに遭遇することひどく珍しいことではありませんdefault_tablespace
のがSYSTEM
、しかし、その前提は、Oracleが提供するスキーマからフィルターにこの方法を試す前に、保持することを確信します。
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は、Oracle DB内のすべてのスキーマを返します。
select owner FROM all_tables group by owner;
select distinct owner FROM all_tables;