通过动态增加拆分在 oracle 中创建拆分分区

Posted

技术标签:

【中文标题】通过动态增加拆分在 oracle 中创建拆分分区【英文标题】:create a split partition in oracle by increasing dinamically the splits 【发布时间】:2018-07-23 15:41:08 【问题描述】:

晚上好,

我必须使用拆分分区将表中的值插入到另一个表中; partition是range类型,取值范围从1开始对应1月,12结束对应12月,目的是做个检查:

    如果分区存在,我必须在表中插入该分区对应的值 如果分区不存在,我必须创建主分区的拆分,然后将与该分区拆分对应的值插入到表中。 这个split值的增加必须动态设置,这样我就不用重写split partitioning 12次了

感谢帮助,如果不清楚我会提供更多详细信息

【问题讨论】:

添加您迄今为止尝试过的内容。并正确解释 Oracle是数据库的品牌和品牌名称,Oracle也有一个数据库叫mysql,那么你用的是Oracle数据库还是MySQL呢? 我一直在使用 MySQL,直到现在我才这样做:开始执行立即 'alter table my_table split partition ||mypartition||'进入(分区 '||mypartition1|| 值小于 ||2|| 段创建立即数,分区 '||mypartition2|| 值小于 ||3|| 段创建立即数,依此类推,直到 mypartition12 但此拆分必须是增加动态调用,而不是像这样手动 正确标记!!! MySQL 甲骨文!!! @GiuseppeArena - “直到现在”意味着其他一些产品会这样做吗?好吧,RDBMS 产品大多是不兼容的。所以,请把 MySQL 手册放在手边。 【参考方案1】:

拆分称为REORGANIZE PARTITION

要查看您当前拥有的分区,请使用information_schema.partitions。从中,以及对模式的了解,以及(最好)您对分区的命名约定,推断是否拆分。

最好在需要新分区之前在cron 作业或EVENT 中完成。如果数据大致按时间顺序出现,那是最好的。如果数据带有随机时间戳,请详细说明。

同时,here 是关于如何为基于时间的数据进行滑动分区集的讨论,以及一些技巧。

十二月之后你会做什么?我希望你不会覆盖一月。我希望你使用PARTITION BY RANGE;否则,您将无法进行任何范围测试的分区修剪。

【讨论】:

是的,我正在使用范围分区,我在 12 月之后要做什么并不重要,因为表是完整的,我只是对新表中的数据进行范围分区从旧的 您是否希望提高性能?还是有其他添加分区的原因? 我正在学习分区,我有这个练习要求我拆分一个范围分区,这个范围分区有两个值1和等于12的maxvalue。我必须拆分最大值在从 2 到 12 的 11 个分区中,但我必须动态拆分,我不能像我在各处发现的那样将其拆分为 12 个部分 @GiuseppeArena - 如果你在谈论 SUBPARTITIONs,我会说“别打扰——它们没有任何好处”。 不,我必须只使用拆分分区,它应该以这种方式工作:从一个分区开始,值1和12。在我检查月份之后(1到12之间的数值)如果受控月份的分区存在我在表中插入分区值,否则我创建分区并插入它,要创建它我必须对分区的最大值进行拆分,范围为 12 和我必须将它从值2划分为值12。我希望它更清楚

以上是关于通过动态增加拆分在 oracle 中创建拆分分区的主要内容,如果未能解决你的问题,请参考以下文章

ORACLE 分区表分区拆分

使用新的子分区模板在 Oracle 中拆分 maxvalue 分区

无法在 access 2007 拆分表单中创建新记录

如何编写用于在表中创建新拆分分区的 plsql 代码?

如何在对话框中创建拆分窗口,附上示例

根据fabricjs的下拉选择拆分画布(动态)屏幕