ITPub博客

首页 > 数据库 > Oracle > 普通表改造分区表的方法(一):cts

普通表改造分区表的方法(一):cts

原创 Oracle 作者:shiable 时间:2016-06-29 16:42:24 0 删除 编辑
1.cts  -- create table as 
原普通表数据如下

点击(此处)折叠或打开

  1. SQL> select distinct t.tablespace_name,count(*) from xjmon.TEST_2016_05_06 t
  2.   2 group by t.tablespace_name
  3.   3 order by 2 desc
  4.   4 ;
  5. TABLESPACE_NAME COUNT(*)
  6. ------------------------
  7. SYSAUX           1390
  8. USERS            65
  9. SYSTEM           18
  10. TBS_CUS_DMP      13
  11. MSP              12
  12. APMDBS           9
  13. TBS_CRM_IITF     1
  14. 7 rows selected.
改造语法

点击(此处)折叠或打开

  1. create table TEST_2016_05_06_PART
  2. (
  3.   owner ,
  4.   table_name ,
  5.   tablespace_name ,
  6.   cluster_name ,
  7.   iot_name ,
  8.   status ,
  9.   pct_free ,
  10.   pct_used ,
  11.   ini_trans ,
  12.   max_trans ,
  13.   initial_extent ,
  14.   next_extent ,
  15.   min_extents ,
  16.   max_extents ,
  17.   pct_increase ,
  18.   freelists ,
  19.   freelist_groups ,
  20.   logging ,
  21.   backed_up ,
  22.   num_rows ,
  23.   blocks ,
  24.   empty_blocks ,
  25.   avg_space ,
  26.   chain_cnt ,
  27.   avg_row_len ,
  28.   avg_space_freelist_blocks ,
  29.   num_freelist_blocks ,
  30.   degree ,
  31.   instances ,
  32.   cache ,
  33.   table_lock ,
  34.   sample_size ,
  35.   last_analyzed ,
  36.   partitioned ,
  37.   iot_type ,
  38.   temporary ,
  39.   secondary ,
  40.   nested ,
  41.   buffer_pool ,
  42.   flash_cache ,
  43.   cell_flash_cache ,
  44.   row_movement ,
  45.   global_stats ,
  46.   user_stats ,
  47.   duration ,
  48.   skip_corrupt ,
  49.   monitoring ,
  50.   cluster_owner ,
  51.   dependencies ,
  52.   compression ,
  53.   compress_for ,
  54.   dropped ,
  55.   read_only ,
  56.   segment_created ,
  57.   result_cache
  58. ) partition by list(tablespace_name)
  59. (
  60.   partition P_SYSAUX values('SYSAUX') tablespace APMDBS,
  61.   partition P_TBS_CUS_DMP values('TBS_CUS_DMP') tablespace APMDBS,
  62.   partition P_MSP values('MSP') tablespace APMDBS,
  63.   partition P_USERS values('USERS') tablespace APMDBS,
  64.   partition P_SYSTEM values('SYSTEM') tablespace APMDBS,
  65.   partition P_TBS_CRM_IITF values('TBS_CRM_IITF') tablespace APMDBS,
  66.   partition P_APMDBS values('APMDBS') tablespace APMDBS,
  67.   partition P_OTHERS values (default) tablespace APMDBS
  68. ) as select /*+ parallel(2) */ * from xjmon.TEST_2016_05_06
  69. ;
收集统计信息,通过100%采样率的统计信息,看数据是否准确

点击(此处)折叠或打开

  1. BEGIN
  2.    DBMS_STATS.GATHER_TABLE_STATS(OwnName => 'XJMON',
  3.                                  tabname => 'TEST_2016_05_06_PART',
  4.                                  estimate_percent => 100,
  5.                                  method_opt => 'FOR ALL COLUMNS SIZE 1',
  6.                                  degree => 8,
  7.                                  granularity => 'ALL',
  8.                                  cascade=>TRUE
  9.                                  );
  10. END;
  11. /
查看统计信息结果:

