为什么Oracle抱怨包编译中存在同义词循环链(ORA01775)?

为什么Oracle抱怨包编译中存在同义词循环链(ORA01775)?,oracle,oracle11g,Oracle,Oracle11g,我真的需要理解为什么会发生下面的行为 首先,我只是创建了一个同义词: CREATE SYNONYM SYN_NAME FOR MY_TABE@MY_DBLINK; 其次,当我尝试从表中选择行时,出现以下错误: ORA-00942: table or view does not exist 太好了,这张桌子真的不存在 但是当我尝试编译使用上述同义词的包时,编译错误是: ORA-01775: looping chain of synonyms 整个数据库中没有同名同义词、循环同义词或数据库链接

我真的需要理解为什么会发生下面的行为

首先,我只是创建了一个同义词:

CREATE SYNONYM SYN_NAME FOR MY_TABE@MY_DBLINK;
其次,当我尝试从表中选择行时,出现以下错误:

ORA-00942: table or view does not exist
太好了,这张桌子真的不存在

但是当我尝试编译使用上述同义词的包时,编译错误是:

ORA-01775: looping chain of synonyms
整个数据库中没有同名同义词、循环同义词或数据库链接/同义词冲突。当然,当我在目标数据库链接模式中创建表时,错误就会消失


有人能解释一下为什么错误不一样吗?

更新到Oracle Database 12c版本后,错误变回:

ORA-00942: table or view does not exist
如果有人遇到这种异常,答案可能是缺少同义词target,而不是循环同义词


我希望它能帮助别人。

这适用吗?不适用。在我发表文章之前,我一直在寻找答案,我考虑了你指出的答案。这个错误表明我没有进行选择的权限。@my_DBLINK;使用远程数据库自己的凭据访问该数据库。如果该用户没有适当的权限,它将无法访问该表,因此不会出现表/视图错误和循环链错误。我认为如果您使用链接上的userID查询所有_对象,如果您没有看到表,这可能就是问题所在。我感谢您的解释,但在编译包或仅运行select语句时,这两个错误应该是相同的。对我来说,ORA01775没有意义。我的问题只是错误不一样的原因。我必须遵从AskTom或类似的oracle支持。