使用DBLINK时Oracle出错

ray*_*man 6 java database oracle dblink transactions

我使用的是jboss5.1.x,EJB3.0,JPA3.

我试图从视图中"选择"查询,该视图通过dblink连接到另一个数据库.

源数据库是Oracle 9,目标dabatase是Oracle 8.

我收到此错误:

15:27:06,625 WARN [JDBCExceptionReporter] SQL Error: 24777, SQLState: 99999

15:27:06,625 ERROR [JDBCExceptionReporter] ORA-24777: use of non-migratable database link not allowed
Run Code Online (Sandbox Code Playgroud)

在我明白在使用XA时无法使用dblink之后,我找到了解决此错误的方法.所以我设法解决了通过更改dblink脚本来创建共享数据库链接,如下所示:

 CREATE SHARED DATABASE LINK CONNECT TO IDENTIFIED BY AUTHENTICATED BY IDENTIFIED BY USING 
Run Code Online (Sandbox Code Playgroud)

在这个测试环境中一切正常.

现在我已将我的应用程序移动到生产环境,其中源数据库是Oracle 11,而目标仍然是Oracle 8.

我这次使用的技巧没有工作,我找不到解决方案.这是我得到的新例外:

    Caused by: org.hibernate.exception.GenericJDBCException: could not execute query
    at ....Caused by: java.sql.SQLException: ORA-01012: not logged on
    ORA-02063: preceding line from TO_VANTIVE
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助,

射线,

小智 4

ORA-01012: not logged on
Run Code Online (Sandbox Code Playgroud)

似乎表明您没有正确配置新链接,因为数据库现在是 11g,它可能具有区分大小写的密码,这将是首先要检查的事情。

如果远程模式具有区分大小写的密码,请在创建链接中的密码两边加上引号。因此

CREATE SHARED DATABASE LINK
CONNECT TO bob IDENTIFIED  BY "MyNewPasswd1"
AUTHENTICATED BY jim IDENTIFIED BY "JimsPass23" USING 'DB01';
Run Code Online (Sandbox Code Playgroud)