问题描述
嗨,
这是场景:
考虑Parent_table,它是基于dept_no列表分区的-partition_name指定为 “P_Dept_no”。
Parent_table -> Child_table_1 (基于Parent_Table的引用 _ 分区) -> Child_table_2 (基于Child_Table_1的引用 _ 分区) -> Child_Table_3 (基于Child_Table_2的引用 _ 分区)
问题发生在Child_table_3。对于一些分区,Child_table_3中的partition_name被创建为 “SYS_P” 分区。
由于我们正在做一些基于partition_names的操作,我们试图纠正这一点:
尝试删除并重新创建Child_table_3 :-
1.将同一组子分区重新创建为 'sys_p' 或
2.使用正确的partition_name (对应于 'p_dept_no ') 重新创建较早的 “sys_p'” 的子分区,而将较早正确命名的另一组子分区重新创建为 “SYS_P”。
知道为什么会这样吗?
试图重命名Child_table_3的分区:
这里担心的是,我们使用Parent_table的partition_position来标识正确的partition_name。这可以保证在父表和子表之间保持不变吗?
另外,当我们重命名Child_table_3的分区时,'partition_name'在 “* _ ind_partitions” 中,“* _ ind_statistics” 等仍保持为 “SYS_P”。这是预期的结果吗?如果我们也不更新元数据表,它会影响对表执行的任何操作吗?
或者这种情况有什么解决方案?
更新: 我们遇到了这样的情况: 如果父表分区被拆分,那么子表中的相应分区将被创建为 “SYS_P”,但是我们没有随时显式拆分父分区。这可以作为内部oracle操作发生吗?另外,如果是这种情况,那么drop and create strategy是否会使用适当的名称创建?
Update:发现此问题为Bug 15996848在12C中固定的Oracle中。所以请忽略前面的问题。
To fix this issue, we will alter table and index to rename partition. 这里担心的是,我们使用Parent_table的partition_position来标识正确的partition_name。这可以保证在父表和子表之间保持不变吗?
此外,该领域parent_table_partition在ALL_TAB_PARTITIONS中,所有引用的子分区均为空。我以为这将用相应的父表分区填充。不是这样吗?
这是场景:
考虑Parent_table,它是基于dept_no列表分区的-partition_name指定为 “P_Dept_no”。
Parent_table -> Child_table_1 (基于Parent_Table的引用 _ 分区) -> Child_table_2 (基于Child_Table_1的引用 _ 分区) -> Child_Table_3 (基于Child_Table_2的引用 _ 分区)
问题发生在Child_table_3。对于一些分区,Child_table_3中的partition_name被创建为 “SYS_P” 分区。
由于我们正在做一些基于partition_names的操作,我们试图纠正这一点:
尝试删除并重新创建Child_table_3 :-
1.将同一组子分区重新创建为 'sys_p' 或
2.使用正确的partition_name (对应于 'p_dept_no ') 重新创建较早的 “sys_p'” 的子分区,而将较早正确命名的另一组子分区重新创建为 “SYS_P”。
知道为什么会这样吗?
试图重命名Child_table_3的分区:
这里担心的是,我们使用Parent_table的partition_position来标识正确的partition_name。这可以保证在父表和子表之间保持不变吗?
另外,当我们重命名Child_table_3的分区时,'partition_name'在 “* _ ind_partitions” 中,“* _ ind_statistics” 等仍保持为 “SYS_P”。这是预期的结果吗?如果我们也不更新元数据表,它会影响对表执行的任何操作吗?
或者这种情况有什么解决方案?
更新: 我们遇到了这样的情况: 如果父表分区被拆分,那么子表中的相应分区将被创建为 “SYS_P”,但是我们没有随时显式拆分父分区。这可以作为内部oracle操作发生吗?另外,如果是这种情况,那么drop and create strategy是否会使用适当的名称创建?
Update:发现此问题为Bug 15996848在12C中固定的Oracle中。所以请忽略前面的问题。
To fix this issue, we will alter table and index to rename partition. 这里担心的是,我们使用Parent_table的partition_position来标识正确的partition_name。这可以保证在父表和子表之间保持不变吗?
此外,该领域parent_table_partition在ALL_TAB_PARTITIONS中,所有引用的子分区均为空。我以为这将用相应的父表分区填充。不是这样吗?
专家解答
“可以保证在父表和子表之间保持不变吗?”
是的,因为您不能删除子分区,所以分区数将始终保持同步。
“parent_table_partition” 用于嵌套表,而不是用于引用表。
是的,因为您不能删除子分区,所以分区数将始终保持同步。
SQL> @drop child Y1 Y2 ----------------------- ------------------------- TABLE cascade constraints purge 1 row selected. Table dropped. SQL> @drop parent Y1 Y2 ----------------------- ------------------------- TABLE cascade constraints purge 1 row selected. Table dropped. SQL> SQL> create table parent ( 2 id number not null, 3 constraint pk primary key (id) 4 ) 5 partition by range (id) 6 ( 7 partition p1 values less than (10), 8 partition p2 values less than (20), 9 partition p3 values less than (30), 10 partition p4 values less than (40) 11 ); Table created. SQL> SQL> insert into parent select rownum from dual connect by level < 40; 39 rows created. SQL> commit; Commit complete. SQL> SQL> create table child ( 2 id number not null, 3 parent_id number not null, 4 constraint fk foreign key (parent_id) 5 references parent (id) 6 ) 7 partition by reference (fk); Table created. SQL> SQL> insert into child select rownum, rownum 2 from dual 3 connect by level <40; 39 rows created. SQL> SQL> commit; Commit complete. SQL> SQL> alter table child drop partition p3; alter table child drop partition p3 * ERROR at line 1: ORA-14255: table is not partitioned by range, list, composite range, or composite list method SQL> SQL> alter table parent drop partition p3; Table altered. SQL>复制
“parent_table_partition” 用于嵌套表,而不是用于引用表。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【专家有话说第五期】在不同年龄段,DBA应该怎样规划自己的职业发展?
墨天轮编辑部
1219次阅读
2025-03-13 11:40:53
Oracle RAC ASM 磁盘组满了,无法扩容怎么在线处理?
Lucifer三思而后行
739次阅读
2025-03-17 11:33:53
Oracle+Deepseek+Dify 实现数据库数据实时分析
bicewow
651次阅读
2025-03-06 09:41:49
【ORACLE】ORACLE19C在19.13版本前的一个严重BUG-24761824
DarkAthena
542次阅读
2025-03-04 14:33:31
Oracle避坑指南|同名表导出难题:如何精准排除指定用户下的表?
szrsu
502次阅读
2025-03-05 00:42:34
2月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
438次阅读
2025-03-13 14:38:19
Ogg23ai高手必看-MySQL Innodb Cluster跟oracle的亲密接触
曹海峰
437次阅读
2025-03-04 21:56:13
【ORACLE】char类型和sql优化器发生的“错误”反应
DarkAthena
398次阅读
2025-03-04 23:05:01
什么,oracle 主机用户被删了?原来是虚惊一场!
Lucifer三思而后行
394次阅读
2025-03-03 21:12:09
Oracle 如何修改 db_unique_name?强迫症福音!
Lucifer三思而后行
325次阅读
2025-03-12 21:27:56