告警日志出现分布式事务缺少DTP服务信息

客户的RAC环境中出现这个告警信息。
详细信息如下:

Thu DEC 23 09:23:15 2011
Running Distributed Transactions IN RAC WITHOUT DTP service.

查询MOS发现,对于10.2版本的数据库,如果连接RAC环境,且执行分布式事务,那么应该启用DTP服务。
从告警日志的其他部分,可以发现数据库确实使用了分布式事务,因为已经出现了分布式事务的错误:

Tue DEC 23 09:25:14 2011
DISTRIB TRAN 44444444.99A137F01FBF14AACDCA8A9D3C8FED5800000000
IS LOCAL tran 7.25.1798234 (hex=07.1a.1b705a)
INSERT pending prepared tran, scn=6812962413 (hex=1.96158e6d)

解决办法是为数据库已启用的服务设置DTP:

EXECUTE DBMS_SERVICE.MODIFY_SERVICE(service_name => '', DTP=>TRUE);

除了使用DBMS_SERVICE包外,还可以在命令行通过srvctl工具对单独的实例设置DTP选项,方法类似如下:

srvctl MODIFY service -d db -s db.oracle.com -x TRUE
This entry was posted in ORACLE and tagged , , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *