Oracle ORA-00942:使用iBatis的表或视图不存在

Oracle ORA-00942:使用iBatis的表或视图不存在,oracle,mybatis,synonym,Oracle,Mybatis,Synonym,我正在使用MyBatis 3创建一个如下所示的请求,但是,我得到: ORA-00942:表或视图不存在 其中同义词_A是另一个数据库中表的公共同义词 我知道这个例子并没有真正的帮助,但真正的问题是,Batis中同义词是否有特殊的语法?有没有人这样做过,或者失败过,并且可以告诉我,所以如果在巴蒂斯无效的话,我不会花费很多精力 @选择SYNONYM_A中的SELECT*,其中some_det_key in SELECT DATA_key from some_PARENT_TABLE,其中PARENT

我正在使用MyBatis 3创建一个如下所示的请求,但是,我得到: ORA-00942:表或视图不存在 其中同义词_A是另一个数据库中表的公共同义词

我知道这个例子并没有真正的帮助,但真正的问题是,Batis中同义词是否有特殊的语法?有没有人这样做过,或者失败过,并且可以告诉我,所以如果在巴蒂斯无效的话,我不会花费很多精力


@选择SYNONYM_A中的SELECT*,其中some_det_key in SELECT DATA_key from some_PARENT_TABLE,其中PARENT_key=1234,ATTACH_PARENT_FLG=1或ATTACH_PARENT_FLG为空,DATA_SRC='LV_some_det'按对排序

再次为同义词_A所在的表提供从父模式到当前模式的选择授权同义词

同义词_是表的同义词还是父模式中另一个同义词的同义词?
在这种情况下,您需要提供来自最终基本模式的授权,其中实际表再次位于“带有授权选项”

公共同义词并不意味着不需要来自父表位于同义词和表位于两个不同模式(即)中的模式的授权。您需要澄清公共同义词的概念:

但这不是重点。 只要做:

如果这给了您ORA-XXXX:表或视图不存在,那么这就是原因

有两种可能性:

1.与另一个数据库的连接已损坏/不存在。 您可以通过执行以下查询来检查这一点:

Select sysdate from duals@CONNECTION_TO_ANOTHER_DATABASE;
Select * from user_objects@CONNECTION_TO_ANOTHER_DATABASE;
如果这也给了你同样的错误,那就是,你到另一个数据库的连接消失了

如果这没有给出任何错误,并且给出了一些有效的o/p,则:

2.远程数据库中的SOME_表可能不存在

答案是

我连接到错误的数据库实例!!我构建了扩展的AbstractRoutingDataSource,并从主数据库中提取数据源的服务器名称。我发现另一个人错误地填充了这个表,并将我指向了一个不存在同义词的数据库


感谢您的回复和时间。

如果您直接从sqlplus和同一个db用户运行查询,该怎么办。是否有数据库链接设置?所有的授权都正确吗?是的,这确实适用于sqlplusDid我提到同义词_A是一个公共同义词?这难道不意味着不需要补助金,因为每个人都可以获得吗我已经在SQLPLUS中对多个用户进行了测试,他们都成功了…同义词A被定义为创建或替换某些用户的公共同义词同义词A_TABLE@CONNECTION_TO_ANOTHER_DATABASE;同义词和格兰特是两个不同的对象。同义词是一个名称空间问题。但是,正如我对OldProgrammer所说的,该语句在SQLPLUS中工作,但通过MyBatis在JDBC中不工作。我已经检查了连接,这是相同的数据库/用户/密码,两者,因为我注销这些。。。我只是想知道Batis或JDBC在同义词方面是否存在问题。
Select sysdate from duals@CONNECTION_TO_ANOTHER_DATABASE;
Select * from user_objects@CONNECTION_TO_ANOTHER_DATABASE;