用于列出数据库中所有方案的Oracle SQL查询

vsikbqxv  于 2023-04-11  发布在  Oracle
关注(0)|答案(8)|浏览(158)

我想删除我们的oracle数据库中一些未使用的模式。
如何查询所有架构名称?

1l5u6lss

1l5u6lss1#

使用sqlplus
sqlplus / as sysdba
运行:

SELECT * 
FROM dba_users

如果只需要用户名,请执行以下操作:

SELECT username 
FROM dba_users
lg40wkob

lg40wkob2#

最有可能的是,你想要

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上添加 predicate 来过滤掉这些模式,即

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_tablespaceSYSTEM的系统并不罕见,因此在尝试以这种方式过滤Oracle交付的模式之前,请确保这些假设成立。

0ejtzxu1

0ejtzxu13#

SELECT username FROM all_users ORDER BY username;
js81xvg6

js81xvg64#

select distinct owner 
from dba_segments
where owner in (select username from dba_users where default_tablespace not in ('SYSTEM','SYSAUX'));
b4lqfgs4

b4lqfgs45#

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

select distinct username,ORACLE_MAINTAINED from dba_users where ORACLE_MAINTAINED='N';
6rqinv9w

6rqinv9w6#

怎么样:

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
ix0qys7i

ix0qys7i7#

以下任一SQL都将返回Oracle DB中的所有架构。

  1. select owner FROM all_tables group by owner;
  2. select distinct owner FROM all_tables;
pcww981p

pcww981p8#

如果您想搜索SCHEMA名称,则

SELECT * FROM all_tables WHERE OWNER  LIKE '%SCHEMA_NAME%'

如果您要搜索PERTICULAR表,则-

SELECT * FROM all_tables WHERE TABLE_NAME  LIKE '%TABLE_NAME%'

相关问题