私たちのoracle DB上で未使用のスキーマをいくつか削除したかったのですが、DB内のすべてのスキーマをリストするOracle SQLクエリ
どのようにしてすべてのスキーマ名を問い合せることができますか?
私たちのoracle DB上で未使用のスキーマをいくつか削除したかったのですが、DB内のすべてのスキーマをリストするOracle SQLクエリ
どのようにしてすべてのスキーマ名を問い合せることができますか?
sqlplusを使用して
SQLPLUS/SYSDBAとして
実行:
SELECT username FROM dba_users
ただし、あなたのユーザーに権限があることを確認してください。 – diagonalbatman
十分に良い、最初に答えるために+1。 – vicsz
@Andy:それで私は "特権ユーザー"と書いていた;) –
はほとんどの場合、あなたは
をしたい:SELECT * FROM dba_users
は、あなただけのユーザー名は、次の操作を実行したいなら
SELECT username
FROM dba_users
これは、システム内のすべてのユーザー(したがって、すべての潜在的なスキーマ)を表示します。 「スキーマ」の定義でスキーマを空にすることができる場合は、それが必要です。ただし、オブジェクトを所有していない何百ものユーザーアカウントが除外されるように、少なくとも1つのオブジェクトを実際に所有している場合にのみスキーマを呼び出すというセマンティックな区別があります。その場合、誰がスキーマはつまり、デフォルトの表領域を割り当て、あなたがdefault_tablespace
に述語を追加することによって、それらのスキーマを除外することができ、Oracleが提供してきましたスキーマに興味がないことを前提に関する賢明だっ作成したと仮定すると
SELECT username
FROM dba_users u
WHERE EXISTS (
SELECT 1
FROM dba_objects o
WHERE o.owner = u.username)
で
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 distinct owner
from dba_segments
where owner in (select username from dba_users where default_tablespace not in ('SYSTEM','SYSAUX'));
を生成します。これを理解すると、このクエリはテーブルを含むすべてのスキーマを表示します。そうですか? –
これは、古いバージョンのOracleでは確実に機能します。繰延セグメントの作成では、セグメントを持たないオブジェクトを持つことが可能です。 –
:それは、すべてのユーザー/スキーマ、自分のIDとDBで作成された日付のリストを返します
SQL> select * from all_users;
:SQLリストの下
USERNAME USER_ID CREATED
------------------------------ ---------- ---------
SCHEMA1 120 09-SEP-15
SCHEMA2 119 09-SEP-15
SCHEMA3 118 09-SEP-15
すべてORACLE_MAINTAINED = 'N'はフィルタです。インストール後に作成されるOracleのスキーマ ORACLE_MAINTAINED = 'N'はフィルタです。このコラムは12cの新機能です。
select distinct username,ORACLE_MAINTAINED from dba_users where ORACLE_MAINTAINED='N';
次のいずれかのSQLは、Oracle DB内のすべてのスキーマを戻します。
select owner FROM all_tables group by owner;
select distinct owner FROM all_tables;
クエリには表示されないテーブル以外のオブジェクトのみが含まれるスキーマが存在することがあります。 –
"未使用" のあなたの定義は何ですか? – APC
私はデータマイグレーションプロジェクトに取り組んでいます。すべての開発者は独自のスキーマセットを持っています。(一部の開発者は辞めてしまい、一部のスキーマセットは使用されなくなりました)。 – vicsz