1

我正在将一个 BPEL 流程从 SOA 10g 移植到 SOA 12c。

我配置了一个 DBAdapter 以使用相同的输入负载调用相同的存储过程。

问题是在 SOA 10g 上一切都很好,并且该过程作为自定义输出返回错误代码 0 和“OK”作为消息。相反,在 SOA 12c 中,该过程在某些时候中断并返回错误代码 -1722 和“无效数字”作为消息(这肯定是对ORA-01722数据库错误的内部处理)。我无法调试存储过程以查看它在哪一行中断。

我的问题是:什么“低级”参数会影响这个?这是我到目前为止的想法和我已经完成的检查的列表:

  • 安装 SOA 的数据库使用与 AL32UTF8 不同的编码,这是推荐的。我不知道这是否是个问题,但我猜不是因为两个 SOA 版本都使用同一个数据库。
  • 在这两种情况下,所有相关字段的输入有效负载都是相同的。我通过从企业管理器下载 XML 并与 Meld 进行比较来检查;至少从这个我看不出有什么不同。

我猜想在某些时候存在编码问题,它将奇数数据从 WebLogic 发送到数据库。我刚刚启用了所使用的 DbAdapter 特定连接池的日志,我将在获得一些信息后立即使用相关信息更新问题(我必须等待实例启动,我无法自己启动它们)。

4

1 回答 1

2

我猜这是一个 NLS 问题(根据我的经验,大多数 ORA-01722 都与 NLS 相关)。

你应该检查的事情:

  • 您是否在两个 Oracle 实例上使用相同的 NLS 设置?
  • 您在两个客户端/DBAdapter 上使用相同的 NLS 设置吗?
  • 您的输入中是否有浮点数(例如“12.1” - 这将很乐意使用英语 NLS 设置进行解析,但如果您使用德语设置,则会引发 ORA-01722)
于 2016-04-28T16:27:03.647 回答