修改分区

本文为您介绍迁移 Oracle 数据库的数据至 OceanBase 数据库 Oracle 租户时,ALTER TABLE DDL 修改分区的支持转换范围。

总览

modify_table_partition:
{ modify_range_partition
| modify_hash_partition
| modify_list_partition
}

modify_range_partition:
MODIFY partition_extended_name
   { partition_attributes
   | { add_range_subpartition
     | add_hash_subpartition
     | add_list_subpartition
     }
   | coalesce_table_subpartition
   | alter_mapping_table_clause
   | [ REBUILD ] UNUSABLE LOCAL INDEXES
   | read_only_clause
   | indexing_clause
   }

modify_hash_partition:
MODIFY partition_extended_name
  { partition_attributes
  | coalesce_table_subpartition
  | alter_mapping_table_clause
  | [ REBUILD ] UNUSABLE LOCAL INDEXES
  | read_only_clause
  | indexing_clause
  }

modify_list_partition:
MODIFY partition_extended_name
  { partition_attributes
  | { ADD | DROP } VALUES ( list_values )
  | { add_range_subpartition
    | add_list_subpartition
    | add_hash_subpartition 
    }
  | coalesce_table_subpartition
  | [ REBUILD ] UNUSABLE LOCAL INDEXES
  | read_only_clause
  | indexing_clause
  }

partition_attributes:
[ { physical_attributes_clause
  | logging_clause
  | allocate_extent_clause
  | deallocate_unused_clause
  | shrink_clause
  }...
]
[ OVERFLOW
  { physical_attributes_clause
  | logging_clause
  | allocate_extent_clause
  | deallocate_unused_clause
  }...
]
[ table_compression ]
[ inmemory_clause ]
[ { { LOB LOB_item | VARRAY varray } (modify_LOB_parameters) }...]

coalesce_table_subpartition:
COALESCE SUBPARTITION subpartition
  [update_index_clauses]
  [parallel_clause]
  [allow_disallow_clustering]

read_only_clause:
{ READ ONLY } | { READ WRITE }

indexing_clause:
INDEXING { ON | OFF }

支持的范围

  • 支持通过指定分区名的方式在分区中新增 list、range 和 hash 子分区。示例如下:

    ALTER TABLE T MODIFY PARTITION P0 ADD SUBPARTITION SP0;
    ALTER TABLE T MODIFY PARTITION P0 ADD SUBPARTITION VALUES(100);
    ALTER TABLE T MODIFY PARTITION P0 ADD SUBPARTITION VALUES LESS THAN(100);
  • 支持 UPDATE GLOBAL INDEXES 更新表中的索引。

不支持的范围

  • 不支持通过指定分区键值的方式在分区中新增 list、range 和 hash 子分区,提示错误。示例如下:

    ALTER TABLE T MODIFY PARTITION FOR(1000) ADD SUBPARTITION SP1
  • 不支持在 list 分区键值中新增、删除 values,会报错。

  • 不支持 coalesce_table_subpartition 子句最后一个 hash 子分区,将其内容分布至一个或多个剩余子分区,然后删除最后一个子分区,会报错。

忽略的属性

说明

如果同步的 DDL 中包含以下属性的定义,则这些属性不会被解析和转换,最终会被忽略。

  • 不支持 read_only_clause 选择读写模式,会忽略。

  • 不支持 indexing_clause 子句修改表分区的索引属性,会忽略。

  • 不支持 partition_attributes 子句修改分区参数,会忽略。