Oracle存储过程DB链接问题
-
01-10-2019 - |
题
我有一个存储程序 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
不具有 SELECT
在 BARTABLE@REMOTEDB
, ,所以我很困惑。
解决方案
该过程应使用为A链接定义的DBLINK。任何Oracle程序都使用所有者的权利进行处理,除非该程序已通过“调用权利”定义。 调用权的权利
调用为程序定义的权利告诉代码使用调用用户本地的权利和对象,而不是代码所有者。默认情况下这不执行此操作的原因通常是最终用户对直接更新的任何硬对象没有权利,但是可以通过API适当访问,该API将正确的业务逻辑应用于更新,插入和删除以及然后,这些对象将被视为最终用户访问。
不隶属于 StackOverflow