本文為您介紹遷移 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。