通过动态增加拆分在 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 中创建拆分分区的主要内容,如果未能解决你的问题,请参考以下文章