如何批量更新oracle pl / sql中的大表以避免耗尽undospace?
发布时间:2021-01-01 13:11:01 所属栏目:站长百科 来源:网络整理
导读:我有一张非常大的桌子(5毫米的记录).我正在尝试使用随机字母数字对表格的VARCHAR2列进行模糊处理.我的过程在较小的数据集上成功执行,但它最终会在我无法控制的设置的远程数据库上使用,所以我想批量执行UPDATE语句以避免耗尽undospace. 我可以启用某种选项,还
我有一张非常大的桌子(5毫米的记录).我正在尝试使用随机字母数字对表格的VARCHAR2列进行模糊处理.我的过程在较小的数据集上成功执行,但它最终会在我无法控制的设置的远程数据库上使用,所以我想批量执行UPDATE语句以避免耗尽undospace. 我可以启用某种选项,还是以块的形式进行更新的标准方法? 我将补充说,没有任何混淆的记录没有任何区别特征,所以我想在循环中使用rownum是行不通的(我认为). 解决方法如果要更新表中的每一行,最好选择Create Table As Select,然后删除/截断原始表并使用新数据重新附加.如果您有分区选项,则可以将新表创建为具有单个分区的表,并将其与EXCHANGE PARTITION交换.插入需要少量撤消,带有nologging的直接路径插入(/ APPEND /提示)也不会产生太多重做. 对于任何一种机制,可能会有旧的值的“法医”证据(例如,由于行移动而在撤消或“可用”空间中保留分配给表). (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |