在 websphere 中创建 XA 连接和资源时出错。系统输出日志完全填满此错误
Error creating XA Connection and Resource in websphere. System out Log completely filled with this error
对于成功测试的数据源 (*abc),在 Websphere 8.5.5 中每分钟都低于错误。 Sysout 日志完全充满了以下错误。如何解决?
创建 XA 连接和资源时出错 com.ibm.ws.exception.WsException:E:无法从数据源 ***abc 获取 XAConnection。 SQL 州:72000 SQL 代码:1017
--*-
原因:java.sql.SQLException:ORA-01017:无效username/password;登录被拒绝
**E: SQL 状态 = 72000,错误代码 = 1,017
... 还有 34 个
一个很好的猜测是您有一个 Oracle 参与的 in-doubt 事务,恢复管理器每分钟尝试一次 XA 恢复,但失败了,因为 XA 恢复需要额外的特权通常需要连接到数据库(这就是您的测试连接有效的原因)。如果是这个原因,可以通过为数据源指定一个user/password for XA recovery path来解决这个问题,该路径已被授予在oracle中执行XA恢复的权限。这是标题为 "Authentication alias for XA recovery".
的 link 到 knowledge center document describing how to configure the recoveryAuthDataRef for this on a dataSource in WebSphere Application Server Liberty. If you are using WebSphere Application Server traditional, see the section of this knowledge center document
您的问题是由环境中的一个或多个不确定事务导致的,该事务无法恢复。以下是此问题的可能原因及其修复方法。
场景 1:数据源配置中 "Authentication Alias for XA recovery" 的用户凭据不正确(这很可能是您的情况,看到错误)
解决方案:确保为数据源配置中的 "Authentication Alias for XA recovery" 和 "component-managed authentication alias" 选择正确的 J2C 身份验证别名和正确的用户名和密码。如果不正确,请更新凭据,保存并重新启动节点代理(如果是 WAS ND)和 JVM。
有关详细信息,请参阅:http://www-01.ibm.com/support/docview.wss?uid=swg21260425
场景 2:为 "Authentication Alias for XA recovery" 配置的用户没有足够的权限来执行恢复
解决方案:可能 WAS 配置正确,但为 XA 恢复配置的数据库用户没有足够的权限来执行恢复。这可以通过 运行 数据库中的以下命令作为 SYS 用户来修复,其中 <'user'> 是在数据源身份验证别名中配置的数据库用户。
grant select on pending_trans$ to <'user'>;
grant select on dba_2pc_pending to <'user'>;
grant select on dba_pending_transactions to <'user'>;
grant execute on dbms_system to <'user'>; (If using Oracle 10.2.0.3 or lower JDBC driver)
grant execute on dbms_xa to <'user'>; (If using Oracle 10.2.0.4 or higher JDBC driver)
有关详细信息,请参阅:http://www-01.ibm.com/support/docview.wss?uid=swg21196663
场景 3:websphere tranlog 中的未决事务由于某些问题无法恢复。
解决方案:在这种情况下,JVM 可以在恢复模式下启动,如下所示 - 这将有助于恢复事务并重新启动服务器。
#Stop the JVM
profileRoot/bin/stopServer.(bat|sh) serverName
#Start the JVM in recovery mode, The server will stop after performing transaction recovery
profileRoot/bin/startServer.(bat|sh) serverName -recovery
#Start the JVM
profileRoot/bin/startServer.(bat|sh) serverName
如果仍然不能解决问题,还有一个 'brutal fix'(不推荐,可能会导致环境)。
1. Stop the server
2. Delete the <'servername'> folder inside profileRoot/tranlog/<'cellname'>/<'nodename'> directory
3. Start the server
希望对您有所帮助!
对于成功测试的数据源 (*abc),在 Websphere 8.5.5 中每分钟都低于错误。 Sysout 日志完全充满了以下错误。如何解决?
创建 XA 连接和资源时出错 com.ibm.ws.exception.WsException:E:无法从数据源 ***abc 获取 XAConnection。 SQL 州:72000 SQL 代码:1017 --*- 原因:java.sql.SQLException:ORA-01017:无效username/password;登录被拒绝 **E: SQL 状态 = 72000,错误代码 = 1,017 ... 还有 34 个
一个很好的猜测是您有一个 Oracle 参与的 in-doubt 事务,恢复管理器每分钟尝试一次 XA 恢复,但失败了,因为 XA 恢复需要额外的特权通常需要连接到数据库(这就是您的测试连接有效的原因)。如果是这个原因,可以通过为数据源指定一个user/password for XA recovery path来解决这个问题,该路径已被授予在oracle中执行XA恢复的权限。这是标题为 "Authentication alias for XA recovery".
的 link 到 knowledge center document describing how to configure the recoveryAuthDataRef for this on a dataSource in WebSphere Application Server Liberty. If you are using WebSphere Application Server traditional, see the section of this knowledge center document您的问题是由环境中的一个或多个不确定事务导致的,该事务无法恢复。以下是此问题的可能原因及其修复方法。
场景 1:数据源配置中 "Authentication Alias for XA recovery" 的用户凭据不正确(这很可能是您的情况,看到错误)
解决方案:确保为数据源配置中的 "Authentication Alias for XA recovery" 和 "component-managed authentication alias" 选择正确的 J2C 身份验证别名和正确的用户名和密码。如果不正确,请更新凭据,保存并重新启动节点代理(如果是 WAS ND)和 JVM。
有关详细信息,请参阅:http://www-01.ibm.com/support/docview.wss?uid=swg21260425
场景 2:为 "Authentication Alias for XA recovery" 配置的用户没有足够的权限来执行恢复
解决方案:可能 WAS 配置正确,但为 XA 恢复配置的数据库用户没有足够的权限来执行恢复。这可以通过 运行 数据库中的以下命令作为 SYS 用户来修复,其中 <'user'> 是在数据源身份验证别名中配置的数据库用户。
grant select on pending_trans$ to <'user'>;
grant select on dba_2pc_pending to <'user'>;
grant select on dba_pending_transactions to <'user'>;
grant execute on dbms_system to <'user'>; (If using Oracle 10.2.0.3 or lower JDBC driver)
grant execute on dbms_xa to <'user'>; (If using Oracle 10.2.0.4 or higher JDBC driver)
有关详细信息,请参阅:http://www-01.ibm.com/support/docview.wss?uid=swg21196663
场景 3:websphere tranlog 中的未决事务由于某些问题无法恢复。
解决方案:在这种情况下,JVM 可以在恢复模式下启动,如下所示 - 这将有助于恢复事务并重新启动服务器。
#Stop the JVM
profileRoot/bin/stopServer.(bat|sh) serverName
#Start the JVM in recovery mode, The server will stop after performing transaction recovery
profileRoot/bin/startServer.(bat|sh) serverName -recovery
#Start the JVM
profileRoot/bin/startServer.(bat|sh) serverName
如果仍然不能解决问题,还有一个 'brutal fix'(不推荐,可能会导致环境)。
1. Stop the server
2. Delete the <'servername'> folder inside profileRoot/tranlog/<'cellname'>/<'nodename'> directory
3. Start the server
希望对您有所帮助!