BizTalk 2020(CU1)配置Oracle绑定时出现程序格式错误的问题咨询
BizTalk 2020 CU1 环境下Oracle适配器绑定报错排查指引
针对当前场景下出现的0x8007008“尝试加载格式不正确的程序”报错,结合“基础Oracle连接正常、调整绑定配置即触发OracleConnection类型初始化异常”的特征,按以下优先级排查修复:
- 程序集GAC注册合规性校验:同时将x64、x86同版本
Oracle.DataAccess.dll注册到GAC的操作存在加载冲突风险。由于两个架构的程序集强名称、版本号完全一致,若注册时未对应匹配进程架构上下文,GAC会出现加载优先级混乱,直接触发类型初始化失败。修复方式:先将已注册的两个同版本程序集从GAC全部移除,再分别在对应架构的管理员权限命令行下完成注册:- x64版本:在64位管理员权限PowerShell中执行
gacutil /i "x64 ODAC安装目录下的Oracle.DataAccess.dll" - x86版本:在32位管理员权限PowerShell(路径
C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe)中执行gacutil /i "x86 ODAC安装目录下的Oracle.DataAccess.dll"
- x64版本:在64位管理员权限PowerShell中执行
- Oracle客户端环境变量路径校验:ODAC 18c的x64、x86版本必须配置独立的
ORACLE_HOME,且系统PATH中要严格区分架构对应的Bin路径优先级,禁止把两个架构的Oracle Bin路径混杂在同一层级。若PATH顺序错乱,32位进程会尝试加载x64架构的oci.dll,直接触发程序格式不匹配报错。校验标准:64位进程加载Oracle组件时,系统PATH靠前位置必须命中x64版本的Oracle Bin目录;32位进程加载时,必须优先命中x86版本的Oracle Bin目录。 - 程序集发布策略匹配校验:
Oracle.DataAccess 4.122.18.3版本的ODAC部署时,需同步将对应版本的Publisher Policy程序集按架构注册到GAC,否则当BizTalk绑定中引用同系列低版本(如4.122.0.0)的程序集时,会被错误路由到架构不匹配的dll。操作上需将ODAC安装目录下的policy.4.122.Oracle.DataAccess相关策略文件,按对应架构分别完成GAC注册,保证版本路由逻辑一致。 - BizTalk CU1兼容场景校验:BizTalk 2020 CU1的WCF-Custom适配器加载Oracle绑定时,存在已知兼容限制:不能在同一服务器上混装ODAC 18c与ODAC 19c及以上版本的客户端组件。排查时可通过进程加载监控工具,确认报错进程加载的
oci.dll是否全部来自ODAC 18c对应目录,若发现跨版本的Oracle组件被加载,直接清理对应残留路径,将加载入口重定向到18c的Bin目录。 - 排障效果验证流程:完成上述调整后,先分别用对应架构的测试程序手动实例化
Oracle.DataAccess.Client.OracleConnection类,确认无类型初始化异常后,再重新打开BizTalk管理控制台,删除原有缓存的旧Oracle绑定配置,重新录入绑定参数完成配置,避免旧配置存储的程序集路径缓存引发残留报错。
内容的提问来源于stack exchange,提问作者Emilio Marino
相关产品推荐
相关产品推荐

