【问题标题】:Connecting with different user to PDB in Oracle 12c在 Oracle 12c 中与不同用户连接到 PDB
【发布时间】:2014-02-06 13:37:52
【问题描述】:

是否可以使用多个用户访问多个 PDB?

考虑场景:

我有两个普通用户:- c##a 和 c##b 和 pdb :- PDBTEST

我遇到了问题:

当我与普通用户 - c##b 连接时,我无法在 PDBTEST 中看到使用 c##a 记录创建的表。

不过,我已经为用户 c##a 和 c##b 分配了 PDBTEST 中的权限。

对于普通用户c##b,有没有其他方法可以访问PDBTEST?

我正在遵循的步骤:

以 sysdba 身份连接

1> 创建了两个用户 c##a 和 c##b (container = ALL)

2> 授予所有权限的通用角色:c##role (container = ALL)

3> 将 c##role 分配给两个用户:c##a 和 c##b (container = ALL)

4> 创建 PDB:PDBTEST

更改的会话并设置容器 = PDBTEST

5> 将 c##role 授予两个用户:PDBTEST 中的 c##a 和 c##b

6> 用 c##a 连接(不是 sysdba)

更改的会话并设置容器 = PDBTEST

7> 创建表并插入记录:TestTable

8>用c##b连接(不是sysdba)

更改的会话并设置容器 = PDBTEST

在与 c##b 连接后,我无法访问表 'TestTable'。

更多,如果我用 c##a 连接,我可以访问插入的记录。

【问题讨论】:

    标签: database-connection oracle12c


    【解决方案1】:

    您忘记限定表名(您没有指定模式名称)。这与非 pdb 数据库没有什么不同。如果你定义一个同义词,你就可以做到这一点。

    此外,set 容器仅用于管理目的,绝不能用于用户访问。对于用户访问,您应该创建一个专用服务。

    【讨论】:

    • 是的,它适用于同义词,但是当同样的情况出现在 5-6 个 PDB 中的约 400 个表时,并且应用程序有多个具有不同角色和权限的用户(如 c#3a 和 c##b) ,那么我该如何克服这种情况呢?而不是设置容器,我怎样才能创建专门的服务?
    猜你喜欢
    • 2016-08-07
    • 2019-02-15
    • 1970-01-01
    • 1970-01-01
    • 2020-10-09
    • 2019-09-19
    • 1970-01-01
    • 2018-07-11
    • 2014-05-18
    相关资源
    最近更新 更多