问题描述
嗨,克里斯,嗨,康纳,
以理论的方式进行查询的Appology,但是我想请您提出一些我可以在以下情况下尝试的建议。
当我需要清理一张表 (例如订单) 时,有要求。25亿行。
由此我们需要清理大约200亿行。
我们在这里想的是,而不是删除200亿:
方法1:
1.使用cta创建副本,例如订单的订单表
2.截断原始表订单
3.将所需的50亿行插入原始表订单
方法2:
1.准备删除150亿条记录的脚本
2.创建新的表空间-我们的DBA团队将对此进行处理
3.将表和索引顺序移动到新表空间以回收空间
4.将表移回旧表空间
5.在点 #2中删除表空间创建
在这里,选择方法2的可能性很大,您能帮我获取以下几点的oracle命令吗
a. Delete将根据order_date列执行,因此是否可以共享任何引用或脚本来执行如此庞大的删除任务?
b.命令将表移动到新表空间 & 返回?
另外,仅出于我的理解,我尝试了现有表的cta,但是cta本身花费了太多时间来创建原始表的副本。
您是否建议在此处创建table的副本?
是的。我们有分区许可证。
下面是表结构:
表: 订单
列: 订单id号,
varchar2型
开始时间戳
表: 订单详情
列: 订单id号,
城市varchar
金额编号
要保留的数据基于订单。type = 'VALID' 和start_ts <输入日期
基于条件需要清理订单,并基于orderid从order_details
以理论的方式进行查询的Appology,但是我想请您提出一些我可以在以下情况下尝试的建议。
当我需要清理一张表 (例如订单) 时,有要求。25亿行。
由此我们需要清理大约200亿行。
我们在这里想的是,而不是删除200亿:
方法1:
1.使用cta创建副本,例如订单的订单表
2.截断原始表订单
3.将所需的50亿行插入原始表订单
方法2:
1.准备删除150亿条记录的脚本
2.创建新的表空间-我们的DBA团队将对此进行处理
3.将表和索引顺序移动到新表空间以回收空间
4.将表移回旧表空间
5.在点 #2中删除表空间创建
在这里,选择方法2的可能性很大,您能帮我获取以下几点的oracle命令吗
a. Delete将根据order_date列执行,因此是否可以共享任何引用或脚本来执行如此庞大的删除任务?
b.命令将表移动到新表空间 & 返回?
另外,仅出于我的理解,我尝试了现有表的cta,但是cta本身花费了太多时间来创建原始表的副本。
您是否建议在此处创建table的副本?
是的。我们有分区许可证。
下面是表结构:
表: 订单
列: 订单id号,
varchar2型
开始时间戳
表: 订单详情
列: 订单id号,
城市varchar
金额编号
要保留的数据基于订单。type = 'VALID' 和start_ts <输入日期
基于条件需要清理订单,并基于orderid从order_details
专家解答
好吧,这里有几个场景
场景 #1-您需要 * 保留 * 要归档的行
1) 创建空分区表
-分区p1值小于输入日期
-输入日期以上的分区p2值
每个都有2个子分区type = '有效,type = [其他一切]
2) 使用DBMS_REDEFINITION将表迁移到分区的表中
3) “更改表交换分区” 以删除不再希望附加到表的分区。
之后,您将存档数据的表,而ORDERS表将仅包含要保留的行
此过程将需要很长时间才能运行,但是唯一真正的停机时间是在步骤2期间。
场景2-你不在乎你想保留的200亿
1) 创建表ORDERS_SMALL parallel作为select /* parallel */fate orders,其中type = 'VALID' 和start_ts <输入日期。
并行加载和查询的速度与您在Oracle中移动数据的速度差不多。并将其设置为分区表,以便将来的归档更容易。
2) 下降表订单
3) 将ORDERS_SMALL重命名为订单
(您需要重新应用索引,授予等)。
场景 #1-您需要 * 保留 * 要归档的行
1) 创建空分区表
-分区p1值小于输入日期
-输入日期以上的分区p2值
每个都有2个子分区type = '有效,type = [其他一切]
2) 使用DBMS_REDEFINITION将表迁移到分区的表中
3) “更改表交换分区” 以删除不再希望附加到表的分区。
之后,您将存档数据的表,而ORDERS表将仅包含要保留的行
此过程将需要很长时间才能运行,但是唯一真正的停机时间是在步骤2期间。
场景2-你不在乎你想保留的200亿
1) 创建表ORDERS_SMALL parallel作为select /* parallel */fate orders,其中type = 'VALID' 和start_ts <输入日期。
并行加载和查询的速度与您在Oracle中移动数据的速度差不多。并将其设置为分区表,以便将来的归档更容易。
2) 下降表订单
3) 将ORDERS_SMALL重命名为订单
(您需要重新应用索引,授予等)。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
603次阅读
2025-04-15 17:24:06
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
593次阅读
2025-04-18 14:18:38
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
497次阅读
2025-04-08 09:12:48
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
479次阅读
2025-04-20 10:07:02
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
464次阅读
2025-04-22 00:20:37
Oracle 19c RAC更换IP实战,运维必看!
szrsu
440次阅读
2025-04-08 23:57:08
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
438次阅读
2025-04-22 00:13:51
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
429次阅读
2025-04-17 17:02:24
火焰图--分析复杂SQL执行计划的利器
听见风的声音
371次阅读
2025-04-17 09:30:30
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
361次阅读
2025-04-15 14:48:05