我想删除我们的oracle数据库中一些未使用的模式。如何查询所有架构名称?
1l5u6lss1#
使用sqlplussqlplus / as sysdba运行:
SELECT * FROM dba_users
如果只需要用户名,请执行以下操作:
SELECT username FROM dba_users
lg40wkob2#
最有可能的是,你想要
这将显示系统中的所有用户(以及所有潜在的模式)。如果您对“模式”的定义允许模式为空,那就是您想要的。然而,可能存在语义上的区别,即只有在某个对象实际上拥有至少一个对象时,人们才想将其称为模式,这样就排除了数百个永远不会拥有任何对象的用户帐户。在这种情况下
SELECT username FROM dba_users u WHERE EXISTS ( SELECT 1 FROM dba_objects o WHERE o.owner = u.username )
假设创建模式的人在分配默认表空间方面是明智的,并且假设您对Oracle提供的模式不感兴趣,您可以通过在default_tablespace上添加 predicate 来过滤掉这些模式,即
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')
但是,遇到有人错误地为非系统用户提供default_tablespace或SYSTEM的系统并不罕见,因此在尝试以这种方式过滤Oracle交付的模式之前,请确保这些假设成立。
SYSTEM
0ejtzxu13#
SELECT username FROM all_users ORDER BY username;
js81xvg64#
select distinct owner from dba_segments where owner in (select username from dba_users where default_tablespace not in ('SYSTEM','SYSAUX'));
b4lqfgs45#
下面的sql列出了安装后在oracle中创建的所有模式ORACLE_MAINTAINED='N'是过滤器。该列是12c中的新列。
select distinct username,ORACLE_MAINTAINED from dba_users where ORACLE_MAINTAINED='N';
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
ix0qys7i7#
以下任一SQL都将返回Oracle DB中的所有架构。
select owner FROM all_tables group by owner;
select distinct owner FROM all_tables;
pcww981p8#
如果您想搜索SCHEMA名称,则
SELECT * FROM all_tables WHERE OWNER LIKE '%SCHEMA_NAME%'
如果您要搜索PERTICULAR表,则-
SELECT * FROM all_tables WHERE TABLE_NAME LIKE '%TABLE_NAME%'
8条答案
按热度按时间1l5u6lss1#
使用sqlplus
sqlplus / as sysdba
运行:
如果只需要用户名,请执行以下操作:
lg40wkob2#
最有可能的是,你想要
这将显示系统中的所有用户(以及所有潜在的模式)。如果您对“模式”的定义允许模式为空,那就是您想要的。然而,可能存在语义上的区别,即只有在某个对象实际上拥有至少一个对象时,人们才想将其称为模式,这样就排除了数百个永远不会拥有任何对象的用户帐户。在这种情况下
假设创建模式的人在分配默认表空间方面是明智的,并且假设您对Oracle提供的模式不感兴趣,您可以通过在
default_tablespace
上添加 predicate 来过滤掉这些模式,即或
但是,遇到有人错误地为非系统用户提供
default_tablespace
或SYSTEM
的系统并不罕见,因此在尝试以这种方式过滤Oracle交付的模式之前,请确保这些假设成立。0ejtzxu13#
js81xvg64#
b4lqfgs45#
下面的sql列出了安装后在oracle中创建的所有模式ORACLE_MAINTAINED='N'是过滤器。该列是12c中的新列。
6rqinv9w6#
怎么样:
它将返回所有用户/模式的列表,它们的ID和在DB中创建的日期:
ix0qys7i7#
以下任一SQL都将返回Oracle DB中的所有架构。
select owner FROM all_tables group by owner;
select distinct owner FROM all_tables;
pcww981p8#
如果您想搜索SCHEMA名称,则
如果您要搜索PERTICULAR表,则-