权限概念
每个 Oracle 数据库对象都有拥有者(Owner)。权限可以控制一个用户是否可以访问其他用户的对象。
资源权限
ORA-01950: 对表空间 ‘USERS’ 无权限
报这个错误一般是创建用户的时候没有给用户分配表空间权限导致的。需要对模式的拥有者赋予权限。
-- 授权且限制使用容量上限
ALTER USER USER_NAME QUOTA 100M ON USERS;
-- 授权且不限制使用容量上限
ALTER USER USER_NAME QUOTA UNLIMITED ON USERS;
-- 不限制使用容量上限
GRANT UNLIMITED TABLESPACE TO USER_NAME;
需要注意,是对模式的拥有者赋予权限,而不是对于写入数据的人赋予权限,比如 SYSTEM 用户写入 TEST 模式报这个错误,是因为 TEST 用户本身对于 USERS 表空间没有使用权限,要对 TEST 用户授权而不是 SYSTEM 用户授权。
ORA-01950: 对表空间 ‘USERS’ 无权限_luckyjda的博客-优快云博客
ORACLE ORA-01950 对表空间无权限 错误问题_左直拳的博客-优快云博客
对象权限授权
oracle11g - Grant SELECT on multiple tables oracle - Stack Overflow
Oracle 给对象权限授权的时候,一次只能给授权一个对象相关的权限。
即,允许某个用户访问某张表,只能针对单张表进行授权。
角色权限
Oracle 数据库中可以授予 DBA
、SELECT_CATALOG_ROLE
等角色给用户,从而一次性授予用户一组权限。
需要注意的是,如果通过角色给用户授权,被授权的用户一般需要重新连接数据库才能生效,具体原因参考:
在 Oracle 数据库中,我发现给用户授予一个角色,比如 SELECT_CATALOG_ROLE,对应用户需要重新连接到数据权限才能生效,为什么