1、selectcount(*)fromdba;COUNT(*)-2713235altersessionsetnls_date_format=yyyy-mm-ddhh24:mi:ss;会话已更改。time_feedbawhererownumcreatetablepdba(id,time)partitionbyrange(time)2(partitionp1valueslessthan(to_date(2010-10-1yyyy-mm-dd),3p22010-11-14p32010-12-15p4(maxvalue)6asid,表已创建。PDBAPDBAP1P2P3P4(p1);count(*)17
2、18285(p2);183667(p3);188701(p4);622582现在分区表已经建好了,但是表名不一样,需要用rename对表重命名一下:renamedba_old;表已重命名。DBADBA2.2 . 交换分区:Partition exchange method这种方法只是对数据字典中分区和表的定义进行了修改,没有数据的修改或复制,效率最高。适用于包含大数据量的表转到分区表中的一个分区的操作。尽量在闲时进行操作。交换分区的操作步骤如下:1. 创建分区表,假设有2个分区,P1,P2.2. 创建表A存放P1规则的数据。3. 创建表B 存放P2规则的数据。4. 用表A 和P1 分区交换。
3、把表A的数据放到到P1分区5. 用表B 和p2 分区交换。 把表B的数据存放到P2分区。创建分区表:p_dba(idnumber,timedate)range(time)(2010-09-1)7);注意:我这里只创建了2个分区,没有创建存放其他数据的分区。创建2个分别对应分区的基表:dba_p1id,time_feedba_oldWHEREtime_feedba_p1;1536020dba_p2;365932讲2个基表与2个分区进行交换:p_dbaexchangewith表已更改。查询2个分区:partition(p1);partition(p2);数据和之前的基表一致。查询原来的2个基表:
4、2个基表的数据变成成0。在这里我们看一个问题,一般情况下,我们在创建分区表的时候,都会有一个其他分区,用来存放不匹配分区规则的数据。 在这个例子中,我只创建了2个分区,没有创建maxvalue分区。 现在我来插入一条不满足规则的数据,看结果:insertintovalues(999999,to_date(2012-12-29,);*第 1 行出现错误:ORA-14400: 插入的分区关键字未映射到任何分区2009-12-29已创建 1 行。*id=999999;IDTIME-999999 29-12月-099999992009-12-2900:00通过这个测试可以清楚,如果插入的数据不满足分区规则,会报ORA-144