修改、删除和新增表属性

本文为您介绍迁移 Oracle 数据库的数据至 OceanBase 数据库 Oracle 租户时, ALTER TABLE DDL 修改、删除和新增表属性的支持转换范围。

总览

alter_table_properties:
{ alter_table_properties_1 | { shrink_clause 
  | RENAME TO new_table_name
  | READ ONLY
  | READ WRITE 
  | REKEY encryption_spec 
  | DEFAULT COLLATION collation_name
  | [NO] ROW ARCHIVAL
  | ADD attribute_clustering_clause
  | MODIFY CLUSTERING [ clustering_when ] [ zonemap_clause ]
  | DROP CLUSTERING
  }
}

alter_table_properties_1:
{ { physical_attributes_clause
    | logging_clause
    | table_compression
    | inmemory_table_clause
    | ilm_clause
    | supplemental_table_logging
    | allocate_extent_clause
    | deallocate_unused_clause
    | { CACHE | NOCACHE }
    | RESULT_CACHE ( MODE {DEFAULT | FORCE} )
    | upgrade_table_clause
    | records_per_block_clause
    | parallel_clause
    | row_movement_clause
    | flashback_archive_clause
    }...
  } [ alter_iot_clauses ] [ alter_XMLSchema_clause ]

physical_attributes_clause:
[ { PCTFREE integer
  | PCTUSED integer
  | INITRANS integer
  | storage_clause
  }...
]

logging_clause:
{ LOGGING | NOLOGGING |  FILESYSTEM_LIKE_LOGGING }

table_compression:
COMPRESS
| ROW STORE COMPRESS [ BASIC | ADVANCED ]
| COLUMN STORE COMPRESS [  FOR { QUERY | ARCHIVE } [ LOW | HIGH ] ]
  [ [NO] ROW LEVEL LOCKING ]
| NOCOMPRESS

inmemory_table_clause:
[ { INMEMORY [ inmemory_attributes ] } | { NO INMEMORY } ]
[ inmemory_column_clause ]

ilm_clause:
ILM
{ ADD POLICY ilm_policy_clause
| { DELETE | ENABLE | DISABLE } POLICY ilm_policy_name
| DELETE_ALL | ENABLE_ALL | DISABLE_ALL
}

supplemental_table_logging:
{ ADD SUPPLEMENTAL LOG
  { supplemental_log_grp_clause | supplemental_id_key_clause }
    [, SUPPLEMENTAL LOG
       { supplemental_log_grp_clause | supplemental_id_key_clause }
    ]...
| DROP SUPPLEMENTAL LOG
  { supplemental_id_key_clause | GROUP log_group }
    [, SUPPLEMENTAL LOG
       { supplemental_id_key_clause | GROUP log_group }
    ]...
}

allocate_extent_clause:
ALLOCATE EXTENT
  [ ( { SIZE size_clause
      | DATAFILE 'filename'
      | INSTANCE integer
      } ...
    )
  ]

deallocate_unused_clause:
DEALLOCATE UNUSED [ KEEP size_clause ]

upgrade_table_clause:
UPGRADE [ [NOT ] INCLUDING DATA ]
   [ column_properties ]

records_per_block_clause:
{ MINIMIZE | NOMINIMIZE } RECORDS_PER_BLOCK

parallel_clause:
{ NOPARALLEL | PARALLEL [ integer ] }

row_movement_clause:
{ ENABLE | DISABLE } ROW MOVEMENT

flashback_archive_clause:
FLASHBACK ARCHIVE [flashback_archive] | NO FLASHBACK ARCHIVE

alter_iot_clauses:
{ index_org_table_clause
| alter_overflow_clause
| alter_mapping_table_clauses
| COALESCE
}

alter_XMLSchema_clause:
 { ALLOW ANYSCHEMA
  | ALLOW NONSCHEMA
  | DISALLOW NONSCHEMA
  }

支持的范围

仅支持 RENAME TO new_table_name 子句修改表名。示例如下:

ALTER TABLE SC.T RENAME TO T2;

不支持的范围

  • 不支持 ADD attribute_clustering_clause 子句增加聚簇属性,会报错。

  • 不支持 MODIFY CLUSTERING [ clustering_when ] [ zonemap_clause ] 子句允许或禁止在直接路径插入操作或数据移动操作期间对表进行属性聚类,会报错。

  • 不支持 DROP CLUSTERING 子句删除聚簇属性,会报错。

  • 不支持 physical_attributes_clause 子句修改表物理属性,会报错。

  • 不支持 logging_clause 子句修改日志记录属性,会报错。

  • 不支持 table_compression 子句指示数据库是否压缩数据段以减少磁盘和内存的使用,仅对堆表有效,会报错。

  • 不支持 inmemory_table_clause 可启用、禁用或更改 In-Memory Column Store 的表属性,会报错。

  • 不支持 ilm_clause 子句为表添加、删除、启用或禁用自动数据优化策略,会报错。

  • 不支持 supplemental_table_logging 子句添加或删除重做日志组或重做日志组中的一个或多个补充日志列,会报错。

  • 不支持 allocate_extent_clause 子句显式地为表、分区或子分区、溢出数据段、LOB 数据段或 LOB 索引分配一个新区段,会报错。

  • 不支持 deallocate_unused_clause 子句显式地释放表、分区或子分区、溢出数据段、LOB 数据段或 LOB索引末尾的未使用空间,会报错。

  • 不支持 { CACHE | NOCACHE } 子句指定如何在缓冲区存储块,会报错。

  • 不支持 RESULT_CACHE ( MODE {DEFAULT | FORCE} ) 子句指定查询结果缓存,会报错。

  • 不支持 upgrade_table_clause 子句具有引用关系的表转换目标表的元数据,会报错。

  • 不支持 records_per_block_clause 子句限制可以存储在一个块中的记录数量,会报错。

忽略的属性

说明

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

  • READ ONLY | READ WRITE 子句设置读写模式,会忽略该 option。

  • REKEY encryption_spec 子句生成新的加密密钥或在不同算法之间切换,会忽略该 option。

  • DEFAULT COLLATION collation_name 子句更改表的默认排序规则,会忽略该 option。

  • [NO] ROW ARCHIVAL 启用或禁用表行归档,会忽略该 option。