【发布时间】:2016-11-20 21:20:29
【问题描述】:
我尝试创建一个只能从表中选择的新 Oracle 用户 (ReadOnly)
所以我在SYS 架构上执行了下一行:(如7502438)
1 - 创建用户
CREATE USER my_user IDENTIFIED BY my_password DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;
2 - 授权创建会话
GRANT CREATE SESSION to my_user;
3 - 创建一个角色
CREATE ROLE my_role;
4 - 将 awner 中的选择授予新角色
BEGIN
FOR x IN (SELECT * FROM dba_tables WHERE owner='OWNER')
LOOP
EXECUTE IMMEDIATE 'GRANT SELECT ON OWNER.' || x.table_name ||
' TO my_role';
END LOOP;
END;
5 - 将角色授予用户
GRANT my_role TO my_user;
所以在第四部分,我得到了这个错误
ORA-00942: table or view does not exist
ORA-06512: at line 4
00942. 00000 - "table or view does not exist"
*Cause:
*Action:
有什么想法吗?
【问题讨论】:
-
'OWNER' 作为模式名称?我认为这有点令人困惑
-
把 dbms_output.putline(x.table_name) 放在 EXECUTE IMMEDIATE 之前,你会看到那个表名