我有一个在Linux机器上运行的Oracle服务器。当特定的Update语句在sproc中运行时,我收到错误ORA-1407,并且无效数据被写入XmlType字段。 sproc正在尝试更新Xml,但不会尝试更新ID。所以正在进行的调用如下:
UPDATE my_table SET x = foo, y = bar, my_xml = xmldata where the_field = my_field
returning id into l_id
此时Oracle返回“ORA-01407:无法将ID更新为NULL”,并且字段my_xml现在包含损坏的数据。
如果我这样做了几次,Oracle进程最终会在看似随机的地方死掉,错误是“ORA-00603:ORACLE服务器会话被致命错误终止”。
你见过类似的东西吗?有关我可以采取哪些步骤进行故障排除的任何提示?答案 0 :(得分:0)
可能看起来很愚蠢,但记录中的id在开头时是否具有非空值。
可以使用已启用但未经过验证的约束,以便现有数据可能违反约束。也许更新正在推动强制执行。
答案 1 :(得分:0)
可能的原因是如果UPDATE的where条件返回0元组,那么id将为null。
很难说没有任何数据。您可以尝试使用一小部分数据并查看其中断的位置。