我有一个存储程序 FOO 属于用户 A. 。用户 B 拥有 EXECUTE 许可 FOO.

其中之一 FOO 使用数据库链接从 BARTABLE@REMOTEDB. A 有一个数据库链接到 REMOTEDB 作为用户连接 AREMOTE 尽管 B 具有与相同名称连接到的DBLINK REMOTEDB 但是作为用户 BREMOTE.

什么时候 B 执行 FOO, ,会使用 A的DB链接(连接为 AREMOTE) 或者 B的DB链接(连接为 BREMOTE)?

我之所以问,是因为我假设属于特定用户的过程只能访问该用户的dblinks,即使另一个用户有 EXECUTE 在该过程中。但是,即使用户,此过程也可以正常工作 AREMOTE 不具有 SELECTBARTABLE@REMOTEDB, ,所以我很困惑。

有帮助吗?

解决方案

该过程应使用为A链接定义的DBLINK。任何Oracle程序都使用所有者的权利进行处理,除非该程序已通过“调用权利”定义。 调用权的权利

调用为程序定义的权利告诉代码使用调用用户本地的权利和对象,而不是代码所有者。默认情况下这不执行此操作的原因通常是最终用户对直接更新的任何硬对象没有权利,但是可以通过API适当访问,该API将正确的业务逻辑应用于更新,插入和删除以及然后,这些对象将被视为最终用户访问。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top