如何解决在Win2003的Oracle链接服务器上MSDTC事务失败问题

  在企业环境中,客户有时需要设置MSDTC事务来与远程Oracle目标服务器协同工作。由于跨产品的设置十分复杂,有时我们在更新一个已链接的Oracle数据库中的数据时可能会面临事务失败,例如: 服务器:消息 7391,级别16,状态1,行1 该操作无法执行,因为OLE DB Provider ‘MSDAORA’ 无法启动分布式事务。 OLE DB错误跟踪 [OLE / DB Provider ‘MSDAORA’ ITransactionJoin::JoinTransaction返回0x8000d048]。 下面是帮助我们缩小和解决类似的问题的一般的步骤(开始操作之前,先尝试使用SQL的普通的select语句查询Oracle,确保服务器名称解析和它们之间的网络正常): 1。在Windows Server 2003中,选择”添加/删除程序程序”控制台,Windows组件中的”启用网络DTC访问”必须启用。可以在Windows组件\应用程序服务器\启用网络DTC访问下启用它。请参考: 817064如何在Windows Server 2003启用网络DTC访问 http://support.microsoft.com/default.aspx?scid=kb;EN-US;817064 2。打开DCOMCNFG,确保MSDTC选项卡下的安全配置的设置是正确的:   3。打开注册表,在Security键中,确保注册表值和UI设置相匹配: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Security   4。 注册表中Oracle模块的配置是正确的: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI   OracleXaLib=oraclient9.dll OracleSqlLib=orasql9.dll OracleOciLib=oci.dll   尽管在这里我们使用Oracle 9i客户端作为举例,我们应该知道,在Microsoft数据访问组件(MDAC)2.5版本之后,微软的ODBC驱动和OLE DB Provider都只支持Oracle7和Oracle 8i:http://support.microsoft.com/Default.aspx?id=244661 一个新的支持Oracle 9i客户端的Microsoft.NET Managed Oracle Provider现已推出。请访问以下Microsoft网站来下载这个Provider:http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=4F55D429-17DC-45EA-BFB3-076D1C052524 对于其他版本的Oracle客户端(7 / 8)注册表键值设置,请参考: 193893 有关Oracle与Microsoft Transaction Server和COM…

0

如何解决系统事件出现DCOM 10009错误?

症状: 我们有时在系统事件中会遇到DCOM 10009的错误(如下所示),或者会在DCOM客户应用程序中接收到错误代码0x800706ba: Event Type:        ErrorEvent Source:    DCOM|Event Category:                NoneEvent ID:              10009Date:                     2010-2-22Time:                     10:02:07User:                     N/AComputer:          <Computer Name>Description: DCOM was unable to communicate with the computer <Target Computer Name> using any of the configured protocols. Simply speaking, DCOM 10009 indicates that the DCOM client located on this <Computer Name> can’t communicate with the DCOM|COM+ server located…

0