暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 将数据从同一表中的一个分区复制到另一个分区

askTom 2017-07-19
1045

问题描述

嗨,汤姆,

我们有一个根据活动日期每天分区的表。每天,我们都会使用/* 附加 */提示 (单独使用partitionkey列的值使用1修改) 为前几天分区的sysdate-1 (trunc(sysdate)) 分区进行批量插入。

今天,我们有接近2000万条记录的数据,这些记录在15-20分钟内被复制。考虑到数据量的增长,我相信应该有一种更好的方法来做到这一点,而不是做insert select。

我确实经历了分区交换,据我了解,只能将非分区表形成为单个分区。您能否建议是否有更好的方法来做到这一点?


专家解答

那么,您可以尝试使用create table作为select将数据复制到新表中。然后用你现有的一个分区交换新表。例如在伪代码中:

drop table temp_tab;
create table temp_tab as
  select trunc(sysdate), ...
  from   tab partition (yesterday_partition);

alter table tab exchange partition today_partition with temp_tab;
复制


但是要真正提供帮助,我们需要了解您的插入正在做什么。找到这个,在启用等待的情况下跟踪您的插入。然后使用tkprof解析跟踪文件。您可以在以下位置找到有关如何执行此操作的说明:

https://blogs.oracle.com/sql/how-to-create-an-execution-plan#tkprof

如果执行此操作后仍然需要帮助,请发布格式化的跟踪文件结果。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论