调用存储过程会导致SOA 10g和SOA 12c

时间:2016-04-13 10:21:00

标签: oracle oracle10g oracle12c oracle-soa

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

我配置了一个DBAdapter来调用具有相同输入有效负载的相同存储过程。

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

我的问题是:什么"低级"参数会影响这个吗?这是我到目前为止所提出的想法清单以及我已经完成的检查:

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

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

1 个答案:

答案 0 :(得分:2)

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

你应该检查的事情:

  • 您是否在两个Oracle实例上使用相同的NLS设置?
  • 您是否在两个客户端/ DBAdapter上使用相同的NLS设置?
  • 您的输入中是否有浮点数(例如“12.1” - 这将很乐意用英语NLS设置解析,但如果您使用德语设置则会提出ORA-01722)