方案一. 通过 Export/import 方法
可以任选如下四种方法的一种来对非分区表进行分区(维护时间由大到小):
A) 通过 Export/import 方法
B) 通过 Insert with a subquery 方法
C) 通过 Partition Exchange 方法
D) 通过 DBMS_REDEFINITION 方法
以上四种方法都会从一个已经存在的非分区表创建出一个分区表。尽管官方已经对这四种方法的维护时间预期做了倒序排列,但实际维护时间针对不同情况有所不同。
SQL> select count(*) from WZ_REAL_DATA;
COUNT(*)
----------
45506888
SQL> select sum(bytes)/1024/1024/1024 G from dba_segments where segment_name='WZ_REAL_DATA';
G
----------
1.62988281
SQL> desc WZ_REAL_DATA
Name Null? Type
----------------------------------------- -------- ----------------------------
STIME NOT NULL DATE
PI_AI_POINT NOT NULL VARCHAR2(30)
FVALUE NUMBER(16,4)
SQL> select min(stime) from WZ_REAL_DATA;
MIN(STIME
---------
01-MAR-12
SQL> select max(stime) from WZ_REAL_DATA;
MAX(STIME
---------
18-MAY-15
查看表WZ_REAL_DATA是否为分区表:
SQL> select table_name,tablespace_name from user_tables where table_name='WZ_REAL_DATA';
TABLE_NAME TABLESPACE_NAME
------------------------------ ------------------------------
WZ_REAL_DATA XDWZJS
SQL> select table_name,partition_name,partition_position from user_tab_partitions where table_name='WZ_REAL_DATA';
no rows selected
SQL>
发现4500万数据的大表竟然不是分区表,并且此表大小快超过2G了,oracle建议对大于2G的表进行分区;
下面开始进行分区实验:
方案一. 通过