SQL> select a.table_owner,a.table_name,a.partition_name,a.partition_position,
  2  a.num_rows,a.last_analyzed
  3  from dba_tab_partitions a ,dba_segments b 
  4  where  a.table_owner = b.owner and 
  5  a.table_name = b.segment_name 
  6  and a.partition_name = b.partition_name 
  7  and a.table_owner = 'XJMON' 
  8  and a.table_name= 'TEST_2016_05_06_PART'
  9  order by  a.num_rows desc  
 10  ;


TABLE_OWNER                    TABLE_NAME                     PARTITION_NAME                 PARTITION_POSITION   NUM_ROWS LAST_ANAL
------------------------------ ------------------------------ ------------------------------ ------------------ ---------- ---------
XJMON                          TEST_2016_05_06_PART           P_SYSAUX                                        1       1390 29-JUN-16
XJMON                          TEST_2016_05_06_PART           P_USERS                                         4         65 29-JUN-16
XJMON                          TEST_2016_05_06_PART           P_SYSTEM                                        5         18 29-JUN-16
XJMON                          TEST_2016_05_06_PART           P_TBS_CUS_DMP                                   2         13 29-JUN-16
XJMON                          TEST_2016_05_06_PART           P_MSP                                           3         12 29-JUN-16
XJMON                          TEST_2016_05_06_PART           P_APMDBS                                        7          9 29-JUN-16
XJMON                          TEST_2016_05_06_PART           P_TBS_CRM_IITF                                  6          1 29-JUN-16
XJMON                          TEST_2016_05_06_PART           P_OTHERS                                        8          0 29-JUN-16

点击(此处)折叠或打开

  1. SQL> select a.table_owner,a.table_name,a.partition_name,a.partition_position,
  2.   2 a.num_rows,a.last_analyzed
  3.   3 from dba_tab_partitions a ,dba_segments b
  4.   4 where a.table_owner = b.owner and
  5.   5 a.table_name = b.segment_name
  6.   6 and a.partition_name = b.partition_name
  7.   7 and a.table_owner = 'XJMON'
  8.   8 and a.table_name= 'TEST_2016_05_06_PART'
  9.   9 order by a.num_rows desc
  10.  10 ;

  11. TABLE_OWNER TABLE_NAME PARTITION_NAME PARTITION_POSITION NUM_ROWS LAST_ANAL
  12. ------------------------------ ------------------------------ -------------------
  13. XJMON TEST_2016_05_06_PART P_SYSAUX        1 1390 29-JUN-16
  14. XJMON TEST_2016_05_06_PART P_USERS         4 65 29-JUN-16
  15. XJMON TEST_2016_05_06_PART P_SYSTEM        5 18 29-JUN-16
  16. XJMON TEST_2016_05_06_PART P_TBS_CUS_DMP   2 13 29-JUN-16
  17. XJMON TEST_2016_05_06_PART P_MSP           3 12 29-JUN-16
  18. XJMON TEST_2016_05_06_PART P_APMDBS        7 9 29-JUN-16
  19. XJMON TEST_2016_05_06_PART P_TBS_CRM_IITF  6 1 29-JUN-16
  20. XJMON TEST_2016_05_06_PART P_OTHERS        8 0 29-JUN-16
经对比前后数据发现,没有数据丢失,分区中存放的数据量与原表DISTINCT时保持一致,并且表数据的总数同样保持一致。

点击(此处)折叠或打开

  1. SQL> select count(*) from XJMON.TEST_2016_05_06;

  2.   COUNT(*)
  3. ----------
  4.       1508

  5. SQL> select count(*) from XJMON.TEST_2016_05_06_PART;

  6.   COUNT(*)
  7. ----------
  8.       1508


创建索引

点击(此处)折叠或打开

  1. create index xjmon.ind_TEST_PART_TABLESPACES_NAME ON XJMON.TEST_2016_05_06_PART(TABLESPACE_NAME) LOCAL;
注意:
1、使用cts方式改造表,原表上的约束、索引等信息需要在新的分区表上创建。原表的普通索引在新分区表上可以设计为分区索引。




来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28551528/viewspace-2121208/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2014-04-16

  • 博文量
    15
  • 访问量
    19035