6.4.4.2. 配置 XA Recovery 模块
对于多数 JDBC 和 JMS 资源,recovery 模块自动和资源相关联。在这些情况下,您只需要配置选项以允许 recovery 模块连接到您的资源来执行恢复。
对于非 JDBC 或 JMS 的自定义资源,请联系 Red Hat 全球支持服务获取受支持的配置的信息。
每个配置属性都可以在数据源创建过程中或之后设置。你可以用基于 web 的管理控制台或命令行管理 CLI 进行设置。关于配置 XA 数据源的信息,请参考 第 6.4.1 节 “用管理界面创建 XA 数据源” 或 第 6.4.2 节 “用管理界面修改 XA 数据源”。
参考下列表里的常用数据源配置属性,以及和专有数据库供应商相关的配置细节。
表 6.2. 常用的配置属性
| 属性 | 描述 |
|---|---|
| recovery-username |
recovery 模块应该用来连接资源进行恢复的用户名。
|
| recovery-password |
recovery 模块应该用来连接资源进行恢复的密码。
|
| recovery-security-domain |
recovery 模块应该用来连接资源进行恢复的安全域。
|
| recovery-plugin-class-name |
如果你需要使用自定义的 recovery 模块,请将这个属性设置为模块的全限定名。这个模块应该继承
com.arjuna.ats.jta.recovery.XAResourceRecovery 类。
|
| recovery-plugin-properties |
如果你使用了要求设置属性的自定义 recovery 模块,请将这个属性设置为用逗号隔开的 key=value 对的列表。
|
供应商专有的配置信息
- Oracle
- 如果错误地配置了 Oracle 数据源,您可能会在日志输出里看到这样的错误:
WARN [com.arjuna.ats.jta.logging.loggerI18N] [com.arjuna.ats.internal.jta.recovery.xarecovery1] Local XARecoveryModule.xaRecovery got XA exception javax.transaction.xa.XAException, XAException.XAER_RMERR
要解决这个错误,请确保recovery-username里配置的 Oracle 用户可以访问恢复所需的表。下面是安装了 Oracle bug 5945463 补丁的 Oracle 11g 或 Oracle 10g R2 实例的正确 Grant SQL 语句。GRANT SELECT ON sys.dba_pending_transactions TO recovery-username; GRANT SELECT ON sys.pending_trans$ TO recovery-username; GRANT SELECT ON sys.dba_2pc_pending TO recovery-username; GRANT EXECUTE ON sys.dbms_xa TO recovery-username;
如果你使用了 11g 以前的 Oracle 11 版本,请将最后的EXECUTE语句修改为:GRANT EXECUTE ON sys.dbms_system TO recovery-username;
- PostgreSQL
- 关于启用 pepared (也就是 XA)事务的说明请阅读 PostgreSQL 文档。PostgreSQL 的 JDBC 驱动的 8.4-701 版本在
org.postgresql.xa.PGXAConnection里有一个程序错误,它在某些情况下会中断恢复。在更新的版本里我们会修复这个问题。 - MySQL
- 根据 http://bugs.mysql.com/bug.php?id=12161,XA 事务恢复在 MySQL 5 的某些版本里无法运行。MySQL 6.1 里已解决了这个问题。详情请参考 bug URL 或 MySQL 文档。
- IBM DB2
- IBM DB2 期望
XAResource.recover方法只是在应用服务器发生崩溃或故障后重启时的重同步阶段才被调用。这是 DB2 实现里的设计问题,超出了本文档的范畴。 - Sybase
- Sybase 期望在数据库启用 XA 事务。如果没有正确的数据库配置,XA 事务将无法工作。
enable xact coordination启用或禁用 Adaptive Server 事务协调(transaction coordination)服务。当启用这个参数时,Adaptive Server 确保对远程 Adaptive Server 数据提交或用原始事务进行回滚。要启用事务协调,请使用:sp_configure 'enable xact coordination', 1
.