问题描述
嗨,
我想从表A到表B进行分区交换。
以下是一个测试用例,
创建表范围 _ 哈希 _ 测试
(
TRN_DT日期,
Seq _ 无编号,
参考 _ 无变量2(26)
)
按范围划分 (TRN_DT)
按哈希划分的子分区 (REF_NO) 子分区4
(分区Acc_Jan_2017值小于 (TO_DATE('01-feb-2017','dd-MON-yyy');
插入到RANGE_HASH_TEST值 (TO_DATE('01-01-2017 ','dd-MM-yyy'),1,'123');
插入到RANGE_HASH_TEST值 (TO_DATE('01-01-2017 ','dd-MM-yyy'),2,'12');
插入到RANGE_HASH_TEST值 (TO_DATE('01-01-2017 ','dd-MM-yyy'),3,'113');
插入到RANGE_HASH_TEST值 (TO_DATE('01-01-2017 ','dd-MM-yyy'),4,'121');
插入到RANGE_HASH_TEST值 (TO_DATE('01-01-2017 ','dd-MM-yyy'),5,'124');
插入到RANGE_HASH_TEST值 (TO_DATE('01-01-2017 ','dd-MM-yyy'),6,'125');
插入到RANGE_HASH_TEST值 (TO_DATE('01-01-2017 ','dd-MM-yyy'),7,'126');
插入到RANGE_HASH_TEST值 (TO_DATE('01-01-2017 ','dd-MM-yyy'),8,'127');
插入到RANGE_HASH_TEST值 (TO_DATE('01-01-2017 ','dd-MM-yyy'),9,'128');
提交;
创建表范围 _ 哈希 _ 测试_HIST
(
TRN_DT日期,
Seq _ 无编号,
参考 _ 无变量2(26)
)
按范围划分 (TRN_DT)
按哈希划分的子分区 (REF_NO) 子分区8
(分区Acc_Jan_2017值小于 (TO_DATE('01-feb-2017','dd-MON-yyy');
更改表范围 _ 哈希 _ 测试交换分区ACC_JAN_2017与表范围 _ 哈希 _ 测试 _ hist;
第1行的错误:
ORA-14292: 表的分区类型必须匹配复合分区的分区类型
请指导我以下疑点,
1) 是否可以如上面的测试用例所述将Range-Hash分区移动到另一个分区表?(从一个分区表到另一个分区表)
2) 如果没有,还有其他方法可以这样做吗?
3) 如果是,如何实现相同?
谢谢你的好意指导。
钱丹
我想从表A到表B进行分区交换。
以下是一个测试用例,
创建表范围 _ 哈希 _ 测试
(
TRN_DT日期,
Seq _ 无编号,
参考 _ 无变量2(26)
)
按范围划分 (TRN_DT)
按哈希划分的子分区 (REF_NO) 子分区4
(分区Acc_Jan_2017值小于 (TO_DATE('01-feb-2017','dd-MON-yyy');
插入到RANGE_HASH_TEST值 (TO_DATE('01-01-2017 ','dd-MM-yyy'),1,'123');
插入到RANGE_HASH_TEST值 (TO_DATE('01-01-2017 ','dd-MM-yyy'),2,'12');
插入到RANGE_HASH_TEST值 (TO_DATE('01-01-2017 ','dd-MM-yyy'),3,'113');
插入到RANGE_HASH_TEST值 (TO_DATE('01-01-2017 ','dd-MM-yyy'),4,'121');
插入到RANGE_HASH_TEST值 (TO_DATE('01-01-2017 ','dd-MM-yyy'),5,'124');
插入到RANGE_HASH_TEST值 (TO_DATE('01-01-2017 ','dd-MM-yyy'),6,'125');
插入到RANGE_HASH_TEST值 (TO_DATE('01-01-2017 ','dd-MM-yyy'),7,'126');
插入到RANGE_HASH_TEST值 (TO_DATE('01-01-2017 ','dd-MM-yyy'),8,'127');
插入到RANGE_HASH_TEST值 (TO_DATE('01-01-2017 ','dd-MM-yyy'),9,'128');
提交;
创建表范围 _ 哈希 _ 测试_HIST
(
TRN_DT日期,
Seq _ 无编号,
参考 _ 无变量2(26)
)
按范围划分 (TRN_DT)
按哈希划分的子分区 (REF_NO) 子分区8
(分区Acc_Jan_2017值小于 (TO_DATE('01-feb-2017','dd-MON-yyy');
更改表范围 _ 哈希 _ 测试交换分区ACC_JAN_2017与表范围 _ 哈希 _ 测试 _ hist;
第1行的错误:
ORA-14292: 表的分区类型必须匹配复合分区的分区类型
请指导我以下疑点,
1) 是否可以如上面的测试用例所述将Range-Hash分区移动到另一个分区表?(从一个分区表到另一个分区表)
2) 如果没有,还有其他方法可以这样做吗?
3) 如果是,如何实现相同?
谢谢你的好意指导。
钱丹
专家解答
它们不匹配,因为您试图将具有4个子分区的分区交换为具有8个子分区的分区。我们必须移动所有数据才能做到这一点。
但是,如果表具有相同的子分区结构,则可以分两步进行交换
但是,如果表具有相同的子分区结构,则可以分两步进行交换
SQL> create table RANGE_HASH_TEST 2 ( 3 TRN_DT DATE, 4 SEQ_NO NUMBER, 5 REF_NO VARCHAR2(26) 6 ) 7 PARTITION BY RANGE (TRN_DT) 8 SUBPARTITION BY HASH (REF_NO) SUBPARTITIONS 4 9 ( PARTITION Acc_Jan_2017 VALUES LESS THAN (TO_DATE('01-Feb-2017','dd-MON-yyyy'))); Table created. SQL> SQL> INSERT INTO RANGE_HASH_TEST VALUES(TO_DATE('01-01-2017','DD-MM-YYYY'),1,'123'); 1 row created. SQL> INSERT INTO RANGE_HASH_TEST VALUES(TO_DATE('01-01-2017','DD-MM-YYYY'),2,'12'); 1 row created. SQL> INSERT INTO RANGE_HASH_TEST VALUES(TO_DATE('01-01-2017','DD-MM-YYYY'),3,'113'); 1 row created. SQL> INSERT INTO RANGE_HASH_TEST VALUES(TO_DATE('01-01-2017','DD-MM-YYYY'),4,'121'); 1 row created. SQL> INSERT INTO RANGE_HASH_TEST VALUES(TO_DATE('01-01-2017','DD-MM-YYYY'),5,'124'); 1 row created. SQL> INSERT INTO RANGE_HASH_TEST VALUES(TO_DATE('01-01-2017','DD-MM-YYYY'),6,'125'); 1 row created. SQL> INSERT INTO RANGE_HASH_TEST VALUES(TO_DATE('01-01-2017','DD-MM-YYYY'),7,'126'); 1 row created. SQL> INSERT INTO RANGE_HASH_TEST VALUES(TO_DATE('01-01-2017','DD-MM-YYYY'),8,'127'); 1 row created. SQL> INSERT INTO RANGE_HASH_TEST VALUES(TO_DATE('01-01-2017','DD-MM-YYYY'),9,'128'); 1 row created. SQL> COMMIT; Commit complete. SQL> create table range_exch 2 ( 3 TRN_DT DATE, 4 SEQ_NO NUMBER, 5 REF_NO VARCHAR2(26) 6 ) 7 PARTITION BY HASH (REF_NO) PARTITIONS 4; Table created. SQL> SQL> ALTER TABLE RANGE_HASH_TEST EXCHANGE PARTITION ACC_JAN_2017 WITH TABLE range_exch; Table altered. SQL> SQL> create table RANGE_HASH_TEST_HIST 2 ( 3 TRN_DT DATE, 4 SEQ_NO NUMBER, 5 REF_NO VARCHAR2(26) 6 ) 7 PARTITION BY RANGE (TRN_DT) 8 SUBPARTITION BY HASH (REF_NO) SUBPARTITIONS 4 9 ( PARTITION Acc_Jan_2017 VALUES LESS THAN (TO_DATE('01-Feb-2017','dd-MON-yyyy'))); Table created. SQL> ALTER TABLE RANGE_HASH_TEST_HIST EXCHANGE PARTITION ACC_JAN_2017 WITH TABLE range_exch; Table altered. SQL>复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
Oracle DataGuard高可用性解决方案详解
孙莹
528次阅读
2025-03-26 23:27:33
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
499次阅读
2025-04-15 17:24:06
墨天轮个人数说知识点合集
JiekeXu
411次阅读
2025-04-01 15:56:03
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
409次阅读
2025-04-08 09:12:48
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
392次阅读
2025-04-18 14:18:38
Oracle SQL 执行计划分析与优化指南
Digital Observer
391次阅读
2025-04-01 11:08:44
Oracle 19c RAC更换IP实战,运维必看!
szrsu
351次阅读
2025-04-08 23:57:08
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
345次阅读
2025-04-20 10:07:02
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
320次阅读
2025-04-15 14:48:05
oracle定时任务常用攻略
virvle
320次阅读
2025-03-25 16:05:19