【问题标题】:What Oracle privilege is to be granted to a role so it allows users to see tables in Oracle SQL Developer schema授予角色什么 Oracle 权限,以便用户可以查看 Oracle SQL Developer 模式中的表
【发布时间】:2023-04-11 10:08:01
【问题描述】:
使用 Oracle 12c,我有一个角色,我已授予基本 CRUD 操作以使用 Oracle SQL Developer。问题是,该组的用户在 Oracle SQL Developer 中看不到表列表。他们所看到的只是显示表节点的分支,但没有加号来展开并查看他们需要使用的一个模式的表。在使用 Oracle SQL Developer 时,还需要向该组授予哪些其他权限,以便他们可以查看其架构的所有表节点?提前致谢。
【问题讨论】:
标签:
oracle
oracle-sqldeveloper
oracle12c
【解决方案1】:
如果我理解正确的话,你
- 创建了一个角色
- 向该角色授予某些特权
- 创建了一堆用户
- 向这些用户授予角色(从第 1 步开始)
但他们仍然什么也没看到。
如果是这样,无论您授予什么,他们都不会看到任何东西 - 这是因为他们的架构中没有这些对象。
您(或他们)应该/可以做的是在从这些表中选择数据时,在表名之前加上所有者名。假设有一个名为 EMPLOYEE 的表,并且您的用户想要从中选择数据 - 他们应该运行 select * from robertcode.employee(假设用户 robertcode 拥有该表)
虽然它有效,但用户不会高兴,因为他们不知道表名。因此,创建一个他们将在其架构中运行的脚本 - 该脚本将为您的表创建 同义词。
为此,编写将创建查询的查询:
SQL> select 'create synonym ' || table_name || ' for ' || table_name ||';'
2 from user_tables;
'CREATESYNONYM'||TABLE_NAME||'FOR'||TABLE_NAME||';'
--------------------------------------------------------------------------------
create synonym EMP for EMP;
create synonym BONUS for BONUS;
create synonym SALGRADE for SALGRADE;
create synonym DEPT for DEPT;
将所有这些create synonym ... 语句复制/粘贴到电子邮件中,让他们为自己创建同义词。
他们仍然不会在 Tables 节点下看到任何内容(因为这些用户没有表(直到他们在自己的架构中创建它们),但会在 Synonyms 中看到某些内容。