Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL更新查询未完成_Sql_Oracle_Sql Update - Fatal编程技术网

SQL更新查询未完成

SQL更新查询未完成,sql,oracle,sql-update,Sql,Oracle,Sql Update,我做了一个SQL查询来更新表上的寄存器。该表有大约1500万个寄存器。update语句类似于: UPDATE temp_conafe set apoyo = trim(apoyo) where cve_status like '%APOYO%'; 我一直在检查字段v$transaction。使用查看查询是向前滚动还是向后滚动,但当记录数达到1500万条以上时,查询开始向后滚动 如何使更新成功完成 我不是DBA,只是一个程序员,但在那东西更新我的寄存器之前,我不能继续开发。看起来你的

我做了一个SQL查询来更新表上的寄存器。该表有大约1500万个寄存器。update语句类似于:

UPDATE temp_conafe
  set apoyo = trim(apoyo)
  where cve_status like '%APOYO%';
我一直在检查字段v$transaction。使用查看查询是向前滚动还是向后滚动,但当记录数达到1500万条以上时,查询开始向后滚动

  • 如何使更新成功完成

我不是DBA,只是一个程序员,但在那东西更新我的寄存器之前,我不能继续开发。

看起来你的事务太大了。尝试在where中添加另一个限制子句。如果您有一个Id字段,您可以添加如下内容:

where cve_status like '%APOYO%' 
AND id > 1 AND id < 100000
其中cve_状态如“%APOYO%”
id>1且id<100000

您需要多次运行它,以相应地更改范围。如果这不是一个选项,您必须与DBA交谈,并要求他为您提供更多资源。

听起来您可能没有足够的日志空间来进行更改。考虑组块更新,以便使用10个较小的更新,使用一些其他字段而不是代码> CVELSTATION/CODE >。还要考虑你是否真的需要修剪数据;你能不能安排去掉客户端代码中的尾随空格?如果数据类型是CHAR(而不是VARCHAR2),那么修剪是没有意义的;数据将以尾随空格存储。@JonathanLeffler谢谢你的建议,我会检查所有这些。我也在考虑空间,但我想确定一下。谢谢,我会尽量缩短我的事务,并与我的DBA交谈,因为我们总是使用如此大的数据进行数据分析。