为什么一个用户创建的 Oracle 类型对另一个用户不可见?

Why Oracle type created by one user is not visible by another user?

我在 OracleXE 数据库中有 2 个用户:ALICEBOB。以下步骤在我的本地机器上是成功的:

在类型对 BOB 不可见的情况下,将相同的步骤应用于我们的开发数据库,​​即 select 没有 return 类型的行,PLSQL 块编译失败并显示PLS-00201: identifier 'ALICE.TESTTYPE' must be declared 错误。

我需要使类型可见,所以我问:可能导致这种差异的原因是什么?(我猜想需要对类型或 public 同义词进行授权,然而,这个简单的例子证明了相反的情况。) user/session 中的 属性?尽管我希望解决方案是微不足道的,但我在谷歌搜索上尽了最大努力,但现在陷入困境。两个数据库都是 Oracle 11g(11.2.0.1.0 dev,11.2.0.2.0 local)。

谢谢!

我假设这不仅仅是您将类型命名为 foo 但试图将其用作 testtype.

的事实

如果 foo 是正确的名称,那么,如 ALICE:

grant execute on foo to bob;

Bob 在第一个数据库中可能具有 EXECUTE ANY TYPE 或类似的系统权限。