在 SOA 10g 和 SOA 12c 中调用存储过程导致不同的结果
Calling stored procedure leads to different results in SOA 10g and SOA 12c
我正在将 BPEL 流程从 SOA 10g 移植到 SOA 12c。
我配置了一个 DBAdapter 来调用相同的存储过程,具有相同的输入负载。
问题是在 SOA 10g 上一切正常,过程 returns 作为自定义输出错误代码 0 和 "OK" 作为消息。
相反,在 SOA 12c 中,该过程在某个时刻中断并且 returns 错误代码 -1722 和 "Invalid number" 作为消息(这肯定是对 ORA-01722 数据库错误的内部处理) .
我无法调试存储过程以查看它在哪一行中断。
我的问题是:哪个 "low-level" 参数会对此产生影响?这是我到目前为止的想法列表和我已经完成的检查:
- 安装SOA的数据库使用的编码与推荐的AL32UTF8不同。我不知道这是否会成为问题,但我想不会,因为两个 SOA 版本都使用相同的数据库。
- 两种情况下所有相关字段的输入有效载荷相同。我通过从企业管理器下载 XML 并与 Meld 进行比较进行了检查;至少从这里我看不出有什么不同。
我猜想在某些时候编码中存在一个问题,它将奇怪的数据从 WebLogic 发送到数据库。我刚刚启用了所使用的 DbAdapter 特定连接池的日志,我会尽快用相关信息更新问题(我必须等待实例启动,我无法自己启动它们)。
我猜这是一个 NLS 问题(根据我的经验,大多数 ORA-01722 结果都与 NLS 相关)。
您应该检查的事项:
- 您是否在两个 Oracle 实例上使用相同的 NLS 设置?
- 您是否在两个客户端/DBAdapter 上使用相同的 NLS 设置?
- 您的输入中是否有浮点数(例如“12.1”- 这将很高兴地使用英语 NLS 设置进行解析,但如果您使用德语设置则引发 ORA-01722)
我正在将 BPEL 流程从 SOA 10g 移植到 SOA 12c。
我配置了一个 DBAdapter 来调用相同的存储过程,具有相同的输入负载。
问题是在 SOA 10g 上一切正常,过程 returns 作为自定义输出错误代码 0 和 "OK" 作为消息。 相反,在 SOA 12c 中,该过程在某个时刻中断并且 returns 错误代码 -1722 和 "Invalid number" 作为消息(这肯定是对 ORA-01722 数据库错误的内部处理) . 我无法调试存储过程以查看它在哪一行中断。
我的问题是:哪个 "low-level" 参数会对此产生影响?这是我到目前为止的想法列表和我已经完成的检查:
- 安装SOA的数据库使用的编码与推荐的AL32UTF8不同。我不知道这是否会成为问题,但我想不会,因为两个 SOA 版本都使用相同的数据库。
- 两种情况下所有相关字段的输入有效载荷相同。我通过从企业管理器下载 XML 并与 Meld 进行比较进行了检查;至少从这里我看不出有什么不同。
我猜想在某些时候编码中存在一个问题,它将奇怪的数据从 WebLogic 发送到数据库。我刚刚启用了所使用的 DbAdapter 特定连接池的日志,我会尽快用相关信息更新问题(我必须等待实例启动,我无法自己启动它们)。
我猜这是一个 NLS 问题(根据我的经验,大多数 ORA-01722 结果都与 NLS 相关)。
您应该检查的事项:
- 您是否在两个 Oracle 实例上使用相同的 NLS 设置?
- 您是否在两个客户端/DBAdapter 上使用相同的 NLS 设置?
- 您的输入中是否有浮点数(例如“12.1”- 这将很高兴地使用英语 NLS 设置进行解析,但如果您使用德语设置则引发 ORA-01722)