问题描述
嗨,汤姆,
我是第一次写信给你,我希望你能帮助我。我应该考虑调整一些表的大小。我说的是日志表 (用户事件日志,应用程序事件日志,事务日志等)。它们大多是独立的表,没有孩子或父母 (有些只有父母)。通常表只有PK的唯一索引,有些表在时间戳列上有索引。表变得非常大,旧数据应该被删除。
我正在考虑使用DBMS_REDEFINITION包进行在线分区,因为它不应该是停机时间 (至少停机时间不能持续很长时间),而不是丢弃旧分区。
我有几个关于它的问题:
1.如果一切顺利,我想我必须在删除旧分区时重建索引。它会对系统造成任何影响,除了查询速度会很慢。应用程序使用该表只是为了插入数据 (这是非常频繁的),通常它们的目的只是为了调试。我们谈论250GB的表,这只是在dev上,生产表要大得多。如果我打算保留20% 的数据,那么重建该大小的表的索引大约需要多长时间,如果我打算删除20% 的数据呢?(在某些表中,数据应该保留7年,在大约1年)
2.是否有任何缺点。将数据从原始表复制到临时表是否会产生大量的重做日志或是否有其他后果。
3.您是否有任何建议以其他方式做所有事情。
我没有太多经验,我在这份工作中是初级的。我已经读过关于分区的文章,我计划在时间戳列上做间隔分区。我也用DBMS_REDEFINITION包做了一些测试,我只注意到它不会复制列的默认值,所以我应该在最后做。还有什么我应该担心。感谢您的帮助。
致以最诚挚的问候,
马尔科
我是第一次写信给你,我希望你能帮助我。我应该考虑调整一些表的大小。我说的是日志表 (用户事件日志,应用程序事件日志,事务日志等)。它们大多是独立的表,没有孩子或父母 (有些只有父母)。通常表只有PK的唯一索引,有些表在时间戳列上有索引。表变得非常大,旧数据应该被删除。
我正在考虑使用DBMS_REDEFINITION包进行在线分区,因为它不应该是停机时间 (至少停机时间不能持续很长时间),而不是丢弃旧分区。
我有几个关于它的问题:
1.如果一切顺利,我想我必须在删除旧分区时重建索引。它会对系统造成任何影响,除了查询速度会很慢。应用程序使用该表只是为了插入数据 (这是非常频繁的),通常它们的目的只是为了调试。我们谈论250GB的表,这只是在dev上,生产表要大得多。如果我打算保留20% 的数据,那么重建该大小的表的索引大约需要多长时间,如果我打算删除20% 的数据呢?(在某些表中,数据应该保留7年,在大约1年)
2.是否有任何缺点。将数据从原始表复制到临时表是否会产生大量的重做日志或是否有其他后果。
3.您是否有任何建议以其他方式做所有事情。
我没有太多经验,我在这份工作中是初级的。我已经读过关于分区的文章,我计划在时间戳列上做间隔分区。我也用DBMS_REDEFINITION包做了一些测试,我只注意到它不会复制列的默认值,所以我应该在最后做。还有什么我应该担心。感谢您的帮助。
致以最诚挚的问候,
马尔科
专家解答
有关完整示例,请参见此处
https://asktom.oracle.com/pls/apex/f?p=100:11:::NO::P11_QUESTION_ID:9526051800346812767
回答你的问题
1) 将处理索引,但是 * 您 * 需要确定索引是全局的还是本地的 (如果可以的话,首选本地的,因为这样分区丢弃不需要任何索引维护)
2) 锻炼过程中显然会消耗资源,但是您可以通过测试来确定
3) dbms_redef是要走的路。
https://asktom.oracle.com/pls/apex/f?p=100:11:::NO::P11_QUESTION_ID:9526051800346812767
回答你的问题
1) 将处理索引,但是 * 您 * 需要确定索引是全局的还是本地的 (如果可以的话,首选本地的,因为这样分区丢弃不需要任何索引维护)
2) 锻炼过程中显然会消耗资源,但是您可以通过测试来确定
3) dbms_redef是要走的路。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




