【问题标题】:List of all the User excluding default Users除默认用户外的所有用户列表
【发布时间】:2016-09-17 05:16:57
【问题描述】:

我需要所有用户的列表,不包括默认的 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');

或者有什么快速的方法吗?

-纳根德拉

【问题讨论】:

标签: oracle oracle10g


【解决方案1】:

您可以对创建日期做一些事情,可能是系统用户在设置数据库时都已创建,其他用户可能已在接下来的几天/几周/几个月创建。因此,显示在最小创建日期之后创建的所有用户的查询可能会对您有所帮助。

SELECT username 
  FROM dba_users 
 WHERE TRUNC(created) > (SELECT MIN(TRUNC(created)) 
                           FROM dba_users);

【讨论】:

  • 是的。这可能是一种解决方法,但我的运气不好。我数据库中的所有用户都是在同一日期创建的。感谢分享。
【解决方案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'
,'OWBSYS'
,'OWBSYS_AUDIT'
,'APEX_030200'
,'MGMT_VIEW'
,'OJVMSYS');

【讨论】:

    【解决方案3】:

    从 Oracle 12c r1 开始,您可以在 ALL_USERS 和 DBA_USERS 视图中使用新的 ORACLE_MAINTAINED 列

    https://docs.oracle.com/database/121/REFRN/GUID-DDD25C8F-7EC9-46BC-ABEA-529C64FA09E2.htm

    例如

    select * from dba_tables where owner in 
     (select username from all_users where oracle_maintained = 'N')
    

    应该为您提供非内部 Oracle 用户拥有的表的列表。

    【讨论】:

      【解决方案4】:

      我在检索数据库创建日期之后创建的用户时解决了这个问题

      SELECT usr.username
        FROM sys.dba_users usr
       WHERE usr.created > (SELECT created FROM sys.v_$database)
      

      【讨论】:

        【解决方案5】:

        在 oracle 12c 中你可以使用这个:

        select username from all_users where oracle_maintained = 'N'
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-08-25
          • 2011-06-14
          • 1970-01-01
          • 2010-12-11
          • 2013-08-08
          • 1970-01-01
          相关资源
          最近更新 更多