【问题标题】:ORA-00942 In grant selectORA-00942 在授权选择中
【发布时间】: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 之前,你会看到那个表名

标签: sql oracle sqlplus grant


【解决方案1】:

DBA_TABLES 查询的结果中可能列出了已删除的表。

https://docs.oracle.com/cd/B19306_01/server.102/b14237/statviews_2105.htm#REFRN20286

【讨论】:

  • 他们都有“有效”状态
  • 及其“已删除”状态?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-03
  • 2016-08-21
  • 2021-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多