我需要排除默认oracle用户的所有用户列表。
Select Username from all_users;
此查询将为我提供结果,但我只想手动创建用户。由于我的数据库中有50多个用户,因此我无法遍历每个用户。
我试过了:
http://www.orafaq.com/wiki/List_of_default_database_users从这里我得到了所有默认用户的列表,所以我是否需要使用上述查询中的where子句跳过所有用户,如
Select Username from all_users where Username NOT IN ('List All Default
Users Given By Oracle');
或者有没有快速的方法呢?
-Nagendra
答案 0 :(得分:2)
根据Oracle Database 12c,这些是要避免的默认用户列表,并获取所有其他用户休息的详细信息。
请在以下链接验证以了解更多信息: https://docs.oracle.com/database/121/NTDBI/startrdb.htm#NTDBI2845
select username from dba_users where username not in ('ANONYMOUS'
,'APEX_040200'
,'APEX_PUBLIC_USER'
,'APPQOSSYS'
,'AUDSYS'
,'BI'
,'CTXSYS'
,'DBSNMP'
,'DIP'
,'DVF'
,'DVSYS'
,'EXFSYS'
,'FLOWS_FILES'
,'GSMADMIN_INTERNAL'
,'GSMCATUSER'
,'GSMUSER'
,'HR'
,'IX'
,'LBACSYS'
,'MDDATA'
,'MDSYS'
,'OE'
,'ORACLE_OCM'
,'ORDDATA'
,'ORDPLUGINS'
,'ORDSYS'
,'OUTLN'
,'PM'
,'SCOTT'
,'SH'
,'SI_INFORMTN_SCHEMA'
,'SPATIAL_CSW_ADMIN_USR'
,'SPATIAL_WFS_ADMIN_USR'
,'SYS'
,'SYSBACKUP'
,'SYSDG'
,'SYSKM'
,'SYSTEM'
,'WMSYS'
,'XDB'
,'SYSMAN'
,'RMAN'
,'RMAN_BACKUP');
答案 1 :(得分:1)
您可以使用创建日期执行某些操作,可能是在设置数据库时系统用户都已创建,其他用户可能已在接下来的几天/几周/几个月内创建。因此,显示在最小创建日期之后创建的所有用户的查询可能会对您有所帮助。
SELECT username
FROM dba_users
WHERE TRUNC(created) > (SELECT MIN(TRUNC(created))
FROM dba_users);
答案 2 :(得分:0)
从Oracle 12c r1开始,您可以在ALL_USERS和DBA_USERS视图中使用新的ORACLE_MAINTAINED列
https://docs.oracle.com/database/121/REFRN/GUID-DDD25C8F-7EC9-46BC-ABEA-529C64FA09E2.htm
e.g。
select * from dba_tables where owner in
(select username from all_users where oracle_maintained = 'N')
应该为您提供非内部Oracle用户拥有的表的列表。
答案 3 :(得分:0)
我解决了这个问题,它检索了在数据库创建日期之后创建的用户
SELECT usr.username
FROM sys.dba_users usr
WHERE usr.created > (SELECT created FROM sys.v_$database)
答案 4 :(得分:0)
在 oracle 12c 中你可以使用这个:
select username from all_users where oracle_maintained = 'N'