Non_Sys User Privilege

SQL查询:按权限排名并筛选特定用户
本文提供了一段SQL查询语句,用于在Oracle数据库中按权限排名并筛选特定用户,包括系统管理员、普通用户等。通过使用UNION ALL、PARTITION BY、ORDER BY和RANK()函数,实现对用户权限的详细统计和排名,适用于数据库权限管理场景。


1
SELECT GRANTEE,
PRIVILEGE,
RANK()  OVER (PARTITION BY GRANTEE  ORDER BY COUNT(PRIVILEGE) DESC)
FROM DBA_TAB_PRIVS WHERE GRANTEE  IN(
'SYSTEM',
                               'OUTLN',
                               'SCOTT',
                               'HR',
                               'DBSNMP',
                               'AQADM',
                               'ANONYMOUS',
                               'MDSYS',
                               'ANONYMOUS',
                               'CTXSYS',
                               'DIP',
                               'DBSNMP',
                               'DMSYS',
                               'EXFSYS',
                               'MDDATA',
                               'MDSYS',
                               'MGMT_VIEW',
                               'OLAPSYS',
                               'ORDPLUGINS',
                               'ORDSYS',
                               'OUTLN',
                               'SCOTT',
                               'SI_INFORMTN_SCHEMA',
                               'SYSMAN',
                               'WK_TEST',
                               'WKPROXY',
                               'WKSYS'')
GROUP BY   GRANTEE, PRIVILEGE
UNION ALL
SELECT GRANTEE,
PRIVILEGE,
RANK()  OVER (PARTITION BY GRANTEE  ORDER BY COUNT(PRIVILEGE) DESC)
FROM DBA_SYS_PRIVS WHERE GRANTEE  IN/NOT IN(
'SYSTEM',
                               'OUTLN',
                               'SCOTT',
                               'HR',
                               'DBSNMP',
                               'AQADM',
                               'ANONYMOUS',
                               'MDSYS',
                               'ANONYMOUS',
                               'CTXSYS',
                               'DIP',
                               'DBSNMP',
                               'DMSYS',
                               'EXFSYS',
                               'MDDATA',
                               'MDSYS',
                               'MGMT_VIEW',
                               'OLAPSYS',
                               'ORDPLUGINS',
                               'ORDSYS',
                               'OUTLN',
                               'SCOTT',
                               'SI_INFORMTN_SCHEMA',
                               'SYSMAN',
                               'WK_TEST',
                               'WKPROXY',
                               'WKSYS'')
GROUP BY   GRANTEE, PRIVILEGE ;
 
2
SELECT DISTINCT GRANTEE,PRIVILEGE FROM DBA_SYS_PRIVS
WHERE GRANTEE  IN(
'SYSTEM',
                               'OUTLN',
                               'SCOTT',
                               'HR',
                               'DBSNMP',
                               'AQADM',
                               'ANONYMOUS',
                               'MDSYS',
                               'ANONYMOUS',
                               'CTXSYS',
                               'DIP',
                               'DBSNMP',
                               'DMSYS',
                               'EXFSYS',
                               'MDDATA',
                               'MDSYS',
                               'MGMT_VIEW',
                               'OLAPSYS',
                               'ORDPLUGINS',
                               'ORDSYS',
                               'OUTLN',
                               'SCOTT',
                               'SI_INFORMTN_SCHEMA',
                               'SYSMAN',
                               'WK_TEST',
                               'WKPROXY',
                               'WKSYS')
UNION ALL
SELECT DISTINCT GRANTEE,PRIVILEGE FROM DBA_TAB_PRIVS
WHERE GRANTEE  IN/NOT IN(
'SYSTEM',
                               'OUTLN',
                               'SCOTT',
                               'HR',
                               'DBSNMP',
                               'AQADM',
                               'ANONYMOUS',
                               'MDSYS',
                               'ANONYMOUS',
                               'CTXSYS',
                               'DIP',
                               'DBSNMP',
                               'DMSYS',
                               'EXFSYS',
                               'MDDATA',
                               'MDSYS',
                               'MGMT_VIEW',
                               'OLAPSYS',
                               'ORDPLUGINS',
                               'ORDSYS',
                               'OUTLN',
                               'SCOTT',
                               'SI_INFORMTN_SCHEMA',
                               'SYSMAN',
                               'WK_TEST',
                               'WKPROXY',
                               'WKSYS'')
ORDER BY GRANTEE
3:



select GRANTEE,PRIVILEGE from (
select distinct   GRANTEE,
PRIVILEGE  from (
SELECT  distinct GRANTEE,
PRIVILEGE,
RANK()  OVER (PARTITION BY GRANTEE  ORDER BY COUNT(PRIVILEGE) DESC)
FROM DBA_TAB_PRIVS WHERE GRANTEE  IN(
SELECT USERNAME
    FROM DBA_USERS D
   WHERE USERNAME NOT IN
         (SELECT NAME
            FROM (SELECT SCHEMA#
                    FROM SYS.REGISTRY$
                  UNION ALL
                  SELECT B.SCHEMA#
                    FROM SYS.REGISTRY$ A, SYS.REGISTRY$SCHEMAS B
                   WHERE A.CID = B.CID) A,
                 SYS.USER$ B
           WHERE A.SCHEMA# = B.USER#)
  AND    D.default_tablespace NOT IN('SYSAUX','SYSTEM','USERS')
  )
GROUP BY   GRANTEE, PRIVILEGE
UNION
SELECT distinct  GRANTEE,
PRIVILEGE,
RANK()  OVER (PARTITION BY GRANTEE  ORDER BY COUNT(PRIVILEGE) DESC)
FROM DBA_SYS_PRIVS WHERE GRANTEE  IN(
SELECT USERNAME
    FROM DBA_USERS D
   WHERE USERNAME NOT IN
         (SELECT NAME
            FROM (SELECT SCHEMA#
                    FROM SYS.REGISTRY$
                  UNION ALL
                  SELECT B.SCHEMA#
                    FROM SYS.REGISTRY$ A, SYS.REGISTRY$SCHEMAS B
                   WHERE A.CID = B.CID) A,
                 SYS.USER$ B
           WHERE A.SCHEMA# = B.USER#)
  AND    D.default_tablespace NOT IN('SYSAUX','SYSTEM','USERS'))
GROUP BY   GRANTEE, PRIVILEGE ))
GROUP BY   GRANTEE, PRIVILEGE
order by 1


 



来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13750068/viewspace-748440/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/13750068/viewspace-748440/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值