Oracle通过DB-Link调用远程函数失败,求原因及权限说明
Oracle DB-Link调用远程内置函数的问题分析
问题原因
- 语法错误:你写的
substr@remoteDb不符合Oracle的远程函数调用规范。对于substr这类Oracle内置函数,根本不需要加DB Link后缀——因为你的查询对象是thatTable@remoteDb,Oracle会自动将substr的执行逻辑推送到远程数据库执行,直接写substr(stringCol,1,2)就可以正常运行。 - 若非要显式指定调用远程的内置函数,正确写法是带上函数所属的
sys用户:
但这种写法完全多余,没必要这么做。select stringCol, sys.substr@remoteDb(stringCol,1,2) from thatTable@remoteDb
权限说明
调用远程内置函数不需要额外特殊权限,只要你通过DB Link使用的远程账号拥有thatTable的SELECT权限,就能正常执行该查询。
内容的提问来源于stack exchange,提问作者Lopo
相关产品推荐
相关产品推荐

