6

我正在使用 jboss5.1.x、EJB3.0、JPA3。

我正在尝试从通过dblink 连接到另一个数据库的视图中进行“选择”查询。

源数据库是Oracle 9,目标数据库是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

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

 CREATE SHARED DATABASE LINK CONNECT TO IDENTIFIED BY AUTHENTICATED BY IDENTIFIED BY USING 

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

现在我已将我的应用程序移至生产环境,其中源数据库是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

谢谢你的帮助,

射线,

4

4 回答 4

4
ORA-01012: not logged on

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

如果远程模式有区分大小写的密码,请在 CREATE LINK 中为密码加上引号。因此

CREATE SHARED DATABASE LINK
CONNECT TO bob IDENTIFIED  BY "MyNewPasswd1"
AUTHENTICATED BY jim IDENTIFIED BY "JimsPass23" USING 'DB01';
于 2011-03-31T11:06:55.540 回答
1

我们对 Weblogic 也有同样的问题,解决方案是使用非 XA oracle JDBC 驱动程序。

于 2014-10-03T13:26:15.310 回答
0

我在使用 Oracle 11g (ORA-24777) 时遇到了同样的问题。我已经在单个表(在我的模式中)和一个视图(由数据库链接创建)之间执行了连接。我已经在 XA 模式下执行了整个 JBoss 数据源。

为了让它正常工作,我不得不改变我的 dblink view 的模式。在这种情况下,有一个精确的AUTHENTICATED BY子句以避免出现“ORA-01012:未登录”非常重要。

于 2012-02-28T10:17:26.430 回答
0

请确保您使用的数据库链接是公共和共享的,如果数据库链接不是公共和共享的,它将抛出异常 ORA-24777:不允许使用不可迁移的数据库链接。但是,如果您尝试在不使用任何 Java 或 XA 事务的情况下直接在 DB 上运行相同的查询,它将正常工作。

于 2013-09-23T14:16:05.100 回答