Oracle SQL Query用于列出数据库中的所有模式

vic*_*csz 90 oracle plsql

我想在oracle DB上删除一些未使用的模式.

如何查询所有模式名称?

a_h*_*ame 123

使用sqlplus

sqlplus/as sysdba

跑:

SELECT * 
FROM dba_users

您是否只希望用户名执行以下操作:

SELECT username 
FROM dba_users

  • @Andy:这就是为什么我写"作为特权用户";) (2认同)

Jus*_*ave 62

最有可能的是,你想要的

SELECT username
  FROM dba_users
Run Code Online (Sandbox Code Playgroud)

这将显示系统中的所有用户(以及所有可能的模式).如果您对"架构"的定义允许架构为空,那就是您想要的.然而,可以存在语义上的区别,其中人们仅想要在其实际拥有至少一个对象的情况下调用某个模式,从而排除将永远不拥有任何对象的数百个用户帐户.在这种情况下

SELECT username
  FROM dba_users u
 WHERE EXISTS (
    SELECT 1
      FROM dba_objects o
     WHERE o.owner = u.username )
Run Code Online (Sandbox Code Playgroud)

假设创建模式的任何人都明白分配默认表空间并假设您对Oracle提供的模式不感兴趣,您可以通过添加谓词来过滤掉这些模式default_tablespace,即

SELECT username
  FROM dba_users
 WHERE default_tablespace not in ('SYSTEM','SYSAUX')
Run Code Online (Sandbox Code Playgroud)

要么

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')
Run Code Online (Sandbox Code Playgroud)

但是,遇到某人错误地给非系统用户a default_tablespace的系统并不是非常罕见SYSTEM,因此在尝试以这种方式过滤掉Oracle提供的模式之前,请确保这些假设成立.


suh*_*ano 25

SELECT username FROM all_users ORDER BY username;
Run Code Online (Sandbox Code Playgroud)

  • 如果您的用户没有对 `dba_users` 的权限,非常有用(例如:错误 `ORA-00942 : table or view does not exist`) (2认同)

FeR*_*oll 8

select distinct owner 
from dba_segments
where owner in (select username from dba_users where default_tablespace not in ('SYSTEM','SYSAUX'));
Run Code Online (Sandbox Code Playgroud)


小智 8

下面的sql列出了安装后创建的oracle中的所有模式 ORACLE_MAINTAINED='N' 是过滤器。此列是 12c 中的新增内容。

从 dba_users 选择不同的用户名 ORACLE_MAINTAINED,其中 ORACLE_MAINTAINED='N';


小智 6

怎么样 :

SQL> select * from all_users;
Run Code Online (Sandbox Code Playgroud)

它将返回所有用户/模式的列表、他们的 ID 和在数据库中创建的日期:

USERNAME                          USER_ID CREATED
------------------------------ ---------- ---------
SCHEMA1                         120 09-SEP-15
SCHEMA2                         119 09-SEP-15
SCHEMA3                         118 09-SEP-15
Run Code Online (Sandbox Code Playgroud)