Oracle数据库中有两种类型的用户权限:系统权限和对象权限。
1. 系统权限:
系统权限是指对整个数据库的访问权限,包括创建、删除、修改数据库对象、执行特定操作等。Oracle提供了一系列的系统权限,例如CREATE SESSION、CREATE TABLE、CREATE VIEW等。
2. 对象权限:
对象权限是指对特定数据库对象的访问权限,包括对表的读取、插入、更新、删除等操作。Oracle提供了多种对象权限,例如SELECT、INSERT、UPDATE、DELETE等。
在Oracle中,用户要访问数据库,必须拥有相应的权限。对于系统权限,只有具有超级用户或者拥有相应授权的用户才能授予其他用户。对于对象权限,只有拥有该对象的创建权限或者拥有对象所有权的用户才能授予其他用户。通过合理地分配权限,可以保证数据库的安全性和稳定性。
以下是用户权限的查询脚本:
用户对象权限:
SELECT *
FROM DBA_TAB_PRIVS
WHERE GRANTEE = 'USERNAME'
UNION ALL
SELECT *
FROM DBA_TAB_PRIVS
WHERE GRANTEE IN
(SELECT GRANTED_ROLE FROM DBA_ROLE_PRIVS WHERE GRANTEE = 'USERNAME');
用户系统权限:
SELECT *
FROM DBA_SYS_PRIVS
WHERE GRANTEE = 'USERNAME'
UNION ALL
SELECT *
FROM DBA_SYS_PRIVS
WHERE GRANTEE IN
(SELECT GRANTED_ROLE FROM DBA_ROLE_PRIVS WHERE GRANTEE = 'USERNAME');
oracle角色可以理解为各种用户权限或系统权限的集合,可以将以上两个脚本中的username替换为rolename进行角色的对象权限或系统权限的查询。