Oracle 21C中HR用户遇ORA-01950表空间权限问题求助
解决ORA-01950: no privileges on tablespace 'USERS'及HR用户权限问题
1. 确认HR用户的表空间配额
以SYS用户执行以下SQL,检查HR在USERS表空间的配额情况:
SELECT username, tablespace_name, max_bytes, status FROM dba_ts_quotas WHERE username = 'HR';
如果结果无USERS表空间记录,或max_bytes为0,说明配额未正确配置。
2. 重新分配USERS表空间配额
执行以下语句为HR分配配额,二选一即可:
- 分配无限配额:
ALTER USER HR QUOTA UNLIMITED ON USERS;
- 分配固定大小配额(示例为100MB):
ALTER USER HR QUOTA 100M ON USERS;
3. 验证并补充必要权限
系统权限检查
以SYS用户执行,确认HR拥有必要的系统权限:
SELECT privilege FROM dba_sys_privs WHERE grantee = 'HR';
需确保包含CREATE TABLE(已具备),若需操作其他用户的表,需额外授予INSERT ANY TABLE、UPDATE ANY TABLE等权限(按需分配)。
对象权限检查
若HR需操作其他用户的表,需明确授予对象权限,示例:
GRANT INSERT, UPDATE, ALTER TO HR ON [目标用户名].[目标表名];
注:HR自行创建的表默认拥有全部操作权限,无需额外授权
4. 确认默认表空间配置
检查HR的默认表空间是否为USERS:
SELECT username, default_tablespace FROM dba_users WHERE username = 'HR';
若默认表空间非USERS,执行以下语句修改:
ALTER USER HR DEFAULT TABLESPACE USERS;
5. 测试验证
切换至HR用户,执行以下操作验证:
CREATE TABLE test_quota (id NUMBER); INSERT INTO test_quota VALUES (1); UPDATE test_quota SET id = 2; ALTER TABLE test_quota ADD name VARCHAR2(20); SELECT * FROM test_quota;
所有操作成功则问题解决。
内容的提问来源于stack exchange,提问作者kiran Kumar
相关产品推荐
相关产品推荐